云原生数据仓库AnalyticDB MySQL版支持通过DLA导入Hadoop数据。本文介绍相关操作步骤。

前提条件

1.配置网络环境
DLA服务可购买在您的Hadoop或AnalyticDB MySQL的任意VPC内,故配置他们之间连通性首先需要将Hadoop和AnalyticDB MySQL的VPC网络打通,使Hadoop和AnalyticDB MySQL之间能够互相访问。
说明 验证是否打通可用一端ECS访问另一端ECS,如telnet命令等。无论是否互通,都需要将Hadoop交换机IP添加到AnalyticDB MySQL白名单中。
  1. 打通Hadoop和AnalyticDB MySQL的VPC网络。

    详情请参见建立VPC到VPC的连接

  2. 查看Hadoop集群交换机和安全组信息。

    登录E-MapReduce控制台,查看集群基础信息。在网络信息中查看Hadoop集群的交换机和安全组信息。

2.生成YAML配置文件
传输映射关系配置在YAML文件中,下面说明哪些信息需要写入YAML文件及如何获取这些信息。目前支持单个Hadoop Parquet文件到AnalyticDB MySQL单张表的数据传输服务。

YAML文件配置文件模版如下:

marmaray:
  adb:
    column_mapping:   
    username:         
    password:        
    port:            
    host:            
    database:       
    tablename:         
  Hadoop:
    yarn_queue:     
    fs.defaultFS:    
  hive:
    data_path:         
    job_name:       

参数说明:

  • 目的端AnalyticDB MySQL信息
    • column_mapping:列名映射。

      parquet文件schema对应字段和目标ADB数据库表字段名映射关系,映射关系用表示,映射对之间用,隔开。

      示例:

      Parquet文件schema有三个字段,分别为a、b、c,对应ADB表中a1、b1、c1三个字段。列名映射如下:

      a|a1,b|b1,c|c1
    • username:数据库用户名。
    • password:用户名对应密码。
    • port:数据库端口号。
    • host:数据库主机地址。
    • database:数据库名称。
    • tablename:表名称。
  • 源端Hadoop集群信息
    • yarn_queue:Hadoop集群yarn队列名。
    • fs.defaultFS:HDOOP_CONF_DIR。DLA无法自动获取用户Hadoop集群上HDOOP_CONF_DIR中的配置,所以需要您自行配置读取Hadoop相关的参数。分两种情况:
      • 非高可用节点:提供绝对路径名hdfs://<master_ip>:9000/path/to/file

        master_ip获取方式:

        1. 登录E-MapReduce控制台,单击导航栏中的主机列表
        2. 找到Master角色对应的IP信息。
      • 高可用节点:需要获取HDOOP_CONF_DIR等配置,详情请参见Hadoop
    • data_path:Parquet文件在Hadoop中的路径。
    • job_name:作业名称。

YAML配置文件样例:

marmaray:
  adb:
    column_mapping: a|b,c|d,e|f
    username: xiaoer
    password: password
    port: 3306
    host: am-xxxx.aliyuncs.com
    database: test_db
    tablename: test_table
  Hadoop:
    yarn_queue: default
    fs.defaultFS: hdfs://172.123.XX.XX:9000
  hive:
    data_path: /tmp/parquet
    job_name: testParquetToADB
3.上传YAML配置文件
生成好YAML配置文件后,请上传到OSS云存储空间中。

操作步骤

传输服务运行在DLA上,需拉取Marmaray JAR包并加载用户传输映射配置。用户只需要将传输映射配置和Marmaray jar运行模版放在OSS目录下,并将OSS地址填写在DLA运行参数中即可。
  1. 提交工单获取Marmaray JAR并上传至OSS云存储空间中。
  2. 登录DLA控制台,在左侧导航栏中单击Severless Spark > 作业管理进入作业编辑页面。
  3. 点击创建作业模板按钮。在创建作业对话框中输入文件名称文件类型父级目录并选择作业类型,单击确定
  4. 编辑作业。创建的作业出现在图示作业列表子菜单栏中。

    配置介绍

    DLA服务运行配置是JSON格式,示例模板如下:

    {
        "args": [
            "-c",
            "./<yaml配置文件名称>             
        ],
        "name": "<任务名称>",
        "className": "com.alibaba.analyticdb.marmaray.ParquetToADBJob",
        "conf": {
            "spark.driver.resourceSpec": "<规格{small、medium、large、xlarge}>",
            "spark.executor.resourceSpec": "<规格{small、medium、large、xlarge}>",
            "spark.executor.instances": "<实例个数>",
            "spark.dla.eni.enable": "<是否开启eni{true}>",
            "spark.dla.eni.vswitch.id": "<Hadoop集群交换机id>",
            "spark.dla.eni.security.group.id": "<Hadoop集群安全组id>",
        },
        "file": "oss://${oss-buck-name}/<marmaray jar路径>",
        "files": "oss://${oss-buck-name}/<yaml配置文件路径>"
    }

    参数说明:

    • name:为本次任务命名,方便在运行页面查看跟踪。
    • 参数名称 使用说明 对应社区Spark参数
      spark.driver.resourceSpec 表示Spark driver的资源规格,支持如下取值:
      • small:1核4 GB。
      • medium:2核8 GB。
      • large:4核16 GB。
      • xlarge:8核32 GB。
      spark.driver.cores以及spark.driver.memory
      spark.executor.resourceSpec 表示spark executor的资源规格,取值范围同spark.driver.resourceSpec spark.executor.cores以及spark.executor.memory
    • spark.executor.instances:执行器(executor)实例个数。
    • spark.dla.eni.enable:是否开启ENI,这个参数为true表示启用打通VPC功能。
    • spark.dla.eni.vswitch.id:Hadoop集群的交换机ID。
    • spark.dla.eni.security.group.id:Hadoop集群的安全组ID。
    • filemarmaray jar的路径。
    • files:YAML配置文件的路径。
  5. 运行参数配置完成后,点击执行按钮即可执行作业。