我正在尝试将bash脚本转换为java程序。在此脚本中,我运行了Hadoop、Zoomaster和Accumulo的开始脚本:
/hadoop/bin/start_all.sh
/zookeeper/bin/zkServer.sh start
/accumulo/bin/start_all.sh
这在脚本中很容易做到。如果程序已经在运行,我可以再次调用这些启动脚本,没有问题,程序只会输出它们已经在运行和它们的PID。
我想知道是否有一种方法可以在java程序中实现这一点。Hadoop/ZooKeeper/Accumulo API中是否有一些隐藏的命令,我可以在其中运行类。运行(配置),它将启动或尝试启动Hadoop/ZooKeeper/Accumulo?
我的下一步是,我可能可以使用jsch来运行ssh命令,但似乎我并没有真正忘记bash脚本。
编辑:从java执行hadoop示例jar文件在这个问题中,asker正在使用Runtime执行start命令。这是启动Hadoop的合适方式吗?如果有命令要使用,我宁愿使用原生Hadoop API。
在我看来,没有任何特定的API来启动Hadoop服务或Zookeeper服务。以org类为例。阿帕奇。hadoop。hdfs。服务器名称节点。主节点
尽管您可以使用上述类中的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其他是不言自明的。
我在我的ubuntu 12.04中安装了Hadoop 2.6.0。当我启动/停止dfs-sh守护程序时,它显示以下错误。请帮助我克服这个问题 无需停止namenode本地主机:停止datanode停止次要namenodes[0.0.0.0] 0.0.0.0:停止次要namenode 2004年5月16日10:40:03警告util。NativeCodeLoader:无法为您的平台加载本机hadoo
问题内容: 我正在开发一个用Java编写的程序,对于某些操作,它使用用户配置的命令行启动外部程序。当前它使用并且不保留引用(启动的程序是文本编辑器或存档实用程序,因此不需要系统输入/输出/错误流)。 但是,这有一个小问题,即当Java程序退出时,直到所有启动的程序都退出后,它才真正退出。 如果启动的程序完全独立于启动它们的JVM,我将更喜欢它。 目标操作系统是多个,最低要求是Windows,Lin
我正在尝试从Java应用程序调用mapreduce作业。在以前的hadoop版本(1.x)中,我创建了一个配置对象和一个作业对象,在配置中设置mapred.Job.tracker和fs.default.name并运行作业。现在,在Hadoop2.x中,作业跟踪器不再存在,也不存在任何关于如何以编程方式运行MR1作业的文档。有什么想法吗? 我要找的是这里给出的解释:从一个简单的Java程序调用一个m
我使用的是一个Java应用程序,它让消费者开始阅读Kafka主题。每次我需要启动消费者应用程序时,我都必须使用cmd中的命令启动Zookeeper和Kafka服务器。是否可以用小型Java程序启动/停止它们?非常感谢。
问题内容: 如何重新启动Java AWT应用程序?我有一个附加了事件处理程序的按钮。我应该使用什么代码来重新启动应用程序? 我想做与应用程序中相同的事情。 问题答案: 当然,可以重新启动Java应用程序。 以下方法显示了一种重新启动Java应用程序的方法: 基本上,它执行以下操作: 查找Java可执行文件(我在这里使用了Java二进制文件,但这取决于您的要求) 查找应用程序(在我的情况下是一个ja
我已经编写了一个Java应用程序,它可以构建flume配置文件,并将它们写入Linux机器上的磁盘。然后,应用程序构建flume命令,并尝试通过运行以下代码中的命令来启动flume代理: 如果我接受flume命令并通过终端手动执行它,它工作得很好。当java应用程序尝试执行flume命令时,什么都没有发生。这是类路径问题吗? Flume Command here: /root/flume-flum