2012-04-20 8 views
0

私の理解では、Hadoopは大きなファイルをとり、それを "データブロック"のまとまりとして保存します。これらのデータブロックはTファイルに保存されていますか?データブロックとTファイルの関係は1-1ですか?hadoopのtファイルとdatablockの関係は?

答えて

2

HDFSは、大きなファイルを一連のデータブロック(通常は64/128/256/512 MBなどの固定サイズ)で格納します。 1GBのファイルと256MBのブロックサイズを持っているとします - HDFSはこのファイルを4ブロックと表します。名前ノードは、これらのブロックのコピー(またはレプリカ)を持つデータノードを追跡します。

T-Filesは、キーと値のペアを含むファイル形式です。 Hadoopは、HDFSに1つ以上のデータブロックを使用してTファイルを保存します(Tファイルのサイズと定義されたブロックサイズ - システムのデフォルトまたはファイル固有のいずれかに応じて)。

要約すると、HDFSに任意のファイル形式を保存できます。固定サイズのブロックにチャンクされ、クラスタ全体に分散され複製されます。

+0

データブロックの用途は何ですか? 1GBのファイルに可変サイズのレコードがあるとします。各レコードはバイト配列です。ブロックサイズを64MBにすると、hadoopはファイルサイズに基づいて盲目的にチャンクし、レコードの半分が1つのデータブロックで、残りの半分が別のデータブロックで終了する可能性があります。 – Jimm

+0

MapReduceジョブの初期プロセス(私は 'InputSplit'クラスを信じています)の一部は、レコードを半分に分割する問題を統合することです。通常は、区切り文字が見つかるまで前のブロックで後ろに移動し、少量のデータを元に戻してレコードを完成させます。ブロックはユーザーにとって非常に透過的であり、ごくまれにそれについて心配する必要はありません。 –

+0

データブロックの目的は、ワークを分割することです。 1GBのファイルは16ブロックに分割されるため、16のマップタスクを並列に処理できます。これらのブロックはクラスタ上に散在しているので、ファイル全体を効果的に一度にロードして並列処理することができます。結局のところ、これは手動で64MBのチャンクにファイルを分割することと変わりありません...便宜のためだけにあります。 –

関連する問題