閱讀988 返回首頁    go 人物


MetaService__用戶指南_E-MapReduce-阿裏雲

E-MapReduce環境下提供MetaService服務。基於此服務,您可以在E-MapReduce集群中以免AK的方式訪問阿裏雲資源。

默認應用角色

默認地,您在創建集群時將需要向E-MapReduce服務授權一個應用角色(AliyunEmrEcsDefaultRole)。授權之後,您在E-MapReduce上的作業將可以無需顯式輸入AK來訪問阿裏雲資源。AliyunEmrEcsDefaultRole默認授予以下權限策略:

  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Action": [
  6. "oss:GetObject",
  7. "oss:ListObjects",
  8. "oss:PutObject",
  9. "oss:DeleteObject",
  10. "oss:ListBuckets",
  11. "oss:AbortMultipartUpload"
  12. ],
  13. "Resource": "*",
  14. "Effect": "Allow"
  15. }
  16. ]
  17. }

所以默認情況下,基於MetaService的作業將隻能訪問OSS數據。如果您想基於MetaService訪問其他阿裏雲資源,例如LogService等等,則需要給AliyunEmrEcsDefaultRole補充授予相應的權限。以上操作需要去RAM控製台完成。

注意: 當前metaservice服務隻支持OSS,LogService和MNS數據的免AK操作。請謹慎編輯,刪除默認角色,否則會造成集群創建失敗或者作業運行失敗。

自定義應用角色

大多數情況下,您隻需要使用默認應用角色或者修改默認應用角色即可。E-MapReduce同時支持您使用自定義的應用角色。在創建集群時,您既可以使用默認應用角色,也可以選擇自定義應用角色。如何創建角色並授權給服務,請參考RAM的相關文檔

訪問MetaService

MetaService是一個HTTP服務,您可以直接訪問這個HTTP服務來獲取相關Meta信息: 例如 “curl https://localhost:10011/cluster-region” 可以獲得當前集群所在Region。

當前MetaService支持以下幾類信息:

  • Region: “/cluster-region”
  • 角色名: “/cluster-role-name”
  • AccessKeyId:”/role-access-key-id”
  • AccessKeySecret:”/role-access-key-secret”
  • SecurityToken:”/role-security-token”
  • 網絡類型:”/cluster-network-type”

使用MetaService

基於MetaSerivce服務,我們可以在作業中免AK地訪問阿裏雲資源,這樣可以帶來兩個優勢:

  • 降低AK泄漏的風險。基於RAM的使用方式,可以將安全風險降到最低。需要什麼權限就給角色授予什麼權限,做到權限最小化。
  • 提高用戶體驗。尤其在交互式訪問OSS資源時,可以避免寫一長串的OSS路徑。

下麵示例幾種使用方式:

  1. I. Hadoop命令行查看OSS數據
  2. 舊方式: hadoop fs -ls oss://ZaH******As1s:Ba23N**************sdaBj2@bucket.oss-cn-hangzhou-internal.aliyuncs.com/a/b/c
  3. 新方式: hadoop fs -ls oss://bucket/a/b/c
  4. II. Hive建表
  5. 舊方式:
  6. CREATE EXTERNAL TABLE test_table(id INT, name string)
  7. ROW FORMAT DELIMITED
  8. FIELDS TERMINATED BY '/t'
  9. LOCATION 'oss://ZaH******As1s:Ba23N**************sdaBj2@bucket.oss-cn-hangzhou-internal.aliyuncs.com/a/b/c';
  10. 新方式:
  11. CREATE EXTERNAL TABLE test_table(id INT, name string)
  12. ROW FORMAT DELIMITED
  13. FIELDS TERMINATED BY '/t'
  14. LOCATION 'oss://bucket/a/b/c';
  15. III. Spark
  16. 舊方式: val data = sc.textFile("oss://ZaH******As1s:Ba23N**************sdaBj2@bucket.oss-cn-hangzhou-internal.aliyuncs.com/a/b/c")
  17. 新方式: val data = sc.textFile("oss://bucket/a/b/c")

最後更新:2016-12-19 19:03:59

  上一篇:go SSH 登錄集群__用戶指南_E-MapReduce-阿裏雲
  下一篇:go 開發準備___開發人員指南_E-MapReduce-阿裏雲