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

Hadoop MapReduceのInputSplitとは何ですか?

    以前のHadoopチュートリアル 、Hadoopパーティショナーを調査しました 詳細に。次に、HadoopMapReduceのInputSplitについて説明します。

    ここでは、Hadoop InputSplitとは何か、MapReduceでのInputSplitの必要性について説明します。また、これらのInputSplitがHadoopMapReduceでどのように作成されるかについても詳しく説明します。

    HadoopでのInputSplitの概要

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

    MapReduceInputSplitの長さはバイト単位で測定されています。すべてのInputSplitには、保存場所(ホスト名文字列)があります。 MapReduceシステムは、ストレージの場所を使用して、マップタスクをスプリットのデータのできるだけ近くに配置します。

    フレームワークは、分割のサイズ順にマップタスクを処理し、最大のものが最初に処理されるようにします(貪欲な近似アルゴリズム)。これにより、ジョブの実行時間が最小限に抑えられます。

    焦点を当てるべき主なことは、Inputsplitには入力データが含まれていないということです。これは単なるデータへの参照です。

    Hadoop MapReduceでInputSplitsはどのように作成されますか?

    ユーザーとして、 InputFormat のように、HadoopでInputSplitを直接処理することはありません。 (InputFormatはInputsplitの作成とレコードへの分割を担当するため)それを作成します。 FileInputFormatは、ファイルを128MBのチャンクに分割します。

    また、 mapredを設定することにより 。分割サイズ mapred-siteのパラメータ 。xml ユーザーは要件に応じて値を変更できます。また、これにより、特定のMapReduceジョブの送信に使用されるJobオブジェクトのパラメーターをオーバーライドできます。

    カスタムInputFormatを作成することで、ファイルを分割する方法を制御することもできます。

    InputSplitはユーザー定義です。ユーザーは、MapReduceプログラムのデータのサイズに基づいて分割サイズを制御することもできます。したがって、MapReduceジョブの実行では、マップタスクの数はInputSplitsの数と等しくなります。

    「getSplit()」を呼び出す 、クライアントはジョブの分割を計算します。次に、アプリケーションマスターに送信されます。アプリケーションマスターは、ストレージの場所を使用して、クラスター上でそれらを処理するマップタスクをスケジュールします。

    その後、マップタスクは分割を createRecordReader()に渡します 方法。そこからRecordReaderを取得します 分割のため。次に、RecordReaderはレコード(キーと値のペア)を生成します 、これをマップ関数に渡します。

    結論

    結論として、InputSplitは、個々のマッパーが処理するデータを表していると言えます。分割ごとに1つのマップタスクが作成されます。したがって、InputFormatはInputSplitを作成します。

    MapReduceのInputSplitについて質問がある場合は、以下のセクションにコメントを残してください。


    1. Redisでメモリ>'maxmemory'を使用した場合に許可されないエラーOOMコマンドをデバッグするにはどうすればよいですか?

    2. ClusterControl 1.7.1の発表:PostgreSQL11とMongoDB4.0のサポート、拡張モニタリング

    3. N:M関係のMongoDBでカスケード削除に相当する推奨事項は何ですか?

    4. jndi経由のMongoDb