Gateway主要用于向计算集群提交任务和进行安全隔离。为了方便部署Gateway环境,E-MapReduce提供了名为EMR-CLI的工具,它基于阿里云ECS来创建实例并部署Gateway环境。当您创建了DataLake、DataFlow或OLAP类型的集群时,可以使用本文档来部署Gateway环境。
前提条件
已经在E-MapReduce中创建了业务场景为数据湖(DataLake)、实时数据流(DataFlow)或数据分析(OLAP)场景的计算集群,且计算集群状态为运行中。创建集群详情请参见创建集群。
使用限制
- 本文档仅适用于数据湖集群(DataLake)、实时数据流集群(DataFlow)和数据分析集群(OLAP)的Gateway环境部署。 - 对于已存在的Hadoop集群和Kafka集群的Gateway环境部署,详情请参见创建Gateway集群。 说明- 只有在2022年12月19日17点(UTC+8)之前创建过Hadoop或Kafka集群的账号,之后才允许继续创建这两种类型的集群。若账号在2022年12月19日17点(UTC+8)之前未曾创建过这两种集群,之后也无法进行创建。 
- 请勿使用EMR集群的ECS实例作为Gateway机器,以免影响计算集群运行环境。 
- EMR-CLI在部署Gateway客户端时采用覆盖安装模式。如果您已在ECS中部署了Gateway,则重新部署时会覆盖旧的客户端,并在同一目录下安装新的客户端。 
- 目前支持该方式部署Gateway的服务有HDFS、YARN、HBase、HIVE、SPARK2、SPARK3、JINDOSDK 、FLINK 、SQOOP、IMPALA 、PRESTO 、HUDI 、ICEBERG 、TEZ和DELTALAKE。 
首次部署Gateway环境
- 在ECS控制台创建实例,详情请参见自定义购买实例。 说明- 创建的ECS实例可以不具备公网访问能力。 - 相关参数推荐如下。 - 参数 - 说明 - 地域及可用区 - 必须与EMR集群所在地域和可用区一致。 - 镜像 - 必须与EMR实例的系统匹配。 - 系统盘 - 推荐使用ESSD云盘,不小于60 GiB。 - 网络 - 必须与EMR集群VPC一致。 - 安全组 - 必须与EMR集群的Master实例组安全组一致,保证ECS实例与EMR集群的网络互通。 
- 构建EMR Gateway专用的ECS RAM角色。 - 使用RAM管理员登录RAM控制台。 
- 在左侧导航栏,选择。 
- 在角色页面,单击创建角色。 
- 在创建角色面板中,选择信任实体类型为云服务,信任主体名称为云服务器ECS,单击确定。 
- 填写角色名称(例如ECSForEMRGatewayRole),然后单击确定。 
 
- 为RAM角色授权。 - 在权限管理页签,单击新增授权。 
- 在新增授权面板中,选择系统策略中的AliyunEMRFullAccess、AliyunOSSFullAccess和AliyunDLFFullAccess,单击确认新增授权。  
- 单击关闭。 
 
- 授予ECS实例RAM角色。 - 登录ECS管理控制台。 
- 在左侧导航栏,选择。 
- 在顶部菜单栏左上角处,选择地域。 
- 找到新建的ECS实例,选择。 
- 在弹窗中,选择ECSForEMRGatewayRole角色,单击确定。 
 
- 连接ECS实例,详情请参见连接ECS实例。 
- 执行以下命令,安装EMR-CLI。 - regionId=`curl http://100.100.100.200/latest/meta-data/region-id`; curl https://ecm-repo-${regionId}.oss-${regionId}-internal.aliyuncs.com/emrcli/emrcli.sh -o /tmp/emrcli.sh; chmod 755 /tmp/emrcli.sh; sh /tmp/emrcli.sh install ${regionId}- 安装成功会返回以下信息。 - install emrcli success
- 执行以下命令,部署EMR Gateway客户端。 - emrcli gateway deploy \ --clusterId <ClusterId> \ --appNames <ApplicationName>- 您需要根据实际情况修改以下参数。 - 参数 - 是否必选 - 描述 - clusterId - 是 - 在EMR上已创建集群的集群ID。 - appNames - 否 - 应用名称。有多个应用时,使用英文逗号(,)隔开,例如, - HDFS,YARN。- 未指定该参数时,默认为集群所有支持的客户端应用,例如Hive和HDFS。 - 部署成功会返回以下信息。 - deployGateway success重要- Gateway安装后,系统环境变量中的 - JAVA_HOME会调整为- /usr/lib/jvm/java-1.8.0。您可以在/etc/profile.d/emr_env.sh文件中修改,但修改后可能影响Gateway功能,因此请谨慎操作。
- 重新登录ECS实例,使得系统环境变量生效。 
- 可选:配置Gateway节点的域名解析。 重要- Gateway包含Spark服务时须执行该步骤。 
管理Gateway环境
Gateway创建完成后,如果Gateway关联的计算集群进行了服务的新增或服务配置的更改,您可以通过以下命令更新客户端组件或同步最新配置。
更新客户端组件
当计算集群服务新增时,通过EMR CLI在Gateway上新增对应的客户端。
命令和初次部署基本相同,只需在appNames参数中注明对应新增的应用名称,已安装应用不会受到影响。
emrcli gateway deploy \
  --clusterId <ClusterId> \
  --appNames <ApplicationName>更新成功后返回以下信息。
deployGateway success同步EMR集群修改后的配置
通过EMR CLI同步EMR集群修改后的应用配置(例如core-site.xml等)到Gateway客户端。
同步配置时会覆盖Gateway上的配置,因此请谨慎操作。
emrcli gateway refreshConfigs \
  --clusterId <ClusterId> \
  --appNames <ApplicationName>同步成功后返回以下信息。
refreshConfiguration success管理EMR-CLI
查看EMR CLI版本
您可以通过以下命令来查看EMR CLI的版本信息。
emrcli version返回以下类似信息。
2.0.0升级EMR CLI
重新执行首次部署Gateway环境中安装EMR CLI的步骤,会自动升级至最新版本。
常见问题
Q:如何切换计算集群?
A:切换计算集群的步骤如下:
- 使用 - -mv命令手动备份旧集群(切换前集群)中的文件,包括- /opt/apps目录、- /etc/taihao-apps目录以及- /etc/profile.d/yarn.sh文件,以防止数据丢失。
- 重新执行本文中的操作,进行计算集群的重新部署。 
 > 实例设置 > 授予/收回RAM角色
 > 实例设置 > 授予/收回RAM角色