2013-01-03 4 views
9

のHadoopのMapReduceプログラムのほとんどは、このようなものです:何であるHadoopのプログラムで構成されたクラスの利用

public class MyApp extends Configured Implements Tool { 
    @Override 
    public int run(String[] args) throws Exception { 
     Job job = new Job(getConf()); 
     /* process command line options */ 
     return job.waitForCompletion(true) ? 0 : 1; 
    } 
    public static void main(String[] args) throws Exception { 
     int exitCode = ToolRunner.run(new MyApp(), args); 
     System.exit(exitCode); 
    } 
} 

Configuredの使用は何ですか? ToolおよびConfiguredとしては、共にgetConf()setConf()があります。アプリケーションには何が提供されますか?

Configured

答えて

9

Configuredは、Configurableの実装クラスです。 Configuredは、実装がgetConf()setConf()の基本クラスです。

この基本クラスを拡張するだけで、これを拡張するクラスはConfigurationを使用して構成でき、Configurationには複数の実装が存在します。あなたのコードは次の行を実行するとき

は、

ToolRunner.run(new MyApp(), args); 

内部的には、上記の場合toolには、この

ToolRunner.run(tool.getConf(), tool, args); 

を行います同じようToolの実装であるMyAppクラスのインスタンスでありますあなたはgetConf()を持っていると言っていますが、それはちょうどインターフェイスとしてです。実装はConfigured基本クラスから来ています。上記のコードでConfiguredクラスを拡張しないようにする場合は、getConf()setConf()の実装を自分で行う必要があります。

3

Configurableインタフェースのデフォルトの実装である - 基本的にsetConf方法は

Toolが加えを提供する、Configurableインタフェースの拡張である基準通過ConfigurationオブジェクトとgetConf()戻るプライベートインスタンス変数を保持run(..)メソッドであり、ToolRunnerと一緒に使用して、コマンドラインオプションを(GenericOptionsParserを使用して)解析し、Configurationオブジェクトを構築してからsetConf(..)メソッドに渡します。

主なクラスはConfiguredを拡張し、Toolで必要とされるConfigurableインターフェイスメソッドが実装されるようにします。

一般に、コマンドライン引数を解析してConfigurationオブジェクトを構築する一般的なタスクを処理するため、ToolRunnerユーティリティクラスを使用してMapReduceジョブを起動する必要があります。私は詳細についてはToolRunnerのAPI Docsを見ています。

関連する問題