使用Supervisor在监督下运行stream程

我试图在Supervisor( http://supervisord.org/ )的监督下运行一个stream程。

我有两个环境运行几乎相同的环境(Ubuntu 12.04 LTS)。

目前的问题是我试图在Supervisor下运行的过程可以在一台服务器上完美运行,但是不能在另一台服务器上运行。

在失败的服务器上,我试图在没有Supervisor的情况下运行相同的进程。 一切都好。 任何想法? 谢谢。

主pipe提供的stderr:

Traceback (most recent call last): File "/usr/storm-0.8.1/bin/storm", line 402, in <module> main() File "/usr/storm-0.8.1/bin/storm", line 399, in main (COMMANDS.get(COMMAND, "help"))(*ARGS) File "/usr/storm-0.8.1/bin/storm", line 263, in supervisor jvmopts = parse_args(confvalue("supervisor.childopts", cppaths)) + [ File "/usr/storm-0.8.1/bin/storm", line 58, in confvalue p = sub.Popen(command, stdout=sub.PIPE) File "/usr/lib/python2.7/subprocess.py", line 679, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory 

我仔细检查了subprocess.py及其权限,它看起来与成功的服务器相同。

我希望我能提供更多的信息,但这是我所有的。 也许有人可以build议我从哪里开始?

当试图启动Storm时,我得到了这个确切的问题,因为java不在我的路径上。 我不得不

 export JAVA_HOME=... # specify your own path here export PATH=$PATH:$JAVA_HOME/bin # allows for finding the java executable 

所以我猜这是Java而不是Python(或一个Python模块),这是你的问题。

为了解决这个问题,我真的去了,并添加了一些调试打印语句到storm.py脚本,以便我可以看到它试图作为一个子进程执行什么命令。 当我试图通过shell脚本运行相同的命令(这是相当大的,由于java classpath被指定为参数),它找不到Java。

'希望这可以帮助。

如果你已经设置了你的java路径,仍然得到这个错误,你可以试试这个。

  1. 在storm conf文件夹中打开storm_env.ini文件。 查找配置备用JAVAHOME的行,如果你是第一次访问它将看起来像这样

    #使用的java实现。 如果没有找到JAVA_HOME,我们期望java在路径#JAVA_HOME:home中

  2. 用你的JAVAHOME更新它

    前(这是如何看起来在我的文件。):

    #使用的java实现。 如果没有找到JAVA_HOME,我们期望java在路径中

    JAVA_HOME:/ usr / lib中/ JVM / JAVA -8-预言

  3. 保存更改并关闭编辑器。

  4. 打开新的终端,然后重试