首页 开源大数据平台E-MapReduce 最佳实践 数据分析 使用EMR-CLI自定义部署Gateway环境

使用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环境

  1. 在ECS控制台创建实例,详情请参见自定义购买实例

    相关参数推荐如下。

    参数

    说明

    地域及可用区

    推荐与EMR集群所在地域和可用区一致。

    镜像

    推荐使用Alibaba Cloud Linux 2.1903 LTS 64位。

    系统盘

    推荐使用ESSD云盘,不小于60 GiB。

    网络

    必须与EMR集群VPC一致,且开启公网。

    安全组

    推荐与EMR集群的Master实例组安全组一致,保证ECS实例与EMR集群的网络互通。

    实例RAM角色

    建议设置,推荐与集群ECS实例角色相同。

  2. 为实例授予RAM角色。

    1. 登录ECS管理控制台

    2. 在左侧导航栏,选择实例与镜像 > 实例

    3. 在顶部菜单栏左上角处,选择地域。

    4. 找到新建的ECS实例,选择更多 > 实例设置 > 授予/收回RAM角色

    5. 在弹窗中,选择AliyunECSInstanceForEMRRole角色,单击确定完成授予。

  3. 连接ECS实例,详情请参见连接ECS实例

  4. 执行以下命令,安装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
  5. 可选:配置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信息。

  6. 执行以下命令,部署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功能,因此请谨慎操作。

  7. 重新登录ECS实例,使得系统环境变量生效。

  8. 可选:配置Gateway节点的域名解析。

    说明

    Gateway包含Spark服务时需要执行该步骤。

    1. 登录云解析DNS控制台

    2. 添加Zone。

      1. 权威Zone页签,单击添加Zone

      2. 在弹出的对话框中,设置Zone名称为emr-gateway.aliyuncs.com,无需勾选子域名递归解析代理,并单击确定

    3. 关联VPC。

      1. 单击新建Zone操作列的关联VPC

      2. 在弹出的对话框中,单击继续关联VPC

      3. 选择待关联VPC的地域和名称,单击确认

        说明

        选择待关联集群所在的VPC。

    4. 添加记录。

      1. 单击新建Zone操作列的解析设置

      2. 解析设置页面,单击添加记录

      3. 在弹出的对话框中,设置以下参数,单击确定

        参数

        说明

        记录类型

        使用默认的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的步骤,会自动升级至最新版本。

阿里云首页 开源大数据平台 E-MapReduce 相关技术圈