繁体   English   中英

如何从Java程序启动Hadoop,Accumulo和ZooKeeper?

[英]How to start Hadoop, Accumulo, and ZooKeeper from a java program?

我正在尝试将bash脚本转换为Java程序。 在此脚本中,我运行Hadoop,Zookeeper和Accumulo的启动脚本:

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

这在脚本中很简单。 如果程序已经在运行,则可以再次调用这些启动脚本,而程序将仅输出它们已经在运行以及它们的pid。

我试图找出是否有一种方法可以在Java程序中执行此操作。 Hadoop / ZooKeeper / Accumulo API中是否有一些隐藏的命令,我可以在其中运行Class.run(configs),它将启动或尝试启动Hadoop / ZooKeeper / Accumulo?

我的下一步是,我可能可以使用jsch运行ssh命令,但是似乎我并没有真正抛弃bash脚本。

编辑: 从Java执行hadoop示例jar文件在此问题中,问问者正在使用运行时执行启动命令。 这是启动Hadoop的适当方法吗? 如果有要使用的命令,我宁愿使用本地Hadoop API。

我认为没有任何特定的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其他是不言自明的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM