0

私の質問は例を挙げて説明するのが一番だと思います。HDFSに画像を保存しているとしましょう。その画像は十分に大きいので、HDFSで4つの別々の小さなファイルに分割されます。その画像を返す操作を実行すると、Hadoopは元の画像に結合できる4つの小さなファイルを返しますか?または、Hadoopは4つの小さなファイルを自動的に元のファイルに再結合しますか?

ありがとうございました!

4

2 に答える 2

1

この例が、Hadoopが通常どのように使用されるかはよくわかりません。

ただし、結果が大きなファイルの場合は、小さなサブファイルとしてHDFSに保存されます。HDFSファイルシステム操作を介して取得すると、単一の論理ファイルとして返されます。

于 2012-07-09T19:26:32.173 に答える
1

Hadoop分散ファイルシステム(HDFS)は、各ファイルを1つ以上のブロックに保存します(各ブロックは1回以上複製されます)。

すべてのファイルについて、ファイルのブロックサイズとレプリケーション係数を構成できます(指定されていない場合はデフォルト値が使用されます)。

ファイルベースの操作を行う場合、データのストリームを処理します。名前ノードは、ファイルパスをブロックとその場所(データノード)にマッピングする中央リポジトリです。

例を使用して、32MBのファイルブロックサイズと50MBのファイルがあるとします。これは2つのブロック(32MBと18MB)に分割されます。ファイルの構成済みレプリケーション係数が3の場合、NameNodeは、各ブロックがクラスター内の3つのデータノードにレプリケートされることを確認します。

このファイルから読み取ろうとすると、FSInputStreamが返されます。これは、ほとんどの入力ストリームと同様に、ファイル内の特定のバイト位置をシークできます。DFSClientは詳細からあなたを抽象化しますが、特定のバイトオフセットを認識しており、これが関連するブロックを認識し、バイトをシームレスに取得します(ブロック境界間を移動する場合でも)。

したがって、質問を要約して対処すると、HDFSから読み取るクライアントにとっては、1つの連続した入力ストリームのように見えますが、実際には、必要に応じて4つのブロックがつなぎ合わされています。

于 2012-07-10T01:40:36.937 に答える