全部产品
Search
文档中心

大数据开发治理平台 DataWorks:EMR Hive数据整库离线同步至MaxCompute

更新时间:Nov 22, 2024

本文以阿里云EMR Hive离线同步写入MaxCompute场景为例,为您介绍如何一次性把EMR Hive整个数据库的数据离线同步至MaxCompute。

背景信息

Hive是基于Hadoop的一个数据仓库工具,用来进行数据的提取、转化、加载,可以存储、查询和分析存储在Hadoop中的大规模数据。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。数据集成支持从Hive同步数据到其他目标端,也支持从其他目标端同步数据到Hive。

添加数据源

新建MaxCompute数据源

新增MaxCompute数据源。详情请参见创建MaxCompute数据源

新建Hive数据源

在DataWorks数据源管理页面,单击新建数据源,根据界面提示手动添加Hive数据源。Hive数据源包括阿里云实例模式连接串模式CDH模式三种类型,若您配置的数据源为阿里云EMR,推荐您使用阿里云实例模式配置数据源;若您配置的数据源非阿里云EMR,您可以使用连接串模式配置数据源;若您的项目空间配置了CDH引擎,您可以通过CDH模式配置数据源。详情请参见配置Hive数据源

准备独享数据集成资源组并与EMR Hive网络连通

在进行数据同步前,需要完成您的独享数据集成资源组和数据源的网络连通,详情请参见配置网络连通

  • 如果您的独享数据集成资源组和EMR数据源属于同一地域,可使用同地域VPC内网连通独享资源组和数据源。实现网络连通需要执行:步骤1 新增专有网络绑定和自定义路由

  • 如果您的独享数据集成资源组和数据源属于不同地域,可使用公网连通独享资源组和EMR数据源。此时需要确保EMR安全组针对独享资源组所在网段放行集群端口(一般包括10000、9093、8020等端口),详情请参见:步骤2 EMR 集群安全组策略放行

步骤1 新增专有网络绑定和自定义路由

说明

如果您使用公网连通独享资源组和数据源,可跳过此步骤。

  1. 新增专有网络绑定。

    1. 进入DataWorks管控台资源组列表页面,找到您要连通的独享数据集成资源组,单击资源组操作栏中的网络设置,进入资源组网络设置页面。

    2. 专有网络绑定页签下,单击新增绑定,在弹出的新增专有网络绑定窗口中,填写专有网络信息。

      • 专有网络:请选择EMR所在的专有网络。

      • 可用区、交换机:优先选择EMR所在的可用区和交换机;如果所在的可用区不可选择,则选择其他任意可用区和交换机。但您需要确保VPC网络跟数据源所在的VPC网络可连通。

      • 安全组:选择EMR集群的安全组,所选择的安全组需满足以下条件:

        • 安全组产品控制台查看安全组,访问规则的入方向允许放行EMR集群端口(一般包括10000、9093、8020等端口)。

        • 安全组的授权对象网段包含上一步所选择的交换机网段。

  2. 添加自定义路由。

    说明

    如果您在上述步骤中选择了数据源所在的可用区和交换机,可跳过此步骤。如果您选择了其他可用区和交换机,则需要参考以下指导进行自定义路由的操作。

    1. 进入DataWorks管控台资源组列表页面,选择您所在地域,找到您要连通的独享数据集成资源组,单击资源组操作栏中的网络设置,进入资源组网络设置页面。

    2. 专有网络绑定页签下,找到刚才绑定的专有网络记录,单击右侧的自定义路由

    3. 在弹出的自定义路由窗口,单击新增路由,填写路由信息,关键配置信息如下。

      • 目的VPC:选择EMR所在的地域和专有网络。

      • 目的Switch实例:选择EMR所在的交换机。

      单击生成路由

步骤2 EMR集群安全组策略放行

如果您使用公网联通独享资源组和EMR,则EMR集群安全组策略需要对独享资源组的EIP地址做相应的端口放行。安全组访问规则的入方向允许放行EMR集群访问端口(一般包括10000、9093、8020等端口)。

  1. 获取需要绑定的白名单IP。

    获取需要绑定的白名单IP,详情请参见添加白名单

  2. 您可以在EMR控制台,单击目标集群操作栏中的节点管理,进入节点管理页签。

    节点组名称/ID列单击打开目标节点组,在对应的节点中点击image图表,在节点详情页,将获取到的EIP地址,加入安全组。节点管理安全组

