主コンテンツへ
Oracle® Big Data Applianceソフトウェア・ユーザーズ・ガイド
リリース4 (4.12)
E98567-02
目次へ移動
目次
索引へ移動
索引

前
次

5.11 Perfect Balance構成プロパティ・リファレンス

このセクションでは、Perfect Balanceの構成プロパティと、Perfect Balanceがジョブ構成から読み取るいくつかの汎用Hadoop MapReduceプロパティについて説明します。

機能カテゴリにまとめられたプロパティのリストは、「Perfect Balanceの構成について」を参照してください。

注意:

CDH5では多数のMapReduceプロパティが非推奨になり、新しいプロパティに置換されています。Perfect Balanceでは古いプロパティ名を引き続き使用しますが、新しい名前を使用することをお薦めします。新しいMapReduceプロパティ名については、次のCloudera Webサイトを参照してください。

http://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-project-dist/hadoop-common/DeprecatedProperties.html

MapReduce構成プロパティ

プロパティ 型、デフォルト値および説明

mapreduce.input.fileinputformat.inputdir

: String

デフォルト値: 定義されていません。

説明: 入力ディレクトリの名前のカンマ区切りリスト。

mapreduce.inputformat.class

: String

デフォルト値: org.apache.hadoop.mapreduce.lib.input.TextInputFormat

説明: InputFormatクラスのフル・ネーム。

mapreduce.map.class

: String

デフォルト値: org.apache.hadoop.mapreduce.Mapper

説明: マッパー・クラスのフル・ネーム。

mapreduce.output.fileoutputformat.outputdir

: String

デフォルト値: 定義されていません。

説明: ジョブの出力ディレクトリ。

mapreduce.partitioner.class

: String

デフォルト値: org.apache.hadoop.mapreduce.lib.partition.HashPartitioner

説明: パーティショナ・クラスのフル・ネーム。

mapreduce.reduce.class

: String

デフォルト値: org.apache.hadoop.mapreduce.Reducer

説明: リデューサ・クラスのフル・ネーム。

Job Analyzerの構成プロパティ

プロパティ 型、デフォルト値および説明

oracle.hadoop.balancer.application_id

: String

デフォルト値: 定義されていません。

説明: Job Analyzerで分析するジョブのジョブ識別子。このプロパティは、YARNクラスタ上のスタンドアロン・モードでのJob Analyzerユーティリティに対するパラメータです。MRv1クラスタには適用されません。「Job Analyzerをスタンドアロン・ユーティリティとして実行する」を参照してください。

oracle.hadoop.balancer.tools.writeKeyBytes

: Boolean

デフォルト値: false

説明: カウンティング・リデューサがJob Analyzer用のリデュース・キーのバイト表現を収集するかどうかを制御します。このプロパティをtrueに設定すると、レポート内で一意のキー値がBase64エンコーディングで表現されます。レポート内には、キーの文字列表現(key.toStringを使用して作成されたもの)も記載されます。この文字列値は各キーに対して一意でない場合があります。

Perfect Balance構成プロパティ

プロパティ 型、デフォルト値および説明

oracle.hadoop.balancer.choppingStrategy

choppingStrategyプロパティは非推奨のプロパティoracle.hadoop.balancer.enableSortingよりも優先されることに注意してください。choppingStrategyプロパティが設定されなくても、oracle.hadoop.balancer.enableSorting=trueはchoppingStrategyプロパティをrangeに設定したのと同じです。同様に、oracle.hadoop.balancer.enableSorting=falseの設定はchoppingStrategyプロパティをhashに設定することと同じです。

: String

デフォルト値: hash

