map タスクのみを持ち、reduce タスクがゼロの mapreduce ジョブを使用して、巨大なテキスト ファイルを辞書順にソートすることは可能ですか?
テキスト ファイルのレコードは改行文字で区切られており、ファイルのサイズは約 1 テラ バイトです。
この巨大なファイルの並べ替えを実現する方法を提案できる人がいれば、それは素晴らしいことです。
MapメソッドでTreeSetを使用して、データ全体を入力分割に保持し、永続化しました。ついにソートされたファイルを手に入れました!
実際、Hadoop にバンドルされているソートの例があります。クラスorg.apache.hadoop.examples.Sortを調べると、サンプル コードがどのように機能するかを確認できます。これ自体はかなりうまく機能しますが、並べ替えをより柔軟にしたい場合は、これをチェックしてください。
Hadoop での並べ替えはパーティショナーを使用して行われます。カスタム パーティショナーを作成して、ビジネス ロジックのニーズに応じて並べ替えることができます。カスタム パーティショナーの作成に関するこのリンクを参照してくださいhttp://jugnu-life.blogspot.com/2012/05/custom-partitioner-in-hadoop.html
単純なバニラの linux ソート コマンドを使用してテラバイト単位のデータをソートすることはお勧めしません。大きなファイル サイズをソートするには、メモリに収まるようにデータを分割する必要があります。Linux での並列ソート
代わりに Hadoop MergeSort を使用する方が適切で便利です: Hadoop MergeSort
ここで、Yahoo Hadoop チーム (現在の Hortonworks) による Hadoop ソートのベンチマークと分析をいくつか見ることができます: Hadoop Sort ベンチマーク