分享

spark三种提交方式不同,造成错误原因排查



内容整理自7群
CAM和Phineas


对于下面代码,运行产生问题

1.png

exception in thread"main" org.apache.spark.SparkException application finished with status

2.png


解决过程

首先核实函数是否正确

3.png

由于刚开始CAM使用的是ArrayList,因此改为list。
程序运行在local模式和yarn-client模式下,代码都没有问题。只有yarn-cluster模式下有问题。
这时候需要联系知识,yarn-client和yarn-cluster的区别是什么?

###########################################

yarn-cluster模式
4.png
Yarn-cluster模式下作业执行流程:
1. 客户端生成作业信息提交给ResourceManager(RM)
2. RM在某一个NodeManager(由Yarn决定)启动container并将Application Master(AM)分配给该NodeManager(NM)
3. NM接收到RM的分配,启动Application Master并初始化作业,此时这个NM就称为Driver
4. Application向RM申请资源,分配资源同时通知其他NodeManager启动相应的Executor
5. Executor向NM上的Application Master注册汇报并完成相应的任务



Yarn-client模式
5.png

Yarn-client模式下作业执行流程:
1. 客户端生成作业信息提交给ResourceManager(RM)
2. RM在本地NodeManager启动container并将Application Master(AM)分配给该NodeManager(NM)
3. NM接收到RM的分配,启动Application Master并初始化作业,此时这个NM就称为Driver
4. Application向RM申请资源,分配资源同时通知其他NodeManager启动相应的Executor
5. Executor向本地启动的Application Master注册汇报并完成相应的任务




yarn-cluster和yarn-client模式的区别其实就是Application Master进程的区别,yarn-cluster模式下,driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行。然而yarn-cluster模式不适合运行交互类型的作业。而yarn-client模式下,Application Master仅仅向YARN请求executor,client会和请求的container通信来调度他们工作,也就是说Client不能离开





#############################################


从上面我们看出,yarn-cluster模式下,driver运行在AM(Application Master)中。也就是说对于Application Master的内存要求更高。而yarn-client不存在这么个问题。所以根据他们的区别。推测是Application Master内存过小造成的。

解决办法:
增加application master的内存,问题解决。

6.png







http://blog.csdn.net/dufufd/article/details/53200516
https://www.iteblog.com/archives/1223.html

已有(1)人评论

跳转到指定楼层
spftoto 发表于 2018-7-5 17:49:56
冒泡。冒泡,冒泡。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条