2012-02-08 6 views
3

私は既に実行中のハープ・クラスターとインターフェースするためのJavaプログラムを開発中です。プログラムには、環境変数としてHADOOP_HOMEが渡されます。HADOOP_HOMEに基づいたHDFS構成の自動ロード?

HDFS/MapReduceとの対話を開始する前に、この値に基づいて、必要な構成リソースをすべてロードする必要があります。私が必要と思うファイルはapache documentationに基づいています。私の現在のソリューションは、次のようになります。

final String HADOOP_HOME = System.getEnv("HADOOP_HOME"); 
Configuration conf = new Configuration(); 

conf.addResource(new Path(HADOOP_HOME, "src/core/core-default.xml")); 
conf.addResource(new Path(HADOOP_HOME, "src/hdfs/hdfs-default.xml")); 
conf.addResource(new Path(HADOOP_HOME, "src/mapred/mapred-default.xml")); 
conf.addResource(new Path(HADOOP_HOME, "conf/core-site.xml")); 
conf.addResource(new Path(HADOOP_HOME, "conf/hdfs-site.xml")); 
conf.addResource(new Path(HADOOP_HOME, "conf/mapred-site.xml")); 

FileSystem hdfs = new FileSystem(conf); 

これを行うにはクリーンな方法はありますか?うまくいけば、各リソースを明示的に設定する必要はありません。

答えて

3

hadoop jar <your-jar>を使用してjarファイルを実行します。これにより、すべてが自動的に設定されます。

+0

しかし、これは私のコードをhadoopマップとして実行していることを意味します。それの効果は何ですか? – forhas

+0

あなたは答えがありますか?私はjarを実行する必要があります(map reduceジョブではありません)。 –

+0

Hadoop jarを実行しても、mapreduceジョブにはなりません。 Hadoop jarが環境を設定します。あなたのjarファイル内で何をするかはあなた次第です。 –

関連する問題