我正在尝试使用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。但我也得到这个错误
答案 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
启动