最近更新时间:2023.09.26 14:06:15
首次发布时间:2023.05.17 14:27:25
Assume Role 不需要您显性的将自己账号 AK/SK 配置进集群,集群在运行过程中会自动通过 IAM 获取临时身份凭据。
前置条件
开通火山引擎 E-MapReduce(EMR)服务,且创建EMR集群。详见创建集群。
开通对象存储服务 TOS 服务,且创建 TOS 桶。详见:TOS快速入门。
创建 EMR 集群时,其他设置 > 高级设置 > 集群角色,选择的集群角色确保需有 TOS 的权限:
说明
使用 TOS
可直接在 EMR 集群中使用 TOS 服务,例如可使用 HDFS 命令:
hadoop fs -ls tos://您的bucket name/
列出 TOS 桶内的文件,如果需要在计算引擎,例如 Hive 中以表的形式处理 TOS 内的数据,可以在创建 Hive 表的时候将 location 字段值设置成 TOS 地址,即可分析 TOS 的数据,例如:
CREATE EXTERNAL TABLE `palmplay_log_pv_csv`( `meta_id` STRING COMMENT 'from deserializer', `brand` STRING COMMENT 'from deserializer', `channel` STRING COMMENT 'from deserializer', `countrycode` STRING COMMENT 'from deserializer') PARTITIONED BY (dt String) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' STORED AS TEXTFILE LOCATION 'tos://您的tos bucket name/';
对于 EMR 内的任何组件,您均可以 tos:// 开头的地址去消费 TOS 的数据,关于更多引擎使用 TOS的内容,请查看对应的引擎文档。
静态 AK/SK 会将永久的身份信息记录在集群的配置文件中,不方便管理。
前置条件
开通 EMR 服务,且创建EMR集群。详见:创建集群。
开通 TOS 服务,且创建 TOS 桶。详见:TOS快速入门。
通过 IAM 访问控制 > 密钥管理获取 Access Key ID 和 Secret Access Key。详见:访问秘钥。
在 EMR 集群详情页的服务列表 > HDFS > 服务参数 > 添加自定义参数配置中给 core-site 新增如下自定义参数:
fs.tos.access-key-id=您的AK fs.tos.secret-access-key=您的SK
如果您的 EMR 版本为 Hadoop3 系列,且版本号小于 3.2.1(不包含),或者为 Hadoop2 系列,且版本号小于 2.2.0(不包含),请使用如下方式配置:
fs.tos.access.key=您的Access Key ID fs.tos.secret.key=您的Secret Access Key
如果您想针对不同 bucket 使用不同的认证密钥,可使用如下配置:
fs.tos.bucket.您的bucket.access.key=您的Access Key ID fs.tos.bucket.您的bucket.secret.key=您的Secret Access Key
使用 TOS
可直接在 EMR 集群中使用 TOS 服务,例如可使用 HDFS 命令:
hadoop fs -ls tos://您的bucket name/
列出 TOS 桶内的文件,如果需要在计算引擎,例如 Hive 中以表的形式处理 TOS 内的数据,可以在创建 Hive 表的时候将 location 字段值设置成 TOS 地址,即可分析 TOS 的数据,例如:
CREATE EXTERNAL TABLE `palmplay_log_pv_csv`( `meta_id` STRING COMMENT 'from deserializer', `brand` STRING COMMENT 'from deserializer', `channel` STRING COMMENT 'from deserializer', `countrycode` STRING COMMENT 'from deserializer') PARTITIONED BY (dt String) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' STORED AS TEXTFILE LOCATION 'tos://您的tos bucket name/';
对于 EMR 内的任何组件,您均可以 tos:// 开头的地址去消费 TOS 的数据,关于更多引擎使用 TOS 的内容,请查看对应的引擎文档。
前置条件
export TOS_ACCESS_KEY_ID=您的Access Key ID export TOS_SECRET_ACCESS_KEY=您的Secret Access Key export ENV_TOS_SESSION_TOKEN=您的Token
在当前 shell 上下文中使用 export 关键字将对应的 AK/SK 通过环境变量的方式注入。
使用 TOS
可直接在 EMR 集群中使用 TOS 服务,例如可使用 HDFS 命令:
hadoop fs -ls tos://您的bucket name/
列出 TOS 桶内的文件。
由于火山 EMR 默认集成了 Proton,且已经在相关组件开启,您无需做额外配置,可通过修改 core-site.xml 配置文件,对参数进行调优设置,具体的参数内容请参考 Proton 概述 的参数调优部分。
请参考 Proton 发行版本 中的版本信息,选择您对应的 Proton 版本,下载对应的 Proton 包,放入 HDFS 安装目录下的 share/hadoop/hdfs/ 中。
修改 core-site.xml,新增如下内容:
<configuration> <!--Required properties--> <!--Filesystem implementation class for TOS--> <property> <name>fs.AbstractFileSystem.tos.impl</name> <value>io.proton.tos.TOS</value> </property> <property> <name>fs.tos.impl</name> <value>io.proton.tos.TOSFileSystem</value> </property> <property> <name>fs.tos.endpoint</name> <value>http://tos-cn-beijing.volces.com</value> </property> <!--Optional properties--> <!--Job Commiter implementation class--> <property> <name>mapreduce.outputcommitter.factory.class</name> <value>io.proton.commit.CommitterFactory</value> <description>The job committer implementation class accelerate read and write data to TOS object storage via MPU instead of rename.</description> </property> <property> <name>fs.tos.credentials.provider</name> <value>io.proton.common.object.tos.auth.DefaultCredentialsProviderChain</value> </property> <!-- Credential provider mode 2: static AK/SK for all buckets --> <property> <name>fs.tos.credentials.provider</name> <value>io.proton.common.object.tos.auth.SimpleCredentialsProvider</value> </property> <property> <name>fs.tos.access-key-id</name> <value>yourAk</value> </property> <property> <name>fs.tos.secret-access-key</name> <value>yourSk</value> </property> <!--TOS Client configuration--> <!--we can overwrite these properties to optimize TOS read and write performance--> <property> <name>fs.tos.http.maxConnections</name> <value>1024</value> </property> </configuration>
请参考 Proton 发行版本 中的版本信息,选择您对应的 Proton 版本,下载对应的 Proton 包,放入 HDFS 安装目录下的 share/hadoop/hdfs/ 中。
Hadoop2 下的配置与 Hadoop3 相同,请参考 Hadoop3 关于 Job committer 的配置,由于开源 Hadoop2 中的 HDFS 默认不支持外部 Job Committer 接口,因此如果要使用 JobComitter,需要下载火山修改过后的 HDFS 依赖包。具体的下载方式,您可通过提工单的方式联系 EMR 技术同学进行支持。
自建集群参数调优与火山 EMR 相同,请参考使用 Proton 概述-参数调优。
如果您在本地开发类似代码,需要调试测试 TOS 且使用 Committer,可下载对应的 Job committer bundle 依赖包,放入工程根目录,再您的 pom.xml 中新增:
<dependency> <groupId>io.proton/groupId> <artifactId>proton-hadoop您的Hadoop版本-bundle</artifactId> <version>1.1</version> <scope>system</scope> <systemPath>${project.basedir}/Name_Your_JAR.jar</systemPath> </dependency>