您好,登錄后才能下訂單哦!
如何進行多次修改CDH集群關聯的Kerberos域后Spark無法正常獲得短名稱映射的問題排查,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
環境:
CDH 6.3.1
Oracle JDK 1.8.0_181
已開啟Kerberos
癥狀表現:
該集群曾經更換了關聯的Kerberos域名稱,由XY.COM.CN改為了XY.COM。
現在又重新進行了更換,由XY.COM重新改為了XY.COM.CN。
修改完成后,集群重啟,Cloudera Manager(以下簡稱CM)顯示一切正常。
但是在使用Spark的過程中,發現在非Kerberos服務端的節點,執行spark的命令行工具(包括spark-shell、spark-submit等),就直接報錯。提示獲取短名稱的規則不存在:
[main] util.KerberosName(KerberosName.java:getShortName(401)) - No auth_to_local rules applied to cloudera-scm/admin@XY.COM does not exist
解決過程:
從報錯信息來看,spark-shell仍然嘗試用之前的Kerberos域名來進行短名稱映射。
可以看到報錯信息中,getShortName方法還是會去找Kerberos域“XY.COM”對應的解析規則;然而現在這個Kerberos域XY.COM實際已經不存在,現在的規則是對應XY.COM.CN的,所以自然無法對cloudera-scm/admin@XY.COM應用有效的短名稱規則。
CDH中,spark的命令行工具都是默認讀取CM下發的配置文件,那么首先推測的情況,就有可能是集群關聯的Kerberos域修改后,CM沒有成功下發新的客戶端配置。
嘗試在CM界面刷新和重新部署各個服務的客戶端。但是沒有效果。還是會報同樣的錯誤。
此時推斷是CM本身在應對已經實施Kerberos安全的集群的Kerberos域修改時,下發客戶端配置的部分存在一些問題,導致沒有成功分發正確的配置文件。
那么我們必須找到一個能觸發涉及Kerberos主體映射相關配置文件下發的選項,修改后重新進行下發,讓正確的配置覆蓋目前節點上的客戶端配置文件。
打開CM,找到HDFS服務,找到配置項中的“將 Kerberos 主體映射到短名稱的其他規則”。
該選項本來是留給不符合標準Kerberos命名方式的主體自定義短名稱映射用的。正常情況下,只要是標準的Kerberos主體名稱形式(例如hive/manager1@XY.COM.CN,或者hive@XY.COM.CN),這個選項的默認值“DEFAULT”就能正確拿到用戶名(例如hive/manager1@XY.COM.CN會被最終映射為短名稱hive),不需要我們手工再指定。
因為HDFS是所有其他服務組件都要依賴的核心組件,我們通過這個選項的修改,肯定會觸發所有涉及認證的服務的客戶端部署。
填入自定義映射規則的內容,進行保存,這個自定義映射規則實際等同于“DEFAULT”的效果:
RULE:[1:$1@$0](.*@\XY.COM.CN)s/@\XY.COM.CN//RULE:[2:$1@$0](.*@\XY.COM.CN)s/@\XY.COM.CN//
點擊保存。提示重啟服務,這時勾選上重新部署客戶端。
重啟完成后,重新運行spark-shell,一切正常!問題解決。
看完上述內容,你們掌握如何進行多次修改CDH集群關聯的Kerberos域后Spark無法正常獲得短名稱映射的問題排查的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。