我正在尝试将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。
1条答案
按热度按时间inb24sb21#
在我的视图中,没有任何特定的api来启动hadoop服务或zookeeper服务。以org.apache.hadoop.hdfs.server.namenode.namenode类为例
尽管你可以用
main()
在上面的类中启动服务。在脚本中,hadoop使用如下方法来启动服务,用参数调用不同类的main()函数。
其中,class=org.apache.hadoop.hdfs.server.namenode.namenode其他都是不言自明的。