新建离线同步节点

  1. 创建业务流程。详情请参见:创建业务流程

  2. 创建离线同步节点。

    你可以通过以下两种方式创建离线同步节点:

    • 方式一:展开业务流程,右键单击数据集成 > 新建节点 > 离线同步

    • 方式二:双击业务流程名称,然后单击新建节点,将数据集成目录下的离线同步节点直接拖拽至右侧业务流程编辑面板。

  3. 根据界面提示创建离线同步节点。

配置同步网络链接

选择离线同步任务的数据来源和数据去向,以及用于执行同步任务的资源组,并测试连通性。

说明

若数据源与资源组网络不通,请参考界面提示或文档进行网络连通配置。详情请参见:网络连通方案

配置数据来源与去向

配置数据来源:Hive侧参数

配置离线同步节点的数据来源相关参数。本实践将Hive数据整库离线同步至MaxCompute,数据来源为Hive表,配置要点如下所示。hive

配置项

配置要点

数据源

选择上述新建的Hive数据源。

选择待同步的Hive表。建议对于要进行数据同步的表,Hive数据源开发和生产环境保证具有相同的表结构。

说明

此处会展示Hive数据源开发环境地的表列表和表结构,如果您的Hive数据源开发和生产环境的表定义不同,则可能出现任务在开发环境配置正常但提交生产运行后报错表不存在、列不存在的问题。

读取Hive方法

  • 基于HDFS文件读取数据:Hive Reader插件通过访问HiveMetastore服务,解析出您配置的数据表的HDFS文件存储路径、文件格式、分隔符等信息后,再通过读取HDFS文件的方式读取Hive中的表数据。

  • 基于Hive JDBC读取数据:Hive Reader插件通过Hive JDBC客户端连接HiveServer2服务读取数据。此方式支持通过where条件过滤数据,并直接通过SQL读取数据。

说明

HDFS方式效率更高,JDBC方式会生成MapReduce程序,同步效率较低。注意HDFS方式同步不支持配置条件过滤、不支持读取视图(VIEW)表,您可以根据自身需求选择相应的同步方式。

parquet schema

如果Hive表存储格式为parquet格式,需要配置对应的parquet schema。

其他参数保持默认即可。

配置数据去向:MaxCompute侧参数

配置离线同步节点的数据去向相关参数。本实践将Hive数据整库离线同步至MaxCompute,数据去向为MaxCompute表,配置要点如下所示。去向

配置项

配置要点

数据源

选择上述新建的MaxCompute数据源。

选择数据写入的MaxCompute表。

分区信息

如果要写入的表为分区表,则您可以填入分区列的取值,取值可以是固定值如ds=20220101,也可以是调度系统参数如ds=${bizdate}。当任务运行时,会自动根据调度配置做参数替换。

说明

分区信息会根据MaxCompute表的实际结构定义确定是否有该配置项以及配置项的表单数量,如果选择写入的是非分区表,则不会出现该配置项;如果选择写入的是分区表,则会根据分区表实际分区列个数和分区列名出现对应的表单项。

其他参数保持默认即可。

配置字段映射

选择数据来源和数据去向后,需要指定读取端和写入端列的映射关系。您可以选择同名映射、同行映射、取消映射或自动排版。

配置通道控制

设置任务同步并发数,可容忍的脏数据条数等。

配置调度属性

单击下一步进入配置调度页面,设置同步任务运行所需的调度相关属性。调度参数使用说明请参见数据集成使用调度参数的相关说明

  • 重跑属性。

    可根据业务需求设置不同的重跑策略,设置失败可重跑策略可以有效降低因网络抖动等偶发问题导致的任务失败。

  • 配置调度依赖。

    可根据业务需求设置不同的调度依赖。您可以通过设置依赖上一周期的本节点,保证本节点多个调度周期的任务实例是依次执行完成的,避免多任务实例同时调度运行。

说明

数据集成离线任务通过调度资源组下发至对应的数据集成任务执行资源组上运行,会产生调度相关费用,关于任务下发机制说明,请参见DataWorks资源组概述

试运行与提交执行任务

试运行

单击顶部的运行运行带参运行带参运行,可以试运行并查看同步结果是否符合预期。其中,带参运行可以针对任务配置中使用的调度系统参数进行替换。

提交和发布任务

试运行没有问题后,您可以依次单击保存提交按钮将同步任务提交到生产环境,如果是标准模式工作空间,您还需要单击发布按钮才能将同步任务发布至生产环境,后续离线同步任务将会周期性(分钟或小时或天)将Hive的数据写入MaxCompute的表中。提交发布的操作请参见发布任务

发布成功后,您可以在运维中心查看周期调度运行结果、进行补数据等操作。详情请参见周期任务基本运维操作