spark 在yarn执行job时一直抱0.0.0.0:8030错误
2014-08-17 20:50
309 查看
近日新写完的spark任务放到yarn上面执行时,在yarn的slave节点中一直看到报错日志:连接不到0.0.0.0:8030 。
这就很奇怪了,因为slave执行任务时应该链接的是master节点的8030端口,正常情况下应该为 masterIP:8030.
按照常规思路,首先检查配置文件:yarn-site.xml 。查看里面配置的yarn.resourcemanager.scheduler.address 是否为master。
这一项排查过后,重启cluser,故障依旧。
继续排查,查看环境变量,看是否slave启动时是否没有加载yarn-site.xml。env|grep YARN 直接查看所有YARN的环境变量,其中可以看到YARN_CONF_DIR = HADOOP_CONF_DIR ,并且指向了正确的目录路径。
那么就很奇怪了,继续排查。如果环境方面都没有问题,写一下 hard coding.在代码里面直接写死:
重新执行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,睡觉去!
The logs are as below: 2014-08-11 20:10:59,795 INFO [main] org.apache.hadoop.yarn.client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8030 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.在代码里面直接写死:
Configuration conf = new Configuration(); conf.set("fs.default.name",hdfsUri); conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem"); conf.set("mapreduce.framework.name", "yarn"); conf.set("fs.AbstractFileSystem.hdfs.impl", "org.apache.hadoop.fs.Hdfs"); 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,睡觉去!
相关文章推荐
- oracle逻辑备份失败报JOB无法执行的错误,解决方案
- oracle job 设置自动执行,执行错误,如何解决呢?
- Spark源码解读-JOB的提交与执行
- spark-shell on yarn 出错解决【启动命令bin/spark-shell --master yarn-client出现错误,类ExecutorLauncher 找不到】
- spark on yarn 出现的问题【测试wordcount程序遇到的错误,ipc.client连接到yarn的端口失败】
- 手动测试存储过程运行正常,job执行存储过程会长时间的处于运行状态,不手动停止,会一直运行不过去!
- 从物理执行的角度透视Spark Job
- Could not locate executable null 解决办法【在windows环境下开发hadoop2.4.1或者hadoop2.5.2的mapreduce,执行job遇到的一些错误】
- 【解决】Spark On Yarn执行中executor内存限制问题
- spark on yarn图形化任务监控利器:History-server帮你理解spark的任务执行过程
- JOB执行过程中,提示值过多错误
- spark中job的物理执行图--stage
- spark在yarn-cluster上面执行报错
- Spark错误:WARN TaskSchedulerImpl: Initial job has not accepted any resources;
- 执行oracle中的job报错:ORA-12011:无法执行作业1存储过程执行DDL语句提示ORA-01031错误:权限不足
- 使用sqlcmd执行连接的时候一直报有语法错误
- 执行job时出现错误ORA-08102
- Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
- Spark执行样例报警告:WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources
- 缓存jar包来提升spark on Yarn job的提交速度