最終更新:ID:ZSR3+DY93g 2010年10月03日(日) 15:31:35履歴
Hadoop本 4章 HadoopのI/Oの疑問点や気になる点について記述してください。
※記入者、該当ページ・該当行は忘れずに書いて下さい。
※記入者、該当ページ・該当行は忘れずに書いて下さい。
- [記入者] terurou
- [該当箇所] 89〜90ページ(4.2.2 圧縮と入力スプリット)
- 圧縮ファイルがHDFSのブロックサイズ大きな場合、スプリット可能な圧縮フォーマットでないと、mapが複数のノードに分散されない(ローカリティが犠牲になる)。
- スプリット可能なフォーマットはbzip2とZIP。ただしZIPはファイルの境界のみ可能。
- [記入者] terurou
- [該当箇所] 92〜93ページ(4.2.3.1 mapの出力の圧縮)
- mapの出力も圧縮可能。
- mapの出力はネットワーク経由でreducerへ転送されるため、LZOのような高速な圧縮フォーマットであれば、性能が向上する可能性がある。
- [記入者] terurou
- [該当箇所] 93〜112ページ(4.3 シリアライゼーション)
- 標準ではWratableというHadoop独自のバイナリプロトコルが使われている。
- WritableではJava以外の言語との相互運用に難がある(他言語の実装が揃っていない)ため、今後はAvroに移行していく予定らしい。(本書ではThriftについても触れられているが、3章のメモで記述したように、現状Thriftは積極的にメンテされていない)
- [記入者] terurou
- [該当箇所] 112〜125ページ(4.4 ファイルベースのデータ構造)
- SequenceFile
- 複数のバイナリレコード(バイナリのキーと値のペア)を1つのファイルとしてまとめたもの。
- バイナリログファイルの格納が利用例。キーがタイムスタンプ、値がログ。
- 書き込み時はWritable以外のシリアライゼーションフレームワークを利用可。
- MapFile
- キーでのルックアップができるようにインデックスを持ち、ソートされているSequenceFile。
- SequenceFileと異なり、Writableでしか書き込めない。
- [記入者] terurou
- [該当箇所] 116〜118ページ(4.4.1.2 SequenceFileの読み込み)
- 同期点は数レコードごとにレコード境界に埋め込まれる。
- SequenceFileはバイナリデータファイルなので、シーク位置が1バイトでもずれるとデータが読み込めなくなってしまう。本書では「リーダーが迷う」という言葉で表現している。
- 「リーダーが迷って」しまった場合、同期点を元にシーク位置をレコード境界に再度位置あわせする。
- SequenceFileの書き込みの際、同期点を挿入する位置を制御できる。
- SequenceFileをMapReduceの入力とする際、同期点によってファイル分割され、mapを分散できる。
コメントをかく