2017-11-10 5 views
0

Javaアプリケーションでは、実行時にhadoop xmlsのフォルダを定義する必要があります(簡単にするために、プログラムのコマンドライン引数を使用してください)。hadoop * -site.xmlのディレクトリをプログラムで設定する方法

import org.apache.hadoop.conf.Configuration() 

.... 

Configuration = new Configuration 
config.addResource(new Path(String.format("%s/core-site.xml", hadoopLocation))); 
config.addResource(new Path(String.format("%s/hdfs-site.xml", hadoopLocation))); 
config.addResource(new Path(String.format("%s/tez-site.xml", hadoopLocation))); 
config.addResource(new Path(String.format("%s/yarn-site.xml", hadoopLocation))); 
config.addResource(new Path(String.format("%s/mapred-site.xml", hadoopLocation))); 
config.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()); 
config.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName()); 

try { 
    FileSystem dfs = FileSystem.get(config); 
} catch (IOException e) { 
    LOGGER.error("Failed to process hadoop file system"); 
} 

しかし、私は私のプログラムでは、各呼び出しnew Configuration()でそれを繰り返すか、いくつかの永続的な事前に設定baseConfigurationオブジェクトを使用してnew Configuration(baseConfiguration)のようにそれを使用する必要があります。私は、私は次のコードのようなものを使用することができ、推測します。これらの方法のすべてはかなり不器用に見えます。より洗練されたソリューションがありますか?たぶん静的メソッド呼び出しのような何か私は一度行うことができます。次のコードは、説明のためにのみ表示されています。

答えて

1

Hadoopアプリケーションはクラスパス内でこれらのファイルを検索します。 hadoop classpathを実行すると、リストの設定ディレクトリを見ることができます。

場所を変更するには、アプリケーションを実行する前にクラスパスを変更するだけです。最も簡単な方法は、このようなアプリケーションを起動する前に環境変数HADOOP_CONF_DIRを定義することです。

export HADOOP_CONF_DIR=/your/path/to/xmls 
hadoop jar ... 
関連する問題