天天看點

嘗新阿裡雲E-MapReduce MetaService服務

阿裡雲e-mapreduce從emr-2.1.0版本鏡像開始,将在vpc叢集中提供metaservice服務。

從字面了解,metaservice服務提供使用者查詢叢集meta資訊。包括哪些meta資訊呢?e-mapreduce

目前主要提供以下幾種資訊:

叢集所在region

叢集角色accesskeyid

叢集角色accesskeysecret

叢集角色securitytoken

叢集角色名

叢集所屬網絡類型

這些資訊都可以用來做什麼呢?叢集所在region和叢集所屬網絡類型比較容易了解。我如果在杭州region建立叢集,那麼可以通過查詢metaservice獲知目前叢集處于“cn-hangzhou” region。我如果建立vpc叢集,那麼通過查詢metaservice可以獲知目前叢集網絡類型為vpc。這些都是小case。

角色屬性對叢集來說有什麼意義呢?往下看!

e-mapreduce從一開始就将oss作為雲上hadoop叢集的推薦存儲媒體(當然你也可以使用基于雲盤的hdfs)。我們這麼使用oss存儲:

可以發現,

互動式查詢中使用oss資料源還是比較繁瑣的,需要我們輸入一長串的ak資訊。當然,我們可以将

ak資訊寫到配置檔案中,但這種做法不夠靈活。

首先我們一般是不建議使用者直接使用ak的,最佳的實踐方式是在ram上建立子賬号或者角色,然後使用子賬号ak或者token來完成資源的操作和api的調用。

開發人員接觸到root賬号的ak,難免會存在洩露ak的風險。一旦洩露,造成的損失無法估量。

基于上述幾個考慮,e-mapreduce一直在研究一種更好地使用叢集的方式。這裡我們就要談到metaservice服務和叢集的角色屬性。解決這個問題的思路就是讓使用者在叢集上的操作和ak解綁。在e-mapreduce控制台送出作業或者登陸叢集運作作業,都不需要顯式提供ak。e-mapreduce将基于ram的角色功能,向使用者提供帶有token的角色ak。所有對資源的操作都可以使用角色ak。這可以帶來兩個優勢:

基于角色的思路可以讓我們為每個叢集定義專屬的權限範圍。例如,這個叢集的作業隻用到oss資源,那麼我們就限制角色的權限隻能通路oss。甚至,你可以限制這個叢集隻讀隻寫oss的某個目錄。所有的操作可以在ram控制台完成。

e-mapreduce會自動維護使用者的token不失效,保證長作業或者streaming類型作業。

有了metaservice服務,我們可以這麼完成上面的操作:

region: “/cluster-region”

角色名: “/cluster-role-name”

accesskeyid:”/role-access-key-id”

accesskeysecret:”/role-access-key-secret”

securitytoken:”/role-security-token”

網絡類型:”/cluster-network-type”

目前,e-mapreduce對metaservice的支援需要滿足以下兩個條件:

叢集網絡環境是vpc

叢集版本高于emr-2.1.0

emr-2.1.0版本的metaservice隻支援oss資料源。後續版本将陸續支援更多資料源,例如logservice等等。

目前隻提供vpc環境下的metaservice服務。

謹慎删除,編輯“aliyunemrecsdefaultrole”,可能會造成叢集建立失敗或者作業運作失敗。請在知

曉後果的前提下修改“aliyunemrecsdefaultrole”。