如何从java程序启动hadoop、acumulo和zookeeper?

ogq8wdun  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(382)

我正在尝试将bash脚本转换为java程序。在这个脚本中,我运行hadoop、zookeeper和accumulo的开始脚本:

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

这在脚本中很简单。如果程序已经在运行,我可以再次调用这些启动脚本,没有问题,程序只会输出它们已经在运行和它们的PID。
我试图找出是否有一种方法可以在java程序中实现这一点。hadoop/zookeeper/acumuloapi中是否有隐藏的命令,我可以在其中运行class.run(configs),它将启动或尝试启动hadoop/zookeeper/acumulo?
我的下一步是,我可能可以使用jsch来运行ssh命令,但看起来我并没有真正把bash脚本抛在脑后。
编辑:从java执行hadoop示例jar文件在这个问题上,asker使用runtime执行start命令。这是启动hadoop的合适方法吗?如果有命令可供使用,我宁愿使用本机hadoopapi。

inb24sb2

inb24sb21#

在我的视图中,没有任何特定的api来启动hadoop服务或zookeeper服务。以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其他都是不言自明的。

相关问题