説明: このプロパティは、キーを分割する必要がある場合にサンプラの動作を制御します。次の値が有効です。

  • range: 分割されたキーのレコードが、マップ出力キーのソーティング・コンパレータで指定されたトータルオーダー・パーティショニング関数に基づいて、様々なリデューサに割り当てられます。こうすることで、バランサが分割キーの値に対するトータルオーダーを維持します。

  • hash: 分割キーのレコードがマップ出力値のhashCodeに基づいて様々なリデューサに割り当てられます。ほとんどのケースでは、この方法によりリデューサ間のワーク・ロードの均衡が取れます。

  • roundRobin: 分割キーのレコードがラウンド・ロビン順序で様々なリデューサに割り当てられます。これは、分割キーの値のトータルオーダーを維持する必要がない場合の代替方法です。ハッシュ分割キーのロードがリデューサ間で均衡でない場合は、この分割方法を使用してみてください。

関連項目: oracle.hadoop.balancer.enableSorting (非推奨のプロパティ)

oracle.hadoop.balancer.confidence

: Float

デフォルト値: 0.95

説明: oracle.hadoop.balancer.maxLoadFactorプロパティによって指定された負荷係数に対する統計的信頼指標。

このプロパティは、0.5以上、1.0未満(0.5 <= < 1.0)の値を受け入れます。値が0.5未満の場合、プロパティがデフォルト値に再設定されます。0.9以上の値をお薦めします。典型的な値は、0.95と0.99です。

oracle.hadoop.balancer.enableSorting

: Boolean

デフォルト値: false

説明: このプロパティは非推奨です。マップ出力キーのソーティング・コンパレータをトータルオーダー・パーティショニング関数として使用するには、oracle.hadoop.balancer.choppingStrategyrangeを設定します。

このプロパティがfalseの場合、マップ出力キーはハッシュ関数を使用して分割されます。このプロパティがtrueの場合、マップ出力キーの分割には、マップ出力キーのソーティング・コンパレータがトータルオーダー・パーティショニング関数として使用されます。このプロパティがtrueの場合、バランサは分割されたキーの値に対するトータルオーダーを保存します。

関連項目: oracle.hadoop.balancer.choppingStrategy

oracle.hadoop.balancer.inputFormat.mapred.map.tasks

: Integer

デフォルト値: 100

説明: 入力形式のgetSplitsを呼び出す直前に、Hadoopのmapred.map.tasksプロパティをサンプリングの継続時間用に設定します。実際のジョブのmapred.map.tasksは変更しません。最適なマップ・タスク数は、良好なサンプルの取得(より大きい数)と限定されたメモリー・リソース(より小さい数)との間のトレードオフになります。

このプロパティは1以上の値に設定してください。1未満の値に設定すると、プロパティが無効になります。

一部の入力形式(DBInputFormatなど)では、このプロパティはgetSplitsによって返される分割数を決定するためのヒントとして使用されます。値が高いほど、より大きなデータ・チャンクがランダムにサンプリングされ、サンプルが改善されます。

値を高くすると、より大きいデータ・セットを取得できます(たとえば、行当たり約100バイトで数百行を取得するなど)。ただし、極端に大きな値を設定すると、入力形式のgetSplitsメソッドから返される分割が増えすぎて、メモリーが不足する可能性があります。

oracle.hadoop.balancer.inputFormat.mapred.max.split.size

: Long

デフォルト値: 1048576 (1 MB)

説明: 入力形式のgetSplitsを呼び出す直前に、Hadoopのmapred.max.split.sizeプロパティをサンプリングの継続時間用に設定します。実際のジョブのmapred.max.split.sizeは変更しません。

このプロパティは1以上の値に設定してください。1未満の値に設定すると、プロパティが無効になります。最適な分割サイズは、良好なサンプルの取得(より少ない分割数)と効率的なI/Oパフォーマンス(より多い分割数)との間のトレードオフになります。

一部の入力形式(FileInputFormatなど)では、最大分割サイズはgetSplitsによって返される分割数を決定するためのヒントとして使用されます。分割サイズが小さいほど、より大きなデータ・チャンクがランダムにサンプリングされ、サンプルが改善されます。良好なパフォーマンスでサンプリングできるよう、なるべく小さい値を設定しますが、あまり小さくしすぎないようにしてください。極端に小さな値を設定すると、I/Oパフォーマンスが非効率になり、サンプルが改善されません。

