【发布时间】:2016-08-13 16:58:12
【问题描述】:
我对 Spark 还很陌生。我尝试搜索,但找不到合适的解决方案。我已经在两个盒子(一个主节点和另一个工作节点)上安装了 hadoop 2.7.2 我已经按照以下链接设置了集群http://javadev.org/docs/hadoop/centos/6/installation/multi-node-installation-on-centos-6-non-sucure-mode/ 我以 root 用户身份运行 hadoop 和 spark 应用程序来测试集群。
我已经在主节点上安装了 spark 并且 spark 正在启动,没有任何错误。但是,当我使用 spark submit 提交作业时,我收到 File Not Found 异常,即使该文件存在于错误中相同位置的主节点中。我在 Spark Submit 命令下执行,请在下面找到日志输出命令。
/bin/spark-submit --class com.test.Engine --master yarn --deploy-mode cluster /app/spark-test.jar
16/04/21 19:16:13 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... 在适用的情况下使用内置 java 类
16/04/21 19:16:13 信息 RMProxy:在 /0.0.0.0:8032 连接到 ResourceManager
21 年 16 月 4 日 19:16:14 信息客户端:从具有 1 个节点管理器的集群请求新应用程序
16/04/21 19:16:14 INFO 客户端:验证我们的应用程序请求的内存容量不超过集群的最大内存容量(每个容器 8192 MB)
16/04/21 19:16:14 INFO 客户端:将分配 AM 容器,内存为 1408 MB,包括 384 MB 开销
16/04/21 19:16:14 INFO 客户端:为我们的 AM 设置容器启动上下文
16/04/21 19:16:14 INFO 客户端:为我们的 AM 容器设置启动环境
16/04/21 19:16:14 INFO 客户:为我们的 AM 容器准备资源
16/04/21 19:16:14 INFO 客户端:源文件系统和目标文件系统相同。不复制文件:/mi/spark/lib/spark-assembly-1.6.1-hadoop2.6.0.jar
16/04/21 19:16:14 INFO 客户端:源文件系统和目标文件系统相同。不复制文件:/app/spark-test.jar
16/04/21 19:16:14 INFO 客户端:源文件系统和目标文件系统相同。不复制文件:/tmp/spark-120aeddc-0f87-4411-9400-22ba01096249/__spark_conf__5619348744221830008.zip
16/04/21 19:16:14 INFO SecurityManager:将视图 acls 更改为:root
16/04/21 19:16:14 INFO SecurityManager:将修改 acls 更改为:root
21 年 16 月 4 日 19:16:14 信息安全管理器:安全管理器:身份验证已禁用; ui acls 禁用;具有查看权限的用户:Set(root);具有修改权限的用户:Set(root)
16/04/21 19:16:15 INFO 客户端:将应用程序 1 提交给 ResourceManager
16/04/21 19:16:15 INFO YarnClientImpl: 提交申请 application_1461246306015_0001
16/04/21 19:16:16 INFO 客户端:application_1461246306015_0001 的应用程序报告(状态:已接受)
16/04/21 19:16:16 信息客户:
客户令牌:不适用
诊断:不适用
ApplicationMaster 主机:不适用
ApplicationMaster RPC 端口:-1
队列:默认
开始时间:1461246375622
最终状态:UNDEFINEDsparkcluster01.testing.com
跟踪网址:http://sparkcluster01.testing.com:8088/proxy/application_1461246306015_0001/
用户:根
16/04/21 19:16:17 INFO 客户端:application_1461246306015_0001 的应用程序报告(状态:已接受)
16/04/21 19:16:18 INFO 客户端:application_1461246306015_0001 的应用程序报告(状态:已接受)
16/04/21 19:16:19 INFO 客户端:application_1461246306015_0001 的应用程序报告(状态:已接受)
16/04/21 19:16:20 INFO 客户端:application_1461246306015_0001 的应用程序报告(状态:已接受)
16/04/21 19:16:21 INFO 客户端:application_1461246306015_0001 的应用程序报告(状态:失败)
16/04/21 19:16:21 信息客户:
客户令牌:不适用
诊断:应用程序 application_1461246306015_0001 失败 2 次,原因是应用程序尝试_1461246306015_0001_000002 的 AM 容器以 exitCode 退出:-1000
有关更详细的输出,请查看应用程序跟踪页面:http://sparkcluster01.testing.com:8088/cluster/app/application_1461246306015_0001然后,单击指向每次尝试日志的链接。
诊断:java.io.FileNotFoundException:文件文件:/app/spark-test.jar 不存在
这次尝试失败。申请失败。
ApplicationMaster 主机:不适用
ApplicationMaster RPC 端口:-1
队列:默认
开始时间:1461246375622
最终状态:失败
跟踪网址:http://sparkcluster01.testing.com:8088/cluster/app/application_1461246306015_0001
用户:根
线程“主”org.ap/app/spark-test.jarache.spark.SparkException 中的异常:应用程序 application_1461246306015_0001 以失败状态完成
在 org.apache.spark.deploy.yarn.Client.run(Client.scala:1034)
在 org.apache.spark.deploy.yarn.Client$.main(Client.scala:1081)
在 org.apache.spark.deploy.yarn.Client.main(Client.scala)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我什至尝试通过将我的应用程序放在 HDFS 上并在 Spark Submit 命令中提供 HDFS 路径来在 HDFS 文件系统上运行 spark。即使这样,它也会在某些 Spark Conf 文件上引发 File Not Found Exception。我在 Spark Submit 命令下执行,请在命令下找到日志输出。
./bin/spark-submit --class com.test.Engine --master yarn --deploy-mode cluster hdfs://sparkcluster01.testing.com:9000/beacon/job/spark-test.jar
16/04/21 18:11:45 信息 RMProxy:在 /0.0.0.0:8032 连接到 ResourceManager
21 年 16 月 4 日 18:11:46 信息客户端:从具有 1 个节点管理器的集群请求新应用程序
16/04/21 18:11:46 INFO 客户端:验证我们的应用程序请求的内存容量不超过集群的最大内存容量(每个容器 8192 MB)
16/04/21 18:11:46 INFO 客户端:将分配 AM 容器,内存为 1408 MB,包括 384 MB 开销
16/04/21 18:11:46 INFO 客户端:为我们的 AM 设置容器启动上下文
16/04/21 18:11:46 INFO Client: 为我们的 AM 容器设置启动环境
16/04/21 18:11:46 INFO 客户:为我们的 AM 容器准备资源
16/04/21 18:11:46 INFO 客户端:源文件系统和目标文件系统相同。不复制文件:/mi/spark/lib/spark-assembly-1.6.1-hadoop2.6.0.jar
16/04/21 18:11:47 INFO 客户端:上传资源 hdfs://sparkcluster01.testing.com:9000/beacon/job/spark-test.jar -> 文件:/root/.sparkStaging/application_1461234217994_0017/spark-测试.jar
16/04/21 18:11:49 INFO 客户端:源文件系统和目标文件系统相同。不复制文件:/tmp/spark-f4eef3ac-2add-42f8-a204-be7959c26f21/__spark_conf__6818051470272245610.zip
16/04/21 18:11:50 INFO SecurityManager:将视图 acls 更改为:root
16/04/21 18:11:50 INFO SecurityManager:将修改 acls 更改为:root
21 年 16 月 4 日 18:11:50 信息安全管理器:安全管理器:身份验证已禁用; ui acls 禁用;具有查看权限的用户:Set(root);具有修改权限的用户:Set(root)
16/04/21 18:11:50 INFO 客户端:将应用程序 17 提交到 ResourceManager
16/04/21 18:11:50 INFO YarnClientImpl: 提交申请 application_1461234217994_0017
16/04/21 18:11:51 INFO 客户端:application_1461234217994_0017 的应用程序报告(状态:已接受)
16/04/21 18:11:51 信息客户:
客户令牌:不适用
诊断:不适用
ApplicationMaster 主机:不适用
ApplicationMaster RPC 端口:-1
队列:默认
开始时间:1461242510849
最终状态:未定义
跟踪网址:http://sparkcluster01.testing.com:8088/proxy/application_1461234217994_0017/
用户:根
16/04/21 18:11:52 INFO 客户端:application_1461234217994_0017 的应用程序报告(状态:已接受)
16/04/21 18:11:53 INFO 客户端:application_1461234217994_0017 的应用程序报告(状态:已接受)
16/04/21 18:11:54 INFO 客户端:application_1461234217994_0017 的应用程序报告(状态:失败)
16/04/21 18:11:54 信息客户:
客户令牌:不适用
诊断:应用程序 application_1461234217994_0017 由于 AM Container for appattempt_1461234217994_0017_000002 退出 2 次,exitCode:-1000
有关更详细的输出,请查看应用程序跟踪页面:http://sparkcluster01.testing.com:8088/cluster/app/application_1461234217994_0017然后,单击指向每次尝试日志的链接。
诊断:文件文件:/tmp/spark-f4eef3ac-2add-42f8-a204-be7959c26f21/__spark_conf__6818051470272245610.zip 不存在
java.io.FileNotFoundException:文件文件:/tmp/spark-f4eef3ac-2add-42f8-a204-be7959c26f21/__spark_conf__6818051470272245610.zip 不存在
在 org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:609)
在 org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:822)
在 org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:599)
在 org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:421)
在 org.apache.hadoop.yarn.util.FSDownload.copy(FSDownload.java:253)
在 org.apache.hadoop.yarn.util.FSDownload.access$000(FSDownload.java:63)
在 org.apache.hadoop.yarn.util.FSDownload$2.run(FSDownload.java:361)
在 org.apache.hadoop.yarn.util.FSDownload$2.run(FSDownload.java:359)
在 java.security.AccessController.doPrivileged(本机方法)
在 javax.security.auth.Subject.doAs(Subject.java:422)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
在 org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:358)
在 org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:62)
在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在 java.lang.Thread.run(Thread.java:745)
这次尝试失败。申请失败。
ApplicationMaster 主机:不适用
ApplicationMaster RPC 端口:-1
队列:默认
开始时间:1461242510849
最终状态:失败
跟踪网址:http://sparkcluster01.testing.com:8088/cluster/app/application_1461234217994_0017
用户:根
线程“主”org.apache.spark.SparkException 中的异常:应用程序 application_1461234217994_0017 以失败状态完成
在 org.apache.spark.deploy.yarn.Client.run(Client.scala:1034)
在 org.apache.spark.deploy.yarn.Client$.main(Client.scala:1081)
在 org.apache.spark.deploy.yarn.Client.main(Client.scala)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
16/04/21 18:11:55 INFO ShutdownHookManager:已调用关闭挂钩
16/04/21 18:11:55 INFO ShutdownHookManager:删除目录 /tmp/spark-f4eef3ac-2add-42f8-a204-be7959c26f21
【问题讨论】:
-
很高兴您包含了所有这些信息,但火花代码本身对诊断问题没有用处吗?
-
@cricket_007 这个问题不是由 spark 代码引起的,因为即使我使用 Yarn 运行 spark shell 或任何 spark 示例本身,我也会收到相同的错误。例如:spark-shell --master yarn-client
-
请添加您的纱线日志。你可以通过
$ yarn logs -applicationId application_1461246306015_0001得到它们 -
@ user1314742 ,我认为 spark 应用程序本身没有被执行。提交工作后,我很快就收到了这个例外。当我运行 yarn logs 命令时,它说该作业的日志聚合尚未开始。我认为这与我的 spark 和 hadoop 设置/配置有关。
-
@cricket_007 这就是 spark 打印文件位置的方式。我与错误无关。我的 hadoop 配置目录指向了导致此问题的错误位置。
标签: hadoop apache-spark hadoop-yarn spark-streaming