複数のマップ タスクを実行するテキスト ファイルで正しく動作する mr を開発しましたが、アーカイブでジョブを実行する必要があります。私の選択は bzip2 アーカイブです。このようなアーカイブを使用すると、私の仕事は 1 つのマップ タスクだけで機能します。
マップタスクを増やす方法を知っている人はいますか?
Hadoop バージョン: Hadoop 0.20.2-cdh3u5
異なるパラメータで mapred-site.xml を編集しようとしましたが、うまくいきませんでした。
このスレッドによると、MapReduceジョブでBzip2ファイルを分割可能( HADOOP-4012 )にするには、MAPREDUCE-830も必要です。MAPREDUCE-830はCDH3u5では利用できません。
ファイルの大きさは?そして、あなたのブロックサイズは何ですか?Bzip2 は分割可能であるため、ファイル サイズがブロック サイズを超え、Bzip2 コーデックが正しく構成されている場合、ファイルは自動的に分割され、マップ タスクが自動的に増加します。
のプロパティはmapred-site.xml
、ジョブの (中間) 出力を指定するためにあります。圧縮ファイルを入力として使用する場合は、これをcore-site.xml
usingで設定する必要がありますio.compression.codecs
。
また、もし私があなただったら、LZOを見ます。デフォルトでは、LZO アーカイブは分割可能ではありませんが、インデックスを作成して分割可能にする方法があります。LZO は Bzip2 に比べて圧縮率は低くなりますが、はるかに高速です。Bzip2 を使用して 32 GB のテキスト ファイルを圧縮しました。Bzip2 はファイルを 1.6GB に圧縮しましたが、6.5 時間かかりました。LZO を使用して同じことを行ったところ、5 GB のファイルが返されましたが、30 分で完了しました。減圧の差はさらに大きい。また、Bzip2 はより多くのメモリを使用します。
LZO ファイルをインデックス化する方法については、こちらをご覧ください: https://github.com/twitter/hadoop-lzo