以前のHadoop ブログHadoopInputFormatの詳細な説明を提供しました およびOutputFormat 。次に、Hadoopカウンターについて詳しく説明します。このHadoopチュートリアルでは、MapReduceカウンターとは何か、それらの役割は何かについて説明します。
最後に、HadoopMapReduceのカウンターのタイプについても説明します。 MapReduceタスクカウンター、ファイルシステムカウンター、FileInputFormatカウンターなど、 FileOutputFormatカウンター、MapReduceのジョブカウンター、Hadoopの動的カウンター。
Hadoop MapReduce
Hadoopカウンターを開始する前に、まずHadoopMapReduceとは何かを学びましょう。
MapReduce Hadoopのデータ処理レイヤーです。 HDFSに保存されている大規模な構造化データと非構造化データを処理します。 MapReduceは、大量のデータも並行して処理します。これは、ジョブ(送信されたジョブ)を一連の独立したタスク(サブジョブ)に分割することによって行われます。 Hadoopでは、MapReduceは処理をフェーズに分割することで機能します:マップ および削減 。
- マップフェーズ- これは、データプロセスの最初のフェーズです。このフェーズでは、すべての複雑なロジック/ビジネスルール/コストのかかるコードを指定します。
- フェーズの削減- 処理の第2段階です。このフェーズでは、集計/合計などの軽量処理を指定します。
Hadoopカウンターとは何ですか?
カウンター Hadoopは、MapReduceジョブに関する統計を収集するための便利なチャネルです。品質管理やアプリケーションレベルのように。カウンターは問題の診断にも役立ちます。
カウンターは、MapReduceフレームワークによって定義されたApacheHadoopグローバルカウンターを表します。 MapReduceの各カウンターは、「列挙型」によって名前が付けられます。価値にも長けています。
Hadoopカウンターは次のことを検証します:
- 正しいバイト数の読み取りと書き込みを行います。
- 正しい数のタスクを起動して正常に実行したかどうか。
- カウンターは、消費されたCPUとメモリの量がジョブノードとクラスターノードに適切かどうかも検証します。
MapReduceのカウンターの種類
MapReduceカウンターには次の2種類があります。
- ビルトインカウンター
- ユーザー定義のカウンター/カスタムカウンター
1。 HadoopMapReduceの組み込みカウンター
Apache Hadoop すべてのジョブに対していくつかの組み込みカウンターを維持します。これらのカウンターは、さまざまなメトリックを報告します。バイト数とレコード数のカウンターがあります。これにより、予想される量の入力が消費され、予想される量の出力が生成されることを確認できます。
Hadoopカウンターもグループに分けられます。組み込みカウンターにはいくつかのグループがあります。各グループには、タスクカウンターまたはジョブカウンターも含まれます。
Hadoopの組み込みカウンターのいくつかのグループは次のとおりです。
a)MapReduceタスクカウンター
タスクカウンターは、実行時にタスクに関する特定の情報を収集します。これには、読み書きされたレコードの数が含まれます。
たとえば、MAP_INPUT_RECORDSカウンターはタスクカウンターです。また、各マップタスクによって読み取られた入力レコードもカウントします。
b)ファイルシステムカウンター
このカウンターは、ファイルシステムによって読み書きされたバイト数などの情報を収集します。ファイルシステムカウンターの名前と説明は次のとおりです。
- FileSystemバイトの読み取り –ファイルシステムによって読み取られたバイト数。
- 書き込まれたFileSystemバイト –ファイルシステムに書き込まれたバイト数。
c)FileInputFormatカウンター
これらのカウンターは、FileInputFormatを介してマップタスクによって読み取られたバイト数の情報も収集します。
d)FileOutputFormatカウンター
これらのカウンターは、マップタスク(マップのみのジョブの場合)によって書き込まれたバイト数の情報を収集したり、FileOutputFormatを介してタスクを削減したりします。
e)MapReduceのジョブカウンター
ジョブカウンターは、ジョブレベルの統計を測定します。タスクの実行中に変化する値は測定されません。
たとえば、TOTAL_LAUNCHED_MAPSは、ジョブの過程で起動されたマップタスクの数をカウントします。アプリケーションマスターは、ジョブカウンターも測定します。
したがって、ユーザー定義のカウンターを含む他のすべてのカウンターとは異なり、ネットワークを介して送信する必要はありません。
2。 HadoopMapReduceのユーザー定義カウンターまたはカスタムカウンター
組み込みのカウンターに加えて、Hadoop MapReduceを使用すると、ユーザーコードで一連のカウンターを定義できます。次に、マッパーで必要に応じてインクリメントします またはレデューサー 。 Javaで使用するカウンターを定義する場合と同様に、「列挙型 ’。
ジョブは、任意の数の「列挙型」を定義できます。それぞれに任意の数のフィールドがあります。列挙型の名前はグループ名です。列挙型のフィールドはカウンター名です。
a)Hadoopの動的カウンター
Java列挙型のフィールドはコンパイル時に定義されます。したがって、enumを使用して実行時に新しいカウンターを作成することはできません。そのため、動的カウンターを使用して、実行時に新しいカウンターを作成します。ただし、動的カウンターはコンパイル時に定義されません。
結論
したがって、カウンタは、正しいバイト数の読み取りと書き込みが行われたかどうかをチェックします。 Counterは、MapReduceジョブ内で発生する操作の進行状況または数も測定します。
Hadoopは、MapReduceジョブ内で発生する進行状況を測定するために、組み込みのカウンターとユーザー定義のカウンターも維持します。
このブログがお役に立てば幸いです。HadoopCounterに関連する質問がある場合は、以下のセクションにコメントを残してください。