java - 为什么 start-all.sh 的根本原因是 "failed to launch org.apache.spark.deploy.master.Master: JAVA_HOME is not set"?

标签 java scala apache-spark cloudera

我正在尝试通过在 cloudera Quickstart VM 5.3.0 上运行的独立 Spark 服务来执行通过 Scala IDE 构建的 Spark 应用程序。

我的cloudera帐户JAVA_HOME是/usr/java/default

但是,在从 cloudera 用户执行 start-all.sh 命令时,我遇到以下错误消息,如下所示:

[cloudera@localhost sbin]$ pwd
/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin
[cloudera@localhost sbin]$ ./start-all.sh
chown: changing ownership of `/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/../logs': Operation not permitted
starting org.apache.spark.deploy.master.Master, logging to /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/../logs/spark-cloudera-org.apache.spark.deploy.master.Master-1-localhost.localdomain.out
/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/spark-daemon.sh: line 151: /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/../logs/spark-cloudera-org.apache.spark.deploy.master.Master-1-localhost.localdomain.out: Permission denied
failed to launch org.apache.spark.deploy.master.Master:
tail: cannot open `/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/../logs/spark-cloudera-org.apache.spark.deploy.master.Master-1-localhost.localdomain.out' for reading: No such file or directory
full log in /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/../logs/spark-cloudera-org.apache.spark.deploy.master.Master-1-localhost.localdomain.out
cloudera@localhost's password: 
localhost: chown: changing ownership of `/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/logs': Operation not permitted
localhost: starting org.apache.spark.deploy.worker.Worker, logging to /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/logs/spark-cloudera-org.apache.spark.deploy.worker.Worker-1-localhost.localdomain.out
localhost: /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/spark-daemon.sh: line 151: /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/logs/spark-cloudera-org.apache.spark.deploy.worker.Worker-1-localhost.localdomain.out: Permission denied
localhost: failed to launch org.apache.spark.deploy.worker.Worker:
localhost: tail: cannot open `/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/logs/spark-cloudera-org.apache.spark.deploy.worker.Worker-1-localhost.localdomain.out' for reading: No such file or directory
localhost: full log in /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/logs/spark-cloudera-org.apache.spark.deploy.worker.Worker-1-localhost.localdomain.out

我在 /etc/default/cloudera-scm-agent 中添加了 export CMF_AGENT_JAVA_HOME=/usr/java/default 并运行 sudo service cloudera-scm -代理重新启动。请参阅How to set CMF_AGENT_JAVA_HOME

我还在文件 /usr/share/cmf/bin/cmf- 的 locate_java_home 函数定义中添加了 export JAVA_HOME=/usr/java/default服务器并重新启动集群和独立 Spark 服务

但是从root用户启动spark服务时重复出现以下错误

[root@localhost spark]# sbin/start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/../logs/spark-root-org.apache.spark.deploy.master.Master-1-localhost.localdomain.out
failed to launch org.apache.spark.deploy.master.Master:
  JAVA_HOME is not set
full log in /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/sbin/../logs/spark-root-org.apache.spark.deploy.master.Master-1-localhost.localdomain.out
root@localhost's password: 
localhost: Connection closed by UNKNOWN

有人可以建议如何设置 JAVA_HOME 以便在 cloudera manager 上启动 Spark 独立服务吗?

最佳答案

解决方案非常简单明了。刚刚在 /root/.bashrc 中添加了 export JAVA_HOME=/usr/java/default ,它成功地从 root 用户启动了 Spark 服务,而无需JAVA_HOME 未设置 错误。希望它可以帮助遇到同样问题的人。

关于java - 为什么 start-all.sh 的根本原因是 "failed to launch org.apache.spark.deploy.master.Master: JAVA_HOME is not set"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955635/

相关文章:

scala - 基于 Scala 数组过滤或标记行

apache-spark - 与 SparkNLP 的句子相似性仅适用于带有一个句子的 Google Dataproc,当提供多个句子时失败

java - JVM PermGen OOM 即使尚未达到 Max

java - 在 Java 应用程序中打开和返回数据库连接的最佳方式?

java - 带逗号和不带逗号的数组

java - Repaint() 在 run() 函数之外不起作用

java - 如何将Akka的监督策略与更具体的不可恢复错误处理结合起来?

scala - 加特林将数据从 feeder 传递到 exec

hadoop - 创建 SPARK RDD(HDFS 上的文件)和调用 Action 时出错

apache-spark - 如何在 Spark DataFrame/DataSet 中将行拆分为不同的列?