Hadoop関連メモ 3

業務メモ。
適当にスルーしてください。

圧縮

・可能な限りスプリット可能な圧縮形式で圧縮
・空間,時間効率のバランスを考えるとLZO推奨
・サイズの大きなgzipファイルを入力にしてはいけない
・gzipファイルを利用する場合には、1ブロックサイズにマッチしていると効果的
・出力データも圧縮

ブロックサイズ最適化

Hadoop は大きなファイルをシーケンシャルに読み書きするのに適した設計がされているので、
小さいファイルを大量に扱うのは苦手。
空間効率が悪い上に NameSpace を大量に消費して NameNode に負荷をかける。
さらに MapReduce では、デフォルトで1つのファイル毎に最低1つの MapTask が立ち上がってしまい非効率。

・保存領域を節約するためHadoopアーカイブを利用
・CombineFileInputFormat を利用
(小さなファイルをまとめて一つの InputSplit にすることで MapTask 数を削減できる)
・mapred.min.split.size をブロックサイズ以上に設定
(ブロックサイズ以上にスプリットされるので MapTask 数を削減できる)

Map出力データ

・Map出力データは圧縮すること
Map出力ファイルはローカルに書き出されるので、データ量の削減はディスクI/Oの削減に効果的。
また、シャッフル処理されるときネットワークを通過する場合が多いので、データ転送量の削減にも効果的。
ディスクI/Oと比べてCPUに余裕があれば圧縮処理はボトルネックになりにくい。

ジョブ

・小さなデータでもクラスタ外のデータを都度参照してはいけない
処理に必要な小さなデータについては、DistributedCache を利用する。
・Mapタスク数がデータ量に見合っているか注意すること
・Reduceタスク数が多すぎないか注意すること
TaskTracker毎にReduceタスク数ぶんだけMap出力パーティションが作成されるので、
シャッフルフェイズがボトルネックとなる可能性がある。

———-
会社のマシンがメモリ増設されて快適になった。うれしい。
年末年始、人は減るけど仕事は減らない。帰省できるかなぁ。。

・関連記事
Hadoop関連メモ 2
Hadoop関連メモ

あわせて読む:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です