Spark-任务执行流程

Application在集群中运行的大概流程

在这里插入图片描述
流程:

1.Driver分发task到数据所在的节点上运行。
	计算找数据,减少网络IO
2.每一个任务的执行结果拉回到Driver进程中
	这种操作很危险,容易导致Driver端OOM。可以通过代码控制是否将计算结果拉回到Driver端

Driver的作用:

1.分发任务到计算节点运行
2.监控task(thread)的运行情况
3.如果task失败,会重新发送(有次数限制)
4.可以将计算结果拉回到Driver进程

结论:Driver会和集群频繁通信

Application提交的方式

client提交方式 cluster提交方式
Driver进程 在client端节点启动 在集群中随机一台Worker节点上启动
提交命令 spark-submit --master spark://node01:7077 --class className jarPath args spark-submit --master spark://node01:7077 --deploy-mode cluster --class className jarPath args
适应场景 测试环境 生产环境
结果 客户端节点能够看见 去Worker节点查看(可以直接在WORKER_DIR目录下查看,也可以通过网页查看)

注意:className jarPath args根据代码、jar包位置、参数自己填写
Q:为什么cluster方式适合生产环境?
A:每一次提交Application导致某一台Driver进程所在的节点网卡流量激增问题是无法解决的,但是可以解决的是,如果提交1w个Application,让这1w次网卡流量激增问题分散到集群的各个节点上。

Application提交的集群

Spark集群 Yarn集群
依赖集群 HDFS集群、Spark集群、Zookeeper集群 HDFS集群、Yarn集群、Zookeeper集群
提交命令 spark-submit --master spark://node01:7077 --class jarPath args spark-submit --master yarn --class jarPath args
配置文件 不需要改变 在spark-env.sh中添加HADOOP_CONF_DIR的路径:$HADOOP_HOME/etc/hadoop

Q:Spark App 提交到yarn集群上,需要启动standalone集群吗?
A:不需要,甚至可以集群中可以没有spark安装包。但是,client端必须要有spark安装包,因为提交Application的时候需要用到spark-submit命令。

Q:Spark App提交到yarn集群,为什么需要配置HADOOP_CONF_DIR选项?
A:Application提交的时候可以通过HADOOP_CONF_DIR拿到yarn-site.xml配置文件,解析获得Resourcemanager的URL,就可以申请资源了。

Q:将Application提交到Yarn集群上,为什么必须要启动HDFS集群?
A:因为提交Application的时候需要先将jar上传到HDFS上,这样各个节点才能并行的快速的下载。

猜你喜欢

转载自blog.csdn.net/love__guo/article/details/84289767
今日推荐