使用EMR-CLI自定义部署Gateway环境
Gateway主要用于向计算集群提交任务和进行安全隔离。E-MapReduce提供基于阿里云ECS部署Gateway环境的工具EMR-CLI,您可以灵活创建ECS实例并基于EMR-CLI快速部署Gateway环境。
前提条件
已经在E-MapReduce中创建了业务场景为新版数据湖(DataLake)、实时数据流(DataFlow)或数据分析(OLAP)场景的计算集群,且计算集群状态为运行中。创建集群详情请参见创建集群。
使用限制
本文档仅适用于数据湖集群(DataLake)、实时数据流集群(DataFlow)和数据分析集群(OLAP)的Gateway环境部署。
Hadoop集群和Kafka集群的Gateway环境部署请参见创建Gateway集群。
请勿使用EMR集群的ECS实例作为Gateway机器,以免影响计算集群运行环境。
EMR-CLI部署Gateway客户端时采用覆盖安装模式,如果您在ECS已部署过Gateway,则重新部署时会在同目录下重复安装新的客户端。
目前支持该方式部署Gateway的服务有HDFS、YARN、HIVE、SPARK2、SPARK3、JINDOSDK 、FLINK 、SQOOP、IMPALA 、PRESTO 、HUDI 、ICEBERG 、TEZ和DELTALAKE。
首次部署Gateway环境
在ECS控制台创建实例,详情请参见自定义购买实例。
相关参数推荐如下。
参数
说明
地域及可用区
推荐与EMR集群所在地域和可用区一致。
镜像
推荐使用Alibaba Cloud Linux 2.1903 LTS 64位。
系统盘
推荐使用ESSD云盘,不小于60 GiB。
网络
必须与EMR集群VPC一致,且开启公网。
安全组
推荐与EMR集群的Master实例组安全组一致,保证ECS实例与EMR集群的网络互通。
实例RAM角色
建议设置,推荐与集群ECS实例角色相同。
为实例授予RAM角色。
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏左上角处,选择地域。
找到新建的ECS实例,选择 。
在弹窗中,选择AliyunECSInstanceForEMRRole角色,单击确定完成授予。
连接ECS实例,详情请参见连接ECS实例。
执行以下命令,安装EMR-CLI。
wget https://ecm-repo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/emrcli/emrcli.sh -O emrcli.sh;chmod 755 emrcli.sh; ./emrcli.sh install
说明通过公网方式安装EMR CLI,因此下载EMR-CLI安装包大约会消耗20 MB的公网流量。
安装成功会返回以下信息。
install emrcli success
可选:配置app_info.json文件。
您可以执行以下命令,提前将region和AccessKey信息维护在/usr/local/emrcli/目录下的app_info.json文件中,避免后续每次执行命令时输入region和AccessKey信息。
sudo vim /usr/local/emrcli/app_info.json
app_info.json文件内容示例如下。
{ "region": xxx, "access-key-id": xxx, "access-key-secret": xx }
您需要根据实际情况修改以下参数。
参数
是否必选
说明
region
是
地域ID。例如cn-hangzhou。
地域ID详情请参见服务接入点。
access-key-id
是
阿里云账号的Access Key。
access-key-secret
是
阿里云账号的Access Secret。
说明如果app_info.json文件中配置了AccessKey信息,命令行中也写入了AccessKey信息,则优先使用命令行中写入的AccessKey信息,否则使用app_info.json文件中配置的AccessKey信息。
执行以下命令,部署EMR Gateway客户端。
已配置app_info.json文件
emrcli gateway deploy \ --clusterId <ClusterId> \ --appNames <ApplicationName>
未配置app_info.json文件
emrcli gateway deploy \ --clusterId <ClusterId> \ --appNames <ApplicationName> \ --region <RegionId> \ --access-key-id <AccessKeyId> \ --access-key-secret <AccessKeySecret>
您需要根据实际情况修改以下参数。
参数
是否必选
描述
clusterId
是
在EMR上已创建集群的集群ID。
appNames
否
应用名称。有多个应用时,使用英文逗号(,)隔开,例如,
HDFS,YARN
。未指定该参数时,默认为集群所有支持的客户端应用,例如Hive和HDFS。
部署成功会返回以下信息。
deploy emr gateway sucess
重要Gateway安装后,系统环境变量中的
JAVA_HOME
会调整为/usr/lib/jvm/java-1.8.0
。您可以在/etc/profile.d/emr_env.sh文件中修改,但修改后可能影响Gateway功能,因此请谨慎操作。重新登录ECS实例,使得系统环境变量生效。
可选:配置Gateway节点的域名解析。
说明Gateway包含Spark服务时需要执行该步骤。
登录云解析DNS控制台。
添加Zone。
在权威Zone页签,单击添加Zone。
在弹出的对话框中,设置Zone名称为
emr-gateway.aliyuncs.com
,无需勾选子域名递归解析代理,并单击确定。
关联VPC。
单击新建Zone操作列的关联VPC。
在弹出的对话框中,单击继续关联VPC。
选择待关联VPC的地域和名称,单击确认。
说明选择待关联集群所在的VPC。
添加记录。
单击新建Zone操作列的解析设置。
在解析设置页面,单击添加记录。
在弹出的对话框中,设置以下参数,单击确定。
参数
说明
记录类型
使用默认的A。
主机记录
填写Gateway机器的hostname。例如,iZ2zea8r0aht2vzbqci****。
您可以通过命令
hostname
获取。记录值
填写Gateway机器的内网IP地址。
您可以在节点管理页面查看。
TTL值
使用默认值。
管理Gateway环境
Gateway创建完成后,如果Gateway关联的计算集群进行了服务的新增或服务配置的更改,您可以通过以下命令更新客户端组件或同步最新配置。
更新客户端组件
当计算集群服务新增时,通过EMR CLI在Gateway上新增对应的客户端。
命令和初次部署基本相同,只需在appNames参数中注明对应新增的应用名称,已安装应用不会受到影响。
已配置app_info.json文件
emrcli gateway deploy \ --clusterId <ClusterId> \ --appNames <ApplicationName>
未配置app_info.json文件
emrcli gateway deploy \ --clusterId <ClusterId> \ --appNames <ApplicationName> \ --region <RegionId> \ --access-key-id <AccessKeyId> \ --access-key-secret <AccessKeySecret>
更新成功后返回以下信息。
deploy emr gateway success
同步EMR集群修改后的配置
通过EMR CLI同步EMR集群修改后的应用配置(例如core-site.xml等)到Gateway客户端。
同步配置时会覆盖Gateway上的配置,因此请谨慎操作。
已配置app_info.json文件
emrcli gateway refreshConfigs \ --clusterId <ClusterId> \ --appNames <ApplicationName>
未配置app_info.json文件
emrcli gateway refreshConfigs \ --clusterId <ClusterId> \ --appNames <ApplicationName> \ --region <RegionId> \ --access-key-id <AccessKeyId> \ --access-key-secret <AccessKeySecret>
同步成功后返回以下信息。
refresh emr gateway configs success
管理EMR-CLI
查看EMR CLI版本
您可以通过以下命令来查看EMR CLI的版本信息。
emrcli version
返回以下类似信息。
emrcli version: 1.0.0
升级EMR CLI
重新执行首次部署Gateway环境中安装EMR CLI的步骤,会自动升级至最新版本。