云原生数据仓库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的连接,或给VPC提工单解决。

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

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

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

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

marmaray:
  adb:
    column_mapping:   
    username:         
    passward:        
    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:数据库用户名。
    • passward:用户名对应密码。
    • 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信息。Hadoop主机ip
      • 高可用节点:需要获取HDOOP_CONF_DIR等配置,详情请参见Hadoop
    • data_path:Parquet文件在Hadoop中的路径。
    • job_name:作业名称。

YAML配置文件样例:

marmaray:
  adb:
    column_mapping: a|b,c|d,e|f
    username: xiaoer
    possward: password
    port: 3306
    host: am-xxxx.aliyuncs.com
    database: test_db
    tablename: test_table
  Hadoop:
    yarn_queue: default
    fs.defaultFS: hdfs://172.123.123.123: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,这个参数为ture表示启用打通VPC功能。
    • spark.dla.eni.vswitch.id:Hadoop集群的交换机ID。
    • spark.dla.eni.security.group.id:Hadoop集群的安全组ID。
    • filemarmaray jar的路径。
    • files:YAML配置文件的路径。
  5. 运行参数配置完成后,点击执行按钮即可执行作业。