无法在java程序中启动配置单元服务器

时间:2014-03-31 10:10:20

标签: java hive

我正在尝试使用Java程序启动Hive服务器。

这是我的Java代码。

p = Runtime.getRuntime().exec("/home/bigdata/hive/bin/hive --service hiveserver");
p.waitFor();

错误:

Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the path

我开始了我的hdfs。但我也得到这个错误

1 个答案:

答案 0 :(得分:0)

Runtime.exec()不会运行.bashr,请参阅Bash Startup Files。你的exec()调用进程应该继承你的调用者environemnt,但显然调用者缺少HADOOP_HOME。我无法猜到为什么会这样,可能与你自己的Java程序如何/何时被调用有关。修复它的一种方法是运行bash -l -c hive --service ...,如果你想让bash运行启动文件,然后运行你的命令。但是,更好的方法是明确设置要传递给流程的环境。见How do I set environment variables from Java?

归根结底,为什么?通常所有的配置单元服务都应该从init.d

启动