大きなデータ・セット(数十TB)を取得しようとして値を高くすると、入力形式のgetSplitsメソッドからメモリー不足エラーがスローされる場合があります。分割が大きいと、I/Oパフォーマンスは高まりますが、サンプリング品質は低下します。

oracle.hadoop.balancer.keyLoad.minChopBytes

: Long

デフォルト値: 0

説明: Perfect Balanceでマップ出力キーを中間キーに分割するかどうかを制御します。

  • -1: Perfect Balanceは大きなマップ出力キーを分割しません。

  • 0: Perfect Balanceは大きなマップ出力キーを分割し、各中間キーの最適なサイズを決定します。

  • 正の整数: Perfect Balanceは大きなマップ出力キーを指定された整数以上のサイズで中間キーに分割します。

oracle.hadoop.balancer.linearKeyLoad.byteWeight

: Float

デフォルト値: 0.05

説明: oracle.hadoop.balancer.KeyLoadLinearクラスによって指定された線形キー・ロード・モデル内の、キー当たりのバイト数を決定します。

oracle.hadoop.balancer.linearKeyLoad.feedbackDir

: String

デフォルト値: 定義されていません。

説明: 以前に分析したジョブのJob Analyzerレポートを含むディレクトリへのパス。サンプラはフィードバックのためにこのレポートを分析し、現在のバランシング・プランを最適化します。フィードバックを直接適用できるように、このプロパティを、現在のジョブと同一または類似するジョブのJob Analyzerレポート・ディレクトリに設定できます。

フィードバック・ディレクトリにPerfect Balance線形キー・ロード・モデル係数の推奨値を含むJob Analyzerレポートが含まれている場合、Perfect Balanceはその係数を自動的に読み取って使用します。推奨値は、これらの構成パラメータでユーザーが指定した値よりも優先されます。

Job Analyzerはこれらの係数に適切な値の推奨を試行します。ただし、Perfect Balanceは次のような状況では構成プロパティのこのリストからロード・モデル係数を読み込みます。

  • feedbackDirプロパティは設定されません。

  • feedbackDirプロパティは設定されていますが、指定したディレクトリのJob Analyzerレポートにはロード・モデル係数の適切な推奨値が含まれていません。

oracle.hadoop.balancer.linearKeyLoad.keyWeight

: Float

デフォルト値: 50.0

説明: oracle.hadoop.balancer.KeyLoadLinearクラスによって指定された線形キー・ロード・モデル内の、大きなキー当たりの中間キー数を決定します。

oracle.hadoop.balancer.linearKeyLoad.rowWeight

: Float

デフォルト値: 0.05

説明: oracle.hadoop.balancer.KeyLoadLinearクラスによって指定された線形キー・ロード・モデル内のキー当たりの行数を決定します。

oracle.hadoop.balancer.maxLoadFactor

: Float

デフォルト値: 0.05

説明: バランサのパーティション・プランで達成するターゲット・リデューサ負荷係数。

負荷係数とは、見積り値からの相対偏差です。たとえば、maxLoadFactor=0.05かつconfidence=0.95の場合、信頼度が95%より高ければ、ジョブのリデューサ・ロードはパーティション・プランの値よりも(最大で)5%大きくなります。

これら2つのプロパティの値により、サンプラの停止条件が決定されます。バランサは、指定された負荷係数を指定された信頼度で保証するプランを生成できるかぎり、サンプリングを継続します。この保証では、他の停止条件(サンプル数がoracle.hadoop.balancer.maxSamplesPctを超えるなど)によってサンプラが早期に停止するケースは対象外とされる場合があります。停止条件はパーティション・レポートに記録されます。

oracle.hadoop.balancer.confidenceを参照してください。

oracle.hadoop.balancer.maxSamplesPct

: Float

デフォルト値: 0.01 (1%)

説明: Perfect Balanceが収集できるサンプル数を、総入力レコードのごく一部に制限します。ゼロより小さい値を設定すると、プロパティは無効(無制限)になります。

