2017-05-28 10 views
0

Javaコードにhadoopファイルシステム操作(例:hdfs mkdir)があります。 java -cpを使ってJavaプログラムを実行しようとすると、ディレクトリはLinuxのローカルファイルシステムで作成されています。だから、私はhadoop jarコマンドでプログラムを実行し、ディレクトリはhdfsで作成されています。今私はhadoop jarコマンドを使用してJavaプログラム全体を実行する予定です。私は自分のHDFSのためのコードのスニペットは、ファイル操作場合、ローカルフォルダからファイルを読み込むか、下Runtime.getRuntime().exec(some linux command);を実行するときに、特にのHadoop jarコマンドを使用して、任意の問題があるだろう疑問に思ってhadoop jarコマンドを使って通常のJavaプログラムを実行することはできますか?

Configuration conf = new Configuration();  
FileSystem fs = FileSystem.get(conf); 
boolean res = fs.mkdirs(directory path); 

答えて

1

はい、のHadoop jarコマンドを使用することができますが通常のJavaプログラムも実行できます。しかし、その反対は間違っています。 Hadoopファイルシステムの操作は、hadoop環境でのみ実行できます。しかし、ハープ・クラスターで実行している場合、linuxコマンドはスレーブ・ノードで実行される可能性があります。

+0

明らかに、hadoop jarコマンドを使用すると、外部依存jarを指定できないようです。私はマップを減らすコードはありません、私はいくつかのhdfsファイル操作を持っていることに注意してください。 –

+1

はい、外部依存型ジャーは、hadoop環境で実行しているときにも使用できます。それはさまざまな方法で行うことができます。すべての依存関係を持つuber jarを作成するか、または各ノードに依存するjarを配布し、パスを$ HADOOP_CLASSPATH変数に定義します。 –

+0

私は管理者権限を持っていないので、私は別の解決策を試していました。太った瓶を作りたいと思っていません。それは、私の展開の瓶が大きくなり、冗長になるからです。私はHDFSに直接書き込むことができるように新しいConfiguration()オブジェクトの設定を指定することができますか? –

関連する問題