阿里云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目录 hadoop fs -ls oss://Ubx***J8k:Na6J*******BIN@bucket.oss-cn-hangzhou-internal.aliyuncs.com/dir Hive建表 hive> CREATE EXTERNAL TABLE people (id INT, name STRING) hive> ROW FORMAT DELIMITED hive> FIELDS TERMINATED BY ''/t' hive> LOCATION 'oss://Ubx***J8k:Na6J*******BIN@bucket.oss-cn-hangzhou-internal.aliyuncs.com/dir'; SPARK SHELL scala> val data = sc.textFile("oss://Ubx***J8k:Na6J*******BIN@bucket.oss-cn-hangzhou-internal.aliyuncs.com/dir") scala> data.count可以发现,
交互式查询中使用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服务,我们可以这么完成上面的操作:
查看OSS目录 hadoop fs -ls oss://bucket/dir Hive建表 hive> CREATE EXTERNAL TABLE people (id INT, name STRING) hive> ROW FORMAT DELIMITED hive> FIELDS TERMINATED BY ''/t' hive> LOCATION 'oss://bucket/dir'; SPARK SHELL scala> val data = sc.textFile("oss://bucket/dir") scala> data.count是不是很方便?MetaService本质上是一个HTTP服务,你也可以这么访问它:curl http://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”当前,E-MapReduce对MetaService的支持需要满足以下两个条件:
集群网络环境是VPC集群版本高于EMR-2.1.0有了这两个条件,你就可以在E-MapReduce控制台创建一个VPC集群。 在创建集群的“基础配置”-“权限设置”需要你手动授权一“AliyunEmrEcsDefaultRole”。这个只需要授权一次即可,如果已授权,会校验通过;如果还没有授权,则会校验失败,点击“前往授权”完成授权工作。
EMR-2.1.0版本的MetaService只支持OSS数据源。后续版本将陆续支持更多数据源,例如LogService等等。
