spark 在yarn执行job时一直抱0.0.0.0:8030错误

摘要:
当最近将新编写的Spark任务放在Yarn上执行时,Yarn的从节点中总是会看到错误日志:连接无法达到0.0.0.0:8030。继续检查并检查环境变量,以查看当从节点启动xml时是否未加载Yarn站点现在我有点头晕。冷静已检查以下项目:1.配置文件:yarn site。主从机的xml正常。在Spark的根目录中搜索0.0.0.0。发现Spark依赖于一个匹配的包:Spark core assembly-0.4-SNAPSHOT。jar打开jar包,有一个yarn-default.xml。

近日新写完的spark任务放到yarn上面执行时,在yarn的slave节点中一直看到报错日志:连接不到0.0.0.0:8030 。

1 The logs are as below:
2 2014-08-11 20:10:59,795 INFO [main] org.apache.hadoop.yarn.client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8030
3 2014-08-11 20:11:01,838 INFO [main] org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8030. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)

这就很奇怪了,因为slave执行任务时应该链接的是master节点的8030端口,正常情况下应该为 masterIP:8030.

按照常规思路,首先检查配置文件:yarn-site.xml 。查看里面配置的yarn.resourcemanager.scheduler.address 是否为master。

<property>
     <name>yarn.resourcemanager.hostname</name>                      
     <value>master1</value>
</property>
<property>
     <name>yarn.resourcemanager.scheduler.address</name>                      
     <value>master1:8030</value>
</property>

这一项排查过后,重启cluser,故障依旧。

继续排查,查看环境变量,看是否slave启动时是否没有加载yarn-site.xml。env|grep YARN 直接查看所有YARN的环境变量,其中可以看到YARN_CONF_DIR = HADOOP_CONF_DIR ,并且指向了正确的目录路径。

那么就很奇怪了,继续排查。如果环境方面都没有问题,写一下 hard coding.在代码里面直接写死:

1 Configuration conf = new Configuration();  
2 conf.set("fs.default.name",hdfsUri);  
3 conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");  
4 conf.set("mapreduce.framework.name", "yarn");  
5 conf.set("fs.AbstractFileSystem.hdfs.impl", "org.apache.hadoop.fs.Hdfs");  
6 conf.set("yarn.resourcemanager.address", yarnip+":"+8030); //设置RM 访问位置  

重新执行job,仍然报错。这下就有点晕菜了,冷静一下,目前已经排查的有:

1、配置文件:master、slave的yarn-site.xml 都正常无问题。

2、环境变量:master、slave的环境变量都正常无问题。

3、hard-coding,也无效果。

难道是框架本省的问题?

在spark根目录检索0.0.0.0,发现在spark依赖的一个包里面还真有一个匹配的:

spark-core-assembly-0.4-SNAPSHOT.jar

打开这个jar包,里面有一个yarn-default.xml 。这里面配置的是0.0.0.0. 按道理来说配置文件优先级应该是大于jar的。

改了试一下!

把0.0.0.0改成master的IP,重新打包上传,执行job。

Oh my god!

成功了!

看看时间,为了这个问题已经搞了大半个夜了。算了,先睡觉。具体问题留待周一检查。

但初步认为:应该是yarn的client再执行job时,会取一个masterIP 值,如果取不到,则默认取yarn-defalut中的值。所以关键就是找到从哪里取值。这个问题看看源码应该不是大问题。

OK,睡觉去!

免责声明:文章转载自《spark 在yarn执行job时一直抱0.0.0.0:8030错误》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Qt 操作excel报错邮件服务器之SMTP协议分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spark应用程序运行的日志存在哪里(转)

原文链接:Spark应用程序运行的日志存在哪里 在很多情况下,我们需要查看driver和executors在运行Spark应用程序时候产生的日志,这些日志对于我们调试和查找问题是很重要的。   Spark日志确切的存放路径和部署模式相关:  (1)、如果是Spark Standalone模式,我们可以直接在Master UI界面查看应用程序的日志,在默认...

spark性能测试理论-Benchmark(转)

一、Benchmark简介Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply...

【转载】Apache Spark Jobs 性能调优(二)

调试资源分配Spark 的用户邮件邮件列表中经常会出现 “我有一个500个节点的集群,为什么但是我的应用一次只有两个 task 在执行”,鉴于 Spark 控制资源使用的参数的数量,这些问题不应该出现。但是在本章中,你将学会压榨出你集群的每一分资源。推荐的配置将根据不同的集群管理系统(YARN、Mesos、Spark Standalone)而有所不同,我们...

监控Spark应用方法简介

监控Spark应用有很多种方法。Web接口每一个SparkContext启动一个web UI用来展示应用相关的一些非常有用的信息,默认在4040端口。这些信息包括:任务和调度状态的列表RDD大小和内存使用的统计信息正在运行的executor的信息环境信息你可以在浏览器中打开http://<driver-node>:4040网址来访问这些信息。如...

spark parquet 从hdfs 上读 和写 scala 版本

import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext import org.apache.spark.sql.DataFrame import org.apache.spark.sql.Sav...

spark 集合交集差集运算

intersect except是spark提供的集合差集运算, 但是要求参与运算的两个dataframe,有相同的data Schema。 如果我想从 集合1(attribute1, attribute2, attribute3)求 attribute2 出现在另一个集合2(attribute2, attribute4, attribute5)里的所有行...