oracle.hadoop.balancer.choppingStrategy
構成プロパティを設定することで、Perfect Balanceによる値の分割方法を構成できます。
ハッシュ・パーティショニングによる分割: ソートが不要な場合、choppingStrategy=hash
を設定します。これはデフォルトの分割方法です。
ラウンド・ロビンによる分割: トータルオーダーによる分割が必要ない場合は、かわりの分割方法としてchoppingStrategy=roundRobin
を設定します。ハッシュ分割キーのロードがリデューサ間で均衡でない場合は、この分割方法を使用してみてください。
トータルオーダー・パーティショニングによる分割: choppingStrategy=range
を設定して、各サブパーティション内の値をソートし、すべてのサブパーティションに対して値を順序どおりに並べます。パラレル・ソート・ジョブでは、各タスクはタスク内の行をソートします。ジョブは、リデュース・タスク2の値がリデュース・タスク1の値より大きく、リデュース・タスク3の値がリデュース・タスク2の値より大きい(以下同様)ことを確認する必要があります。ジョブは、ソートされたデータを含む1つの大きいファイルではなく、ソート順のデータを含む複数のファイルを生成します。
たとえば、キーが3つのサブパーティションに分割され、サブパーティションがリデューサ5、8および9に送信される場合、リデューサ9のそのキーの値はリデューサ8のそのキーのすべての値より大きく、リデューサ8のそのキーの値はリデューサ5のそのキーのすべての値よりも大きくなります。choppingStrategy=range
の場合、Perfect Balanceはこの順序がリデュース・タスク全体に及ぶことを確認します。
アプリケーションでファイル全体のデータを集計する必要がある場合、oracle.hadoop.balancer.keyLoad.minChopBytes=-1
を設定することで分割を無効にできます。Perfect Balanceでは、ビン・パッキングと呼ばれる小さいリデュース・キーを結合することで引き続きパフォーマンスが向上するようにします。