リデューサ・パーティションがきわめて不均一な場合や、マップ出力キーが高密度でクラスタ化されている場合には、Hadoopアプリケーションの値を高くすることが必要になることがあります。これらの場合、サンプラは良好なパーティショニング・プランを達成するためにより多くのデータをサンプリングする必要があります。

oracle.hadoop.balancer.useClusterStatsを参照してください。

oracle.hadoop.balancer.minSplits

: Integer

デフォルト値: 5

説明: サンプラが読み取る最小分割数を設定します。総分割数がこの値よりも少ない場合、サンプラはすべての分割を読み取ります。このプロパティは、1以上の値に設定してください。正の数以外を指定すると、プロパティは1に設定されます。

oracle.hadoop.balancer.numThreads

: Integer

デフォルト値: 5

説明: サンプラ・スレッドの数。この値は、ジョブが開始されるノードで使用可能なプロセッサとメモリー・リソースに基づいて設定します。サンプラ・スレッドの数を増やすほど、より多くのサンプリングが並行処理されます。このプロパティを(1)に設定すると、サンプラでのマルチスレッディングは無効になります。

oracle.hadoop.balancer.report.overwrite

: Boolean

デフォルト値: false

説明: Perfect Balanceがoracle.hadoop.balancer.reportPathプロパティによって指定された場所のファイルを上書きするかどうかを制御します。デフォルトでは、Perfect Balanceはファイルを上書きしません(例外をスローします)。このプロパティをtrueに設定すると、パーティション・レポートの上書きが許可されます。

oracle.hadoop.balancer.reportPath

: String

デフォルト値: directory/orabalancer_report-random_unique_string.json (HDFS用のディレクトリは、ジョブを送信するユーザーのホーム・ディレクトリ)。ローカル・ファイル・システム用のディレクトリは、ジョブが送信されるディレクトリです。

説明: Hadoopジョブ出力ディレクトリが使用可能になる前(つまり、MapReduceジョブが実行を完了する前)に、Perfect Balanceがパーティション・レポートを書き込む場所のパス。ジョブの最後に、Perfect Balanceはファイルをjob_output_dir/_balancer/orabalancer_report.jsonに移動します。APIでは、saveメソッドがこのタスクを実行します。

oracle.hadoop.balancer.runMode

: String

デフォルト値: local

説明: Perfect Balanceサンプラの実行方法を指定します。次の値が有効です。

  • local: サンプラはジョブが発行されたクライアント・ノード上で実行されます。

  • distributed: サンプラはHadoopジョブとして実行されます。ジョブが分散キャッシュを使用する場合、Perfect Balanceはこのプロパティを自動的にdistributedに設定します。

このプロパティを無効な文字列に設定すると、Perfect Balanceによってlocalにリセットされます。

oracle.hadoop.balancer.tmpDir

: String

デフォルト値: /tmp/orabalancer-user_name

説明: ジョブ出力ディレクトリ(HDFSまたはローカル)のファイル・システム内にあるステージング・ディレクトリへのパス。Perfect Balanceは、ディレクトリが存在していなければディレクトリを作成し、パーティション・レポートをそこにコピーして、Hadoop分散キャッシュにロードできるようにします。

oracle.hadoop.balancer.useClusterStats

: Boolean

デフォルト値: true

説明: サンプラがクラスタ・サンプリング統計情報を使用できるようにします。これらの統計情報は、マップ出力キーがすべての入力分割に対して個別に分散されているのではなく、各入力分割に対してクラスタ内で分散されている場合に、サンプリングされた見積り値(マップ出力キー内のレコード数など)の精度を改善します。

このプロパティは、マップ出力キーがクラスタ化されていないことが確実にわかっている場合にのみ、falseに設定してください。この設定は、クラスタリングが一切存在しない場合にのみ、サンプラの見積りを改善します。マップ出力キーの分散は通常確認されないので、このプロパティはtrueのままにしておくことをお薦めします。

oracle.hadoop.balancer.useMapreduceApi

: Boolean

デフォルト値: true

説明: Hadoopジョブで使用されるMapReduce APIを識別します。

  • true: ジョブはmapreduce APIを使用します。

  • false: ジョブはmapred APIを使用します。