2

bash スクリプトを Java プログラムに変換しようとしています。このスクリプト内で、Hadoop、Zookeeper、および Accumulo の開始スクリプトを実行します。

/hadoop/bin/start_all.sh  
/zookeeper/bin/zkServer.sh start  
/accumulo/bin/start_all.sh  

これは、スクリプトで簡単に実行できます。また、プログラムが既に実行されている場合は、これらの起動スクリプトを再度呼び出すことができます。プログラムは、既に実行されていることとその pid を出力するだけです。

Javaプログラム内でこれを行う方法があるかどうかを調べようとしています。 Class.run(configs) を実行できる Hadoop/ZooKeeper/Accumulo API に隠しコマンドがあり、Hadoop/ZooKeeper/Accumulo を開始または開始しようとしますか?

私の次のステップは、おそらく jsch を使用して ssh コマンドを実行できるようにすることですが、実際には bash スクリプトを置き去りにするつもりはないようです。

編集: Java からの Hadoop サンプル jar ファイル の実行 この質問では、質問者はランタイムを使用して開始コマンドを実行しています。これは Hadoop を開始する適切な方法ですか? そこで使用するコマンドがある場合は、ネイティブの Hadoop API を使用したいと思います。

4

1 に答える 1

1

私の見解では、Hadoop サービスまたは Zookeeper サービスを開始するための特定の API はありません。クラスorg.apache.hadoop.hdfs.server.namenode.NameNodeを例に取ります。

main()ただし、上記のクラスでを使用してサービスを開始できます。

スクリプトから、Hadoop は次のようなものを使用して、さまざまなクラスの main() 関数を引数で呼び出してサービスを開始します。

nohup $_JAVA_EXEC -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@" > "$_HADOOP_DAEMON_OUT" 2>&1 < /dev/null

ここで、 CLASS = org.apache.hadoop.hdfs.server.namenode.NameNode その他は自明です。

于 2013-09-13T19:02:27.157 に答える