怎么编程实现kill yarn上面运行的spark作业

怎么编程实现kill yarn上面运行的spark作业,第1张

找到运行在Yarn上的spark作业的applicationid,使用命令,

yarn application -kill <applicationId>命令即可kill掉。

转至: https://www.cnblogs.com/ITtangtang/p/7967386.html

每个Spark executor作为一个YARN容器(container)运行。Spark可以使得多个Tasks在同一个容器(container)里面运行

1. Spark支持资源动态共享,运行于Yarn的框架都共享一个集中配置好的资源池

2. 可以很方便的利用Yarn的资源调度特性来做分类、隔离以及优先级控制负载,拥有更灵活的调度策略

3. Yarn可以自由地选择executor数量

4. Yarn是唯一支持Spark安全的集群管理器,使用Yarn,Spark可以运行于Kerberized Hadoop之上,在它们进程之间进行安全认证

我们知道Spark on yarn有两种模式:yarn-cluster和yarn-client。这两种模式作业虽然都是在yarn上面运行,但是其中的运行方式很不一样,今天就来谈谈Spark on YARN yarn-client模式作业从提交到运行的过程剖析

Spark运行模式:

在Yarn-client中,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。结束掉终端,相当于kill掉这个spark应用。

因为Driver在客户端,所以可以通过webUI访问Driver的状态,默认是 http://hadoop1:4040 访问,而YARN通过http:// hadoop1:8088访问

因为是与Client端通信,所以Client不能关闭。

客户端的Driver将应用提交给Yarn后,Yarn会先后启动ApplicationMaster和executor,另外ApplicationMaster和executor都 是装载在container里运行,container默认的内存是1G,ApplicationMaster分配的内存是driver- memory,executor分配的内存是executor-memory。同时,因为Driver在客户端,所以程序的运行结果可以在客户端显 示,Driver以进程名为SparkSubmit的形式存在。

应用的运行结果不能在客户端显示(可以在history server中查看),所以最好将结果保存在HDFS而非stdout输出,客户端的终端显示的是作为YARN的job的简单运行状况,下图是yarn-cluster模式

[图片上传失败...(image-107978-1592274191581)]

执行过程:

比以前的更多的理解:

(1)Application Master所在的NodeManager是Yarn随机分配的,不是在主节点上,下图是实验室集群上跑得一个Spark程序,tseg0是主节点,tseg1~tseg4是workers,IP10.103.240.29指的是tseg3:

(2)在上图还可以看出,executor的容器和AM容器是可以共存的,它们的封装都是容器;

(3)AM是Yarn启动的第一个容器;

(4)AM所在的NodeManager就是平常说的Driver端,因为这个AM启动了SparkContext,之前实验室说的“谁初始化的SparkContext谁就是Driver端”一直理解错了,以为这句话是相对于机器说的,但其实是相对于Cluster和Client的集群模式来说的(不知道其他模式Mesos、standalone是不是也是这样)。

(5)在Application提交到RM上之后,Client就可以关闭了,集群会继续运行提交的程序,在实际使用时,有时候会看到这样一种现象,关闭Client会导致程序终止,其实这个Application还没有提交上去,关闭Client打断了提交的过程,Application当然不会运行。

(1)YarnCluster的Driver是在集群的某一台NM上,但是Yarn-Client就是在RM的机器上;

(2)而Driver会和Executors进行通信,所以Yarn_cluster在提交App之后可以关闭Client,而Yarn-Client不可以;

(3)Yarn-Cluster适合生产环境,Yarn-Client适合交互和调试。

下表是Spark Standalone与Spark On Yarn模式下的比较

ubuntu卸载spark命令

最佳卸载命令(最好是切换到root)

apt-get remove packagename --purge &&apt-get autoremove --purge &&apt-get clean 

卸载程序(包括配置文件)、卸载依赖、删除/var/cache/apt/archives下所有安装包

最佳升级软件命令

apt-get update &&apt-get upgrade

apt常用命令

apt-cache show packagename 获取包的相关信息,如说明、大小、版本等

apt-cache depends packagename 了解使用依赖

apt-cache rdepends packagename 是查看该包被哪些包依赖

apt-get install packagename 安装包

apt-get install package=version 指定安装版本

apt-get install packagename --reinstall 重新安装包

apt-get remove packagename --purge 卸载程序,包括删除配置文件等

apt-get update 更新源,更新 /etc/apt/sources.list里的链接地址

apt-get upgrade -u 升级程序(不包括依赖关系改变的) -u 完整显示列表

apt-get dist-upgrade 升级程序(包括依赖关系改变的并且重新组织依赖关系)

apt-get clean 删除安装包(节约硬盘空间,下次安装需要重新下载包,软件包位置:/var/cache/apt/archives/)

apt-get autoclean 删除已卸载的安装包(Ubuntu14.04测试发现没起作用)

apt-get autoremove 卸载依赖的程序


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11788215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存