gpt4 book ai didi

升级到 Spark 1.3.0 时出现 JAVA_HOME 错误

转载 作者:可可西里 更新时间:2023-11-01 14:15:20 25 4
gpt4 key购买 nike

我正在尝试将一个用 Scala 编写的 Spark 项目从 Spark 1.2.1 升级到 1.3.0,因此我更改了我的 build.sbt,如下所示:

-libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.1" % "provided"
+libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.0" % "provided"

然后制作一个assembly jar,并提交:

HADOOP_CONF_DIR=/etc/hadoop/conf \
spark-submit \
--driver-class-path=/etc/hbase/conf \
--conf spark.hadoop.validateOutputSpecs=false \
--conf spark.yarn.jar=hdfs:/apps/local/spark-assembly-1.3.0-hadoop2.4.0.jar \
--conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
--deploy-mode=cluster \
--master=yarn \
--class=TestObject \
--num-executors=54 \
target/scala-2.11/myapp-assembly-1.2.jar

作业提交失败,终端出现如下异常:

15/03/19 10:30:07 INFO yarn.Client: 
15/03/19 10:20:03 INFO yarn.Client:
client token: N/A
diagnostics: Application application_1420225286501_4698 failed 2 times due to AM
Container for appattempt_1420225286501_4698_000002 exited with exitCode: 127
due to: Exception from container-launch:
org.apache.hadoop.util.Shell$ExitCodeException:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:464)
at org.apache.hadoop.util.Shell.run(Shell.java:379)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

最后,我去检查了 YARN app master 的 web 界面(因为工作在那里,我知道它至少做到了这一点),它显示的唯一日志是这些:

    Log Type: stderr
Log Length: 61
/bin/bash: {{JAVA_HOME}}/bin/java: No such file or directory

Log Type: stdout
Log Length: 0

我不确定如何解释它——{{JAVA_HOME}} 是一个以某种方式将其变成脚本的文字(包括括号)吗?这是来自工作节点还是驱动程序?我可以做些什么来进行实验和故障排除?

我确实在集群所有节点的 hadoop 配置文件中设置了 JAVA_HOME:

% grep JAVA_HOME /etc/hadoop/conf/*.sh
/etc/hadoop/conf/hadoop-env.sh:export JAVA_HOME=/usr/jdk64/jdk1.6.0_31
/etc/hadoop/conf/yarn-env.sh:export JAVA_HOME=/usr/jdk64/jdk1.6.0_31

自 1.2.1 以来,此行为在 1.3.0 中是否发生了变化?使用 1.2.1 且不做任何其他更改,作业可以正常完成。

[注意:我最初将此发布在 Spark 邮件列表上,如果/当我找到解决方案时,我会更新这两个地方。]

最佳答案

您是否尝试过在 etc/hadoop/yarn-env.sh 文件中设置 JAVA_HOME?您的 JAVA_HOME 环境变量可能不适用于运行作业的 YARN 容器。

我之前曾发生过,节点上 .bashrc 中的某些环境变量没有被集群上产生的 yarn worker 读取。

错误有可能与版本升级无关,与YARN环境配置有关。

关于升级到 Spark 1.3.0 时出现 JAVA_HOME 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com