2016-07-26 15 views
0

HDFSのデフォルトのブロックサイズは64MBです。例200MBのデータでは と表示されています。 HDFSのブロックサイズによると、64MB、64MB、64MB、8MBの4ブロックに分割されます。 私の質問は、64MBのブロックサイズでそれぞれを保存するために、データが50MBの同じ4ブロックに分割されない理由です。HDFSブロックサイズ混同

+0

このリンクを参照することができますhttp://stackoverflow.com/questions/19473772/data-block-size-in-hdfs-why-64mb –

答えて

0

why the data not divided into same 4 block of 50MB in order to save them each one of them in 64MB of block size. - デフォルトでhadoop設定で64MBを保存するように設定されているためです。 hdfs-site.xmldfs.block.sizeプロパティを変更/追加することで50 MB単位に変更できますが、HDFSはBIGデータ処理用のストレージです。デフォルトのブロックサイズがあるため

  • の(64メガバイト/ 128メガバイト)高く設定されている名前ノードの増加のメタデータをより小さなファイル、名前ノードでこれらのファイル/ブロックのメタデータの格納について考えてみてください。

      1GBのファイルの保存
    • 例えば、 - 名前ノードは、64メガバイトの16個のブロック対50メガバイト
  • ネットワークのオーバーヘッドの21個のブロックのためのメタデータを格納する必要があるファイルを処理する際、およびHadoopのが大きくて良好に実行ファイル:

    • 例えば、(この計算に使用される転送レートを1 MB/sであり、10%のオーバーヘッド)
      • 3のブロック64メガバイト、および8のMBの1つのブロックがかかり - 218秒50のMBのネットワークを介して
      • 4つのブロックを転送するのに要する - 220秒

    この200メガバイトの例では、ビッグデータの世界では非常に小さいですデータのTBが並行して処理されます。

にも注意してください: 最後のブロックは、(あなたの例では)8メガバイトの格納されている場合。このブロックは8MBの記憶域しか占有せず、ブロックサイズとして64MBを完全には使用しません。

+0

お返事ありがとうございます –

0

Hadoopは大量のデータを処理します。小さなファイルが好きではありません。小さなブロックを持つと、マッパーの起動が多くなり、リソースが無駄になります。また、NameNodeは、クラスタ内の各ブロックのアドレスへの参照を保持する必要があるため、大きなプレッシャーを受けます。ネットワーク経由でデータにアクセスする時間が増え、パフォーマンスが大幅に低下します。

64Mbは、最適な最小推奨ブロックサイズとしてApacheチームによって導入されました。これにより、namenodeに妥当な圧力を与え、同時にMapReduceジョブ内で並列にデータを処理できるようになります。

Clouderaのような一部のHadoopディストリビューションでは、デフォルトで128Mbブロックが使用されます。

+0

ありがとうございました,,,,私は概念 –