0812-5.16.2-如何獲取CDSW上提交Spark作業的真實用戶

異常描述



在一個CDSW環境中,由於其中一個租戶經常提交大型Spark作業將YARN上租戶所在的資源池資源用到95%以上,從而影響到同一租戶下其他用戶提交作業的運行。這種情況下我們沒辦法直接找到這些大型作業的實際提交人,是因爲我們在爲CDSW做多租戶配置的時候會將登錄CDSW的某一批用戶統一綁定到同一個租戶下(這樣設計的目的主要是爲了簡化YARN的租戶管理,而不用爲每個用戶創建資源池隊列),所以導致在YARN的界面上看到的都是同一個租戶,而無法對應到實際CDSW的用戶以及這個人提交的大型作業。本文主要描述通過修改Spark的配置來將作業的實際提交人的用戶名展示到Spark UI,非CDSW的YARN的多租戶管理也會碰到類似問題。


異常解決



1.登錄CM界面,進入Spark2的實例界面,將Gateway角色分組,將CDSW所在主機的Gateway角色分到另外的組


2.進入Spark2的配置頁面,修改“spark-conf/spark-env.sh 的 Spark 客戶端高級配置代碼段(安全閥)”這一參數,選擇編輯單個值,修改CDSW Gateway角色組的配置,填入如下內容:

SPARK_CONF=/home/cdsw/spark-defaults.conf

if [ ! -f "$SPARK_CONF" ]; then
  touch "$SPARK_CONF"
fi

str=`cat $SPARK_CONF | grep spark.app.real.username`

if [ -z "$str" ];then
  echo -e "\nspark.app.real.username=${GIT_AUTHOR_NAME}" >> $SPARK_CONF
fi


3.修改完配置後點擊“保存更改”,根據提示重啓相關服務(此步驟會涉及到CDSW服務重啓)


驗證



1.使用user1用戶登錄CDSW


2.運行一個示例PySpark程序


3.在SparkUI上找到該作業,並點擊“Environment”,可以看到參數列表中打印了提交Spark作業的用戶


總結



1.該方式是將CDSW上登錄的實際用戶以Spark參數的形式帶到Spark作業中,具體做法是在CDSW上的Session啓動時自動將參數寫入到Project下的spark-defaults.conf文件中,寫入到此配置文件中參數能夠在SparkUI上直接看到。


2.針對CDSW上的每個Project,在修改Spark配置重啓CDSW之後的首次Session時,會將實際提交人的用戶名這一參數自動寫入 spark-defaults.conf文件中,但是在首次Session中提交的Spark作業裏該參數不會生效,需要重啓啓動Session才能讓參數生效。

本文分享自微信公衆號 - Hadoop實操(gh_c4c535955d0f)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章