spark提交到yarn_0812-如何获取CDSW上提交Spark作业的真实用户

异常描述

在一个CDSW环境中,由于其中一个租户经常提交大型Spark作业将YARN上租户所在的资源池资源用到95%以上,从而影响到同一租户下其他用户提交作业的运行。这种情况下我们没办法直接找到这些大型作业的实际提交人,是因为我们在为CDSW做多租户配置的时候会将登录CDSW的某一批用户统一绑定到同一个租户下(这样设计的目的主要是为了简化YARN的租户管理,而不用为每个用户创建资源池队列),所以导致在YARN的界面上看到的都是同一个租户,而无法对应到实际CDSW的用户以及这个人提交的大型作业。本文主要描述通过修改Spark的配置来将作业的实际提交人的用户名展示到Spark UI,非CDSW的YARN的多租户管理也会碰到类似问题。

异常解决

1.登录CM界面,进入Spark2的实例界面,将Gateway角色分组,将CDSW所在主机的Gateway角色分到另外的组

865339f68a7632b8b20ce6f86ac077d4.png
97d4e2d4f30b5c0d550e148adad71480.png
5fd8ffe91e7ec65ec8e89d917d665fe7.png
974b042f1f27683ba007ae61c878448b.png
ac0ac172a64ab89f33b816fd95735126.png

2.进入Spark2的配置页面,修改“spark-conf/spark-env.sh 的 Spark 客户端高级配置代码段(安全阀)”这一参数,选择编辑单个值,修改CDSW Gateway角色组的配置,填入如下内容:

SPARK_CONF=/home/cdsw/spark-defaults.confif [ ! -f "$SPARK_CONF" ]; then  touch "$SPARK_CONF"fistr=`cat $SPARK_CONF | grep spark.app.real.username`if [ -z "$str" ];then  echo -e "spark.app.real.username=${GIT_AUTHOR_NAME}" >> $SPARK_CONFfi
91c9b9e1b2fd12bdd4731d596a5ac850.png

3.修改完配置后点击“保存更改”,根据提示重启相关服务(此步骤会涉及到CDSW服务重启)

8696d108ed4f4b5baebe32885e14fc32.png

验证

1.使用user1用户登录CDSW

603ffdaa6560a8fda92e7207f6b0216e.png

2.运行一个示例PySpark程序

72d0b9f93ffdf42b65d44a430e168a53.png

3.在SparkUI上找到该作业,并点击“Environment”,可以看到参数列表中打印了提交Spark作业的用户

b5813ab93c6cb4a1c317a20de51173c5.png

总结

1.该方式是将CDSW上登录的实际用户以Spark参数的形式带到Spark作业中,具体做法是在CDSW上的Session启动时自动将参数写入到Project下的spark-defaults.conf文件中,写入到此配置文件中参数能够在SparkUI上直接看到。

2.针对CDSW上的每个Project,在修改Spark配置重启CDSW之后的首次Session时,会将实际提交人的用户名这一参数自动写入 spark-defaults.conf文件中,但是在首次Session中提交的Spark作业里该参数不会生效,需要重启启动Session才能让参数生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值