マッパまたはレデューサクラスのメソッドrun()
はHadoopフレームワークからどのように呼び出されますか?フレームワークはrun()
メソッドを呼び出していますが、コンテキストオブジェクトは1つ必要です。そのため、Hadoopはそのオブジェクトをどのように渡していますか?その情報にはどのような情報が含まれていますか?Hadoop Mapperコンテキストオブジェクト
答えて
run()メソッドは、Javaランタイムポリモーフィズム(メソッドオーバーライド)を使用して呼び出されます。下のリンクの#569行目を見ると、拡張されたマッパー/レデューサーはJava Reflection APIを使用してインスタンス化されます。 MapTaskクラスは、クライアントプログラムは以下の通りHadoop Source MapTask.java
mapperContext = contextConstructor.newInstance(mapper, job, getTaskID(),
input, output, committer,
reporter, split);
input.initialize(split, mapperContext);
mapper.run(mapperContext);
input.close();`
から取られたコードである
job.setMapperClass()
を使用して、拡張マッパ/減速クラスを設定されていたジョブの設定オブジェクトから拡張マッパー/減速の名前を取得します
行番号621は、実行時の多型の例です。この行で、MapTaskは 'Mapper Context'をパラメータとして構成されたマッパーのrun()メソッドを呼び出します。 run()が拡張されていない場合、org.apache.hadoop.mapreduce.Mapper
のrun()メソッドが呼び出され、構成されたマッパーのmap()メソッドが再び呼び出されます。上記リンクの回線#616で
、MapTaskは@harpunにより述べたように等のジョブ設定のすべての詳細をコンテキスト・オブジェクトを作成し、回線#621
上でrun()メソッドに渡し上記の説明は、適切なReduceTaskクラスをメインエントリクラスとして、タスクを削減する場合にも有効です。
はい、マッピングタスクの実行時にマッパーのrun()
メソッドがMRフレームワークによって呼び出されます。コンテキストに関する限り、Mapper.Contextのドキュメントを見てください。特に、実装されたインタフェースとそのjavadocは、コンテキストに含まれる情報の完全な概要を示します。文脈を通して、あなたのようなデータにアクセスすることができます。現在実行タスクの試み
- ジョブ情報(ジョブ構成、マッパー/減速クラス名、ジョブ名、作業ディレクトリ)
- 状態を、値、入力分割(マップタスク固有情報)
もちろん、Reducerのコンテキストオブジェクトは同じです:Reducer.Context。
- 1. Mapper reducer in Hadoop
- 2. Hadoop MapReduceのMapper/Reducerのセットアップとクリーンアップメソッド
- 3. Hadoop Mapperクラスの入力パスを取得
- 4. Hadoop - Mapperから直接HBaseに書き込む
- 5. タイプMapperは一般的ではありません、hadoop eclipseプラグイン
- 6. HadoopのMapperを拡張するクラスを拡張する
- 7. Hadoop Mapperが自分のクラスを実行していない
- 8. HadoopのMapReduce - MapperからReducerにデータを送信する
- 9. JMX JVMオプションをHadoop MapperとReducerに渡す方法
- 10. HadoopのMapperとReducerでサブクラスを提供する方法は?
- 11. コンテキストオブジェクトの同期
- 12. 子コンテキストオブジェクトの作成について親コンテキストオブジェクトに通知する
- 13. 複数のスレッドで共有されるHadoopのMapperオブジェクトですか?
- 14. Hadoop DistributedCache
- 15. Swift Alamofire Mapper
- 16. MyBatis @Mapper宣言
- 17. MapperのMapstructステレオタイプ
- 18. MyBatis mapper with DTO
- 19. Data Mapperモデル
- 20. Spring Jackson Mapper
- 21. Mapper vs Constructor
- 22. MapStruct - 注釈@Mapper豆
- 23. DynamoDB Mapper "batchLoad()"入力
- 24. java.lang.NoClassDefFoundError:io/restassured/mapper/factory/GsonObjectMapperFactory
- 25. JSONからJSON Mapper
- 26. Jackson MapperとJavaマッピング
- 27. カスタムDstinct MapperのNullPointerException
- 28. ORM Mapper .NET linux server
- 29. Django 1.10 - コンテキストオブジェクト情報の維持
- 30. MRUnit空のコンフィグレーションを返すコンテキストオブジェクト
ありがとうございましたniranjanは、すべての単純なジョブを実行している間にすべてのhadoopフレームワーククラスが実行されることを説明できますか? –
これは簡単な答えではありません。実際には、拡張されたクラスが呼び出される前に実行されるソフトウェアレイヤ全体であるhadoopフレームワーククラスがたくさんあります。私は、あなたのIDEにhadoopソースをダウンロードして接続し、コールスタックで使用されている高水準クラスを理解するためのジョブをデバッグすることを提案します。 –
@NiranjanSarvi、MapTaskクラスがコンテキストクラスである他のクラスのオブジェクトを作成する方法を教えてください。 Contextクラスは抽象クラスであり、Maptaskクラスでも実装されていないため、MapTaskクラスとContextクラスの間に関係はありますか?それは他の方法から来ていますか? – Kate