Spark和YARN
2024-09-25 06:46:56
Spark在master node生成DAG之后,将DAG以及map函数,action函数进行打包,还有一个很重的打包内容:如何在worker节点执行。统统打包之后传递给YARN,YARN本身只是负责分配资源,以及将上游应用要执行的内容(spark打的函数包)放在分配的资源里面执行;执行内容他并不知晓;可以是向worker节点监听的某个端口发送指令;可以是执行本地的一个shell脚本等等。
在YARN集群的模式下,并不是container里面的程序访问容器外面的executor,而是每个container里面跑的是就executor;executor来执行Task的业务逻辑。spark自己的Applicatin Master在想YARN的slave Node申请container的时候传递的CLC(Container Lauch Context)其实就是就是一个构建了包含executor的环境。
Spark提交给YARN两种模式,一种是yarn-cluster,另外一种是yarn-client;两者的区别在于Driver执行(以及产生的SparkContext的实例)在什么地方,前者是在Client端,这种方式比较容易调试,多用于测试调试阶段,因为sparkContext在client端,可以看到日志信息;后者Driver的执行实在NodeManager的一个容器中,这意味着yarn-cluster模式下,client向YARN提交一个application之后,就可以什么都不做了(比如选择直接退出),因为driver的运行,DAG的生成以及Scheduler等都是在NodeManager的container里面执行的,和applicationMaster在同一个容器内;
SparkContext的位置的不同导致了后续沟通的不同;因为SparkContext后续是要和container沟通的,yarn-client模式就是yarn集群之外的client和NodeManager里面的executor交互,yarn-cluster则是在集群内部交互。
在YARN里面跑的是Executor,每个Executor都是一个进程(不是线程);
使用YARN的几点理由:
1. YARN提供了资源队列以及资源池的模式来处理提交的任务;
2. spark standalone模式,要求每个application一个executor;YARN可以让你选择executor的数量;
3. YARN未来将会实现container的动态伸缩(现在还不支持https://issues.apache.org/jira/browse/YARN-1197),可以享受这种YARN才有的资源透明伸缩;
3. 支持认证,基于Kerberos的安全认证。
参考:
最新文章
- c++ 接口和抽象类
- 分辨率、DPI、PPI和屏幕尺寸,你都知道是啥么?
- kuangbin_SegTree D (POJ 2528)
- bootstrap-carousel
- 2015年毕业生收到的offer和薪资透露
- 序列化和反序列化的几种方式(DataContractSerializer)(二)
- 微信分组群发45028,微信分组群发has no masssend quota hint
- 异步socket大并发实现
- shell脚本学习(五)
- js中常见的一些兼容性问题
- [HDU3247]Resource Archiver
- Django表单字段汇总
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 连接数据库执行SQL语句
- 【转】一个 Linux 上分析死锁的简单方法
- SVN上线步骤笔记
- JS脚本获取开发者后台所有Device
- yii2redis安装
- 根据 WBS 列新 PID 数据
- Python:如何排序(sort)
- 我的HTML总结之HTML发展史
热门文章
- 用opencv检测人眼并定位瞳孔位置
- 通过自动回复机器人学Mybatis:MySQL脚本 + db >;>; dao >;>; service >;>; servlet
- pyDay12
- INNODB存储引擎表空间
- 微信小程序:本地资源图片无法通过 WXSS 获取,可以使用网络图片或者 base64或者使用image标签
- JAVA面试题整理(7)-Redis
- kotlin 学习感受
- win10不能上网问题的解决办法
- 快递100API接口调用代码示例
- arcgis api for silverlight开发系列之二:缓存图层与动态图层及图层总结 .