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);
これを行うにはクリーンな方法はありますか?うまくいけば、各リソースを明示的に設定する必要はありません。
しかし、これは私のコードをhadoopマップとして実行していることを意味します。それの効果は何ですか? – forhas
あなたは答えがありますか?私はjarを実行する必要があります(map reduceジョブではありません)。 –
Hadoop jarを実行しても、mapreduceジョブにはなりません。 Hadoop jarが環境を設定します。あなたのjarファイル内で何をするかはあなた次第です。 –