YDN Hadoop and Distributed Computing at Yahoo!
Hadoop and Distributed Computing at Yahoo!
August 27, 2009
From <http://developer.yahoo.net/blogs/hadoop/>
今日から何回かに分けて、Hadoop I/O Pipeline に関する対訳を掲載していきます。この領域に関するドキュメントは初めてのものらしく、読んでいても解らないことばかりです。 訳について、問題などありましたら、また、こう読むべきみたいなアドバイスがありましたら、ぜひコメントをつけてください。 Windows Azure + Dryad につながる知識が共有できればと思います。 --- A.C.
Introduction
In a typical Hadoop MapReduce job, input files are read from HDFS. Data are usually compressed to reduce the file sizes. After decompression, serialized bytes are transformed into Java objects before being passed to a user-defined map() function. Conversely, output records are serialized, compressed, and eventually pushed back to HDFS. This seemingly simple, two-way process is in fact much more complicated due to a few reasons:
Hadoop MapReduce における一般的なジョブでは、入力ファイルは HDFS からが読み込まれる。 そのファイル・サイズを低減するために、通常ではデータの圧縮と解凍が行われた後に、シリアライズさたバイト列が Java オブジェクトに変換され、ユーザー定義された map () 関数に引き渡される。 その反対に、出力レコードにもシリアライズと圧縮が行われ、最終的に HDFS の中にプッシュバックされる。この双方向のプロセスはシンプルに見えるが、いくつかの理由により、実際には複雑なものとなる:
- Compression and decompression are typically done through native library code.
- End-to-end CRC32 checksum is always verified or calculated during reading or writing.
- Buffer management is complicated due to various interface restrictions.
- 一般的には、ネイティブのライブラリ・コードを介して実行される圧縮と解凍
- 一般的には、Read/Write の際に常に検証/計算される End-to-End CRC32 チェックサム
- 多様な制約事項により、複雑化していくバッファ管理
In this blog post, I attempt to decompose and analyze the Hadoop I/O pipeline in detail, and explore possible optimizations. To keep the discussion concrete, I am going to use the ubiquitous example of reading and writing line records from/to gzip-compressed text files. I will not get into details on the DataNode side of the pipeline, and instead mainly focus on the client-side (the map/reduce task processes). Finally, all descriptions are based on Hadoop 0.21 trunk at the time of this writing, which means you may see things differently if you are using older or newer versions of Hadoop.
このブログ・ポストで試みるのは、Hadoop I/O パイプラインに関する詳細な分解と分析であり、また、実現可能な最適化の追求である。 その説明を具体的にしていくために、gzip 圧縮されたテキスト・ファイルを対象として、ライン・レコードを Read/Write するサンプルを、随所で利用していく。 また、パイプラインの DataNode 側の詳細には入らない代わりに、主としてクライアント側(map/reduce タスク・プロセス)に焦点を合わせる。この執筆は Hadoop 0.21 の主要部分に基づいているため、あなたの利用しているバージョンとの間で、若干の違いが生じるかもしれない。
The Anatomy of Hadoop I/O Pipeline _1
The Anatomy of Hadoop I/O Pipeline _2
The Anatomy of Hadoop I/O Pipeline _3
The Anatomy of Hadoop I/O Pipeline _4
The Anatomy of Hadoop I/O Pipeline _5








