2016-11-14 6 views
3

HDFSに約10TBの大きなファイルを保存する必要があります。私が理解する必要があるのは、HDFSがこのファイルをどのように保存するかです。クラスタのレプリケーションファクタは3で、各ノードに10TB以上のディスク容量を持つ10ノードクラスタがあります。つまり、合計クラスタ容量は100TBを超えています。大きなファイルをhadoop HDFSに保存していますか?

ここで、HDFSは3つのノードをランダムに選択し、これらの3つのノードにファイルを格納します。だから、これはそれが聞こえるほど簡単です。確認してください

また、HDFSはファイルを分割します(それぞれ1TBの分割数で10まで)し、ランダムに選択された3つのノードに分割のそれぞれを格納します。したがって、可能な分割が可能であり、そうであればそれが有効にされる構成側面です。 HDFSがバイナリファイルまたはテキストファイルを分割する必要がある場合、どのように分割されますか?単純にバイト単位。

+1

使用するフォーマットが分割可能でない限り、これは悪い考えです。 HDFSの観点からは重要ではありませんが、MapReduceの場合、分割可能でない場合、1つのマッパーだけがそのファイルを処理できます。 –

答えて

8

はい、ファイルを分割します(デフォルトで128mbブロック)。すべてのブロックは3つのランダムなノードに格納されます。結果として、30TBのデータが10ノードに均等に分散されます。

+1

分割がどのように行われたかについて、バイトバイバイトまたはその他のメカニズムの詳細を追加できますか。なぜ私はこれを知る必要があるのですか?マップ還元プログラムを書くと、どのようなデータがどのノードにあるかについてhadoopはどのように知っていますか? – samshers

+2

名前ノードは、ファイルが分割されたすべての異なるブロックに関するメタデータを管理します。各ブロックは(データノード上の)ブロックとレプリカの作成場所です。ブロックサイズとレプリケーションファクタを設定できます。ファイルの分割は、ファイルをHDFSに書き込むために使用するクライアントによって行われます。 1行がブロックサイズより大きい場合、その行は分割されて2つのブロックに配置されます。このリンクは非常に詳細に説明されています - http://stackoverflow.com/questions/14291170/how-does-hadoop-process-records-split-across-block-boundaries –

関連する問題