sql >> データベース >  >> NoSQL >> HBase

InputSplitとHadoopのブロックの違い

    このMapReduceチュートリアルでは、MapReduceInputSplitとHadoopのブロックの比較について説明します。 。まず、HadoopInputSplitの横にあるHDFSデータブロックを確認します。

    次に、InputSplitとBlocksの機能に関する違いを確認します。最後に、HDFSでのHadoopInputSplitとDataブロックの例についても説明します。

    HadoopのInputSplitとブロックの概要

    まず、HDFSデータブロックとは何か、HadoopInputSplitとは何かについて1つずつ説明しましょう。

    1。 HDFSのブロックとは何ですか?

    Hadoop HDFS 大きなファイルをブロックと呼ばれる小さなチャンクに分割します。読み取りまたは書き込みが可能な最小量のデータが含まれています。 HDFSは各ファイルをブロックとして保存します。

    Hadoopアプリケーションは、データブロックを複数のノードに分散します。 HDFSクライアントは、ブロックの場所などのブロックを制御できません。Namenodeがそのようなすべてを決定します。

    2。 HadoopのInputSplitとは何ですか?

    個々のマッパーのデータを表します プロセス。したがって、マップタスクの数はInputSplitsの数と同じです。フレームワークは分割をレコードに分割し、マッパーが処理します。

    最初に入力ファイルは、MapReduceジョブのデータを保存します。通常、ファイルの入力はHDFS InputFormatにあります。 入力ファイルを分割して読み取る方法について説明します。 InputFormatは、InputSplitの作成を担当します。

    HadoopでのInputSplitとブロックの比較

    次に、HadoopFrameworkのInputSplitとBlocksの機能に関する違いについて説明します。

    1。データ表現

    • ブロック– HDFSブロックは、Hadoopのデータを物理的に表現したものです。
    • InputSplit – MapReduce InputSplitは、Hadoopのブロックに存在するデータの論理表現です。これは基本的に、MapReduceプログラムまたはその他の処理技術でのデータ処理中に使用されます。注目すべき主な点は、InputSplitには実際のデータが含まれていないことです。これは単なるデータへの参照です。

    2。サイズ

    • ブロック– デフォルトでは、HDFSブロックサイズは 128MB です 要件に応じて変更できます。すべてのHDFSブロックは、同じサイズ以下の最後のブロックを除いて同じサイズです。 Hadoopフレームワークはファイルを128MBのブロックに分割し、Hadoopファイルシステムに保存します。
    • InputSplit – デフォルトのInputSplitサイズは、ブロックサイズとほぼ同じです。これはユーザー定義です。 MapReduceプログラムでは、ユーザーはデータのサイズに基づいて分割サイズを制御できます。

    3。 HadoopでのBlockとInputSplitの例

    ファイルをHDFSに保存する必要があるとします。 Hadoop HDFSは、ファイルをブロックとして保存します。ブロックは、ディスクに保存またはディスクから取得できるデータの最小単位です。

    ブロックのデフォルトサイズは128MBです。 Hadoop HDFSは、ファイルをブロックに分割します。次に、これらのブロックをクラスター内のさまざまなノードに格納します。

    たとえば、132MBのファイルがあります。したがって、HDFSはこのファイルを2つのブロックに分割します。

    これで、ブロックに対してMapReduce操作を実行する場合、処理されません。その理由は、2ブロックが不完全であるためです。したがって、InpuSplitはこの問題を解決します。

    MapReduce InputSplitは、ブロックの論理グループを単一のブロックとして形成します。 InputSplitには、次のブロックの場所と、ブロックを完了するために必要なデータのバイトオフセットが含まれているためです。

    結論

    したがって、InputSplitはデータの論理的なチャンクにすぎません。つまり、ブロックのアドレスまたは場所に関する情報のみが含まれます。一方、ブロックはデータの物理的表現です。

    このブログを読んだ後、InputSplitとHDFSDataブロックについてより明確に理解できたと確信しています。 InputSplitとBlocksの間に他の違いを見つけた場合は、コメントセクションでお知らせください。


    1. Aggregation Frameworks mongoで投影順にフィールドを取得することは可能ですか?

    2. RedisとMemcacheまたは単にRedis?

    3. RedisがサポートするASP.NETSessionStateプロバイダー

    4. クラスタモードで特定のキーを特定のredisインスタンスに配置する方法はありますか?