使用ranger+LDAP限制yarn權限時找不到使用者group

之前在[Hadoop使用LDAP Group]時研究了怎麼讓Hadoop去使用LDAP的認證跟group權限

後來架了一個hadoop cluster + apache ranger + LDAP去對使用者作限制
環境:
- HDP 2.4.2
- Hadoop 2.7
- Ranger 0.5
- CentOS 6.8

為了方便管理我在Ranger理面設定的權限都是用LDAP group為單位在管理,參照下面
https://cwiki.apache.org/confluence/display/RANGER/Ranger+authorization+and+auditing+for+Yarn
我將yarn的queue分成了spark, hive兩種,並將所有LDAP使用者分成dev1 group跟dev2 group
spark queue只能讓dev1 group使用,hive queue只能讓dev2 group使用

一開始測的時候蠻順利的,但是跑了一個月之後卻發現使用者偶爾會出現submit yarn job失敗的狀況
但又不是總是會出現,是偶爾才會失敗,尤其是越複雜的job越容易失敗
後來去翻了一下ResourceManager的log看到了一段類似如下訊息

>org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_xxxxxxxxxxxxxx to YARN : Failed to submit application applicationxxxxxxxxxxxxx5 submitted by user xxxx reason: No groups found for user xxxxxx

group找不到?? 怎麼會呢,後來試著測了一下大部分都會成功,但是偶爾就會出現group找不到的訊息然後submit yarn job失敗,我的hadoop group是同時設定Unix跟LDAP兩邊都找,雖說伺服器上沒有裝LDAP Client所以OS無法找到該使用者,但LDAP那邊不可能找不到阿,後來猜想可能是某些原因讓ResourceManager在某些時候無法透過LDAP找到user group,這可能是ranger或hadoop的bug。

後來想到Hadoop那邊同時有設定從Unix去找group,於是想了一個可行的解決方案
就是在ResourceManager那台伺服器上裝了LDAP Client讓OS可以找到LDAP User,也就是用id這個指令可以找到user
設定好之後暫時沒有在出現找不到group的訊息,使用者也可以很順的submit yarn job了

這邊做個紀錄

comments powered by Disqus