Hive数据如何同步到MaxCompute之实践讲解

简介: 本次分享主要介绍 Hive数据如何迁移到MaxCompute。MMA(MaxCompute Migration Assist)是一款MaxCompute数据迁移工具,本文将为大家介绍MMA工具的功能、技术架构和实现原理,再通过实际操作MMA,演示将Hive数据迁移到MaxCompute。

摘要:本次分享主要介绍 Hive数据如何迁移到MaxCompute。MMA(MaxCompute Migration Assist)是一款MaxCompute数据迁移工具,本文将为大家介绍MMA工具的功能、技术架构和实现原理,再通过实际操作MMA,演示将Hive数据迁移到MaxCompute。

演讲嘉宾简介:阿里云智能产品专家-云花

精彩视频回顾:
Hive数据如何同步到MaxCompute

以下内容根据演讲视频以及PPT整理而成。
本次分享主要围绕以下两个方面:
一、MMA功能介绍、技术架构和原理
二、MMA数据迁移操作演示

一、MMA功能介绍、技术架构和原理
1.MMA功能介绍
MMA主要覆盖的场景包括批处理,存储,数据集成,作业编排及调度。MMA提供迁移评估分析功能,自动化生成迁移评估报告。迁移评估报告会报告出从Hive表的数据结构到MaxCompute的数据结构之间是否有数据类型映射兼容性问题,如语法问题。MMA支持自动化数据迁移功能,支持批量建表以及数据自动化批量迁移。另外,MMA还支持作业语法分析,可以检查Hive SQL能否直接运行在MaxCompute里。MMA还支持工作流迁移,对主流数据集成工具Sqoop进行作业的迁移转换,并自动创新DataWorks数据继承作业。
_1

2.MMA迁移服务架构
MMA迁移服务架构如下图。左侧是客户Hadoop集群,右侧的是Aliyun 大数据服务,主要是DataWorks和MaxCompute。MMA工具会跑在客户的Hadoop集群上,客户的服务器需要能够访问Hive Server。在机器上部署MMA客户端工具时会自动化获取Hive Meta里的数据,既将Hive的Meta数据从MySQL中读出来,还可以将Meta信息自动转换成MaxCompute DDL,然后用DDL在MaxCompute中批量创建表,批量拉起数据同步的作业,向Hive Server并发提交Hive SQL作业。基于Hive SQL作业调用一个UDF,UDF里面会集成Tunnel的SDK,基于Tunnel将数据批量写到MaxCompute的表中。作业和工作流的迁移也是基于MMA客户端工具自动发现的Hive Meta数据,做工作流的作业检查,包括把工作流的组件中的工作流的配置批量转换成DataWorks工作流的配置,直接生成DataWorks工作流。以上步骤完成了数据到作业到工作流的迁移。最后一步是迁移完成后需要基于MaxCompute和DataWorks架构对接业务系统。
_1

3.MMA Agent技术构架和原理
通过客户端和服务端,MMA可支持数据和工作流的批量迁移。安装在客户服务器上的MMA客户端工具包含下图中的四个能力。首先可自动获取Hive Metadata,并自动创建生成DDL和UDTF,而且可批量创建表和批量Hive数据迁移。相应的,MMA有四个主要组件。Meta Carrier工具自动将Hive Meta信息提取出来,在本地生成Hive Meta结构。Meta Processor是基于Meta Carrier工具产出的结果,基于Hive Meta数据批量转成MaxCompute的DDL,既批量转成建表语句和数据类型的转换。此外,MMA客户端工具还内置了ODPS Console,基于ODPS Console将Meta Processor产出的ODPS DDL在MaxCompute上批量创建表。最后基于Data Carrier批量创建Hive SQL作业。每个Hive SQL作业相当于多个表或者多个分区并行的数据的同步。
_1

二、MMA数据迁移操作演示
1.环境准备
如下图所示,MMA环境运行要求是jdk1.6版本以上,Python3+。另外,运行MMA的机器,通过Hive Client提交Hive SQL的作业。机器还需要可以访问Hive Server,并连接MaxCompute服务。下图右侧的场景案例是客户在基于MMA做同步数据时发现的问题。例子中客户有自己的IDC,在阿里云有自己的ECS,客户从IDC拉一条专线访问阿里云。在安装MMA之前,客户可以从ECS上直接访问MaxCompute,但IDC里的机器不能访问MaxCompute。此时需要在这条专线上增加VBR路由配置,既在边界路由上增加一个配置。配置之后可以打通从IDC到ECS,甚至到MaxCompute服务的网络访问。
_1

2.下载和编译工具包
下载编译工具包有两种方法。一是下载下图中编译好的工具包。此外,由于用户的Hive版本各不相同,用户可以根据MMA官网上提供的GitHub地址下载源码,拉到本地进行编译。
_1

3.MMA Agent操作说明
使用meta-carrier采集Hive Metadata:机器提前安装好Hadoop环境,本地有Hive Server。提前下载客户端的odps-data-carrier.zip包,并在本地解压。解压完成后会显示下图所示目录。
bin目录下有几个文件,首先是MMA的几个核心角色:meta-carrier、meta-processor、odps_ddl_runner用于批量创建表,hive_udtf_sql_runner用于同步数据。libs目录下是工具依赖的jar包和库。 res目录的console目录下的bin目录包含odpscmd,是MMA客户端的工具,odps_config,ini配置文件。
本地Hive上面有三个库,其中dma_demo库下有五个表,可将五个表自动批量同步到MaxCompute上。首先需要在MaxCompute上创建一个project,既在DataWorks控制台创建一个空Project。打开新的命令窗口,在本地运行的ODPS Command客户端工具,连接新创建的空的project。在已经安装了MMA Hive的机器上运行,解压,进入odps-data-carrier工具的目录。执行 bin/meta-carrier -h查看其参数说明,-d表示用户可以指定数据库,通过指定数据库提取meta数据,若不指定,会将Hive下所有的库的meta都拉取出来。-o指定输出目录,-t参数指定表,-u参数指定uri地址,即Hive Meta的地址。开始测试时首先指定地址,因为是thirft地址,所以用thirft协议连接。此外由于Hive Meta在本地,所以只需要将dma_demo库的meta拉取出来,加-o参数,指定目录。通过tree meta可以查看meta目录结构。meta目录下生成和数据库同名的dma_demo目录。dma_demo目录下的json文件是描述数据库meta信息的文件。partition_meta里面的两个表是分区表,table_meta的表是非分区表,会把所有表集的meta信息写在下面。
_1

使用network-measurement-tool:网络测量工具network-measurement-tool用于网络测速,测量Hive集群到MaxCompute各region的网络连通质量。通过网络测速可以知道网络传输速度和大概的数据量,根据网络传输速度预估数据传输时间。network-measurement-tool工具连接MaxCompute上所有region的节点ENDPOINT地址,由最快到最慢做测速排序。下图中执行结果最快的是HANGZHOU,连接时间为51ms,最慢的是一个海外region KUALA_LUMPUR,连接时间为3393ms。
_1

使用sql-checker检查Hive SQL是否可以直接在MaxCompute上执行:sql-checker可用于检查Hive SQL语法兼容性,判断SQL能否直接在MaxCompute上运行。其参数input要指定meta目录,指定缺省project和sql参数。若执行结果返回其兼容性OK,即此sql语句可以直接在MaxCompute上运行。
_1

使用meta-processor生成ODPS DDL和Hive UDTF SQL:通过第一步已经拉出了Hive Meta库的metadata信息。下一步需要将Hive Meta转换成MaxCompute DDL。使用bin/meta-processor -h查看参数。-i即input,-o是output目录。bin/meta-processor的-i就是第一个命令的输出结果,代表meta的目录,存放的是carrier拉出的Hive Meta数据。指定-i meta -o output。将bin/meta-processor运行结果放入output中。生成output目录。tree output可查看结构。output目录下也会生成一个以MaxCompute的project命名的dma_demo目录。dma_demo目录下面有一个hive_udtf_sql目录,目录下面的.sql用于批量数据迁移。还包含odps_ddl目录,用于后续批量创建表,目录下的.sql是创建表的语句。
_1

使用odps_ddl_runner.py批量创建表和分区:既然DDL已经生成,下一步需要批量创建表。批量创建表依赖MaxCompute的命令行工具(客户端工具)。工具包一级目录下的odps_config包含几个基本参数,其中project_name、access_id、access_key、end_point为必填项。配置完成可以开始批量创建表。批量创建表工具要执行Python命令,python36 bin/odps_ddl_runner.py -h。参数中input参数由meta processer自动生成,odpscmd参数不是必须指定的,它会默认找到所在目录,不需要单独配置参数。创建表过程要拉起odps_command工具,基于客户端工具来向MaxCompute提交建表语句。通过show table查看是否创建了五个表,再查看分区是否也建好。若Hive和MaxCompute上的分区创建完成,两边的表结构也应相同。
_1

使用hive_udtf_sql_runner.py迁移数据:通过命令行python36 bin/hive_udtf_sql_runner.py开始读output目录下的.sql语句。查看python36 bin/hive_udtf_sql_runner.py命令的参数,Input_all会批量迁移output下所有数据。若只想做单表的迁移或者单分区的迁移,需要使用input_single_file参数。parallelism参数表示并行度。数据迁移完成后在MaxCompute中查看表中是否有数据。对比MaxCompute中的数据和Hive中对应表的数据。若其size相同,Hive和MaxCompute中对应表的数据相同,说明已经完整迁移数据。
_1

进阶功能1:仅生成指定的database或table的metadata:在生成meta时可以不生成整个数据库的meta,可以指定一个表,生成一个表的meta。Meta carrier 工具提供了抓取指定数据库可表的能力。
_1

进阶功能2:进灵活的hive到MaxCompute映射:如果用户需要自定义MaxCompute上的表,可以更改命名,加前缀或后缀,修改自定义字段名。如可以修改MaxCompute DDL里的json文件实现表名或字段名的自定义。
_1

进阶功能3:单表或单分区迁移:上面的例子中已经批量迁移五张表,通过drop table inventory,演示单分区迁移。首先若只需同步一个分区的数据,需要重新创建一张表。执行python36 bin/odps_ddl_runner.py创建表,指定其output目录,开始批量创建表。此时inventory表以及其五个分区已经创建完成。但创建的分区中没有数据,可指定其中一个分区,如第二个分区。通过使用input_single_file参数,指定具体分区的sql目录。可指定目录为output/dma_demo/hive_udtf_sql/single_partition/inventory_1.sql。执行完成后查看结果,对比在Hive上第二分区的数据和迁移进MaxCompute的单分区的数据,若两个单分区数据一致,则表示迁移完成。
_1

4.使用DataWorks自动迁移数据和工作流
MMA1.0版本还未将工作流迁移做成服务化功能,目前还是一个线下工具。客户需要根据下图模板生成相应目录。在做工作流迁移时,如果使用开源组件,可以按照模板将配置放到相应目录下。如果不使用开源组件,如自研的工作流调度编排服务,可基于标准化模板,按照模板的目录结构生成用户自己的工作流数据,打成zip包上传到DataWorks。目前MMA1.0还需要客户手动打包文件上传zip包,后台会进行自动解析并加载到DataWorks工作流。上传完成后,DataWorks服务会根据ODPS DDL 批量生成MaxCompute的table。MaxCompute表创建后,DataWorks服务会自动拉起DataX的数据同步任务,完成批量数据迁移。
_1

下图是可配置的项目描述文件project.xml,其中project信息可以自定义。另外一个是工作流描述文件,workflow.xml中是工作流自定义的参数,用户可以通过编辑配置文件进行修改。
_1

5.其他类型作业的迁移方案
UDF、MR迁移:用户直接将jar包上传到MaxCompute上,开启2.0支持,开启对Hive兼容的flag。将Hive兼容的flag设置为true,再在MaxCompute下直接迁移Hive下的UDF和MR。需求注意不支持UDF,MR中直接访问文件系统,网络访问和外部数据源连接。
外表迁移:原则上能结构化的数据尽量迁移到MaxCompute内部表。如果必须通过外表访问外部文件,建议先将数据从HDPS迁移到OSS或OTS,再在MaxCompute中创建外部表,实现对文件的访问。
Spark作业迁移:MMA对开源Spark的语法完全兼容。用户只需要下载Spark On MaxCompute客户端,在编写Spark SQL时仅增加MaxCompute的连接参数,其它部分和Spark SQL的语法相同。
_1

6.查看迁移评估报告
创建MaxCompute DDL完成后,除了生成DDL会SQL以外,还会生成迁移评估报告report.html文件。迁移评估报告是一个兼容性报告,显示Hive表的数据结构和MaxCompute表的数据结构之间的映射关系是否有风险,并标识风险等级。另外会给出明细说明以及预警提示,如数据类型不兼容或语法不兼容等。用户在迁移之前可以查看此报告评估迁移风险。
_1

如在数据同步过程中遇见其它问题,点击链接加入 MaxCompute开发者社区2群
https://wx.dingtalk.com/invite-page/weixin.html?spm=a2c4e.10696291.0.0.559219a4ezTb2M&bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745或扫码加入
2_

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
目录
相关文章
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
701 0
|
2月前
|
DataWorks 关系型数据库 对象存储
dataworks数据集问题之同步任务如何解决
DataWorks数据集是指在阿里云DataWorks平台内创建、管理的数据集合;本合集将介绍DataWorks数据集的创建和使用方法,以及常见的配置问题和解决方法。
39 4
|
4天前
|
数据采集 搜索推荐 大数据
大数据中的人为数据
【4月更文挑战第11天】人为数据,源于人类活动,如在线行为和社交互动,是大数据的关键部分,用于理解人类行为、预测趋势和策略制定。数据具多样性、实时性和动态性,广泛应用于市场营销和社交媒体分析。然而,数据真实性、用户隐私和处理复杂性构成挑战。解决策略包括数据质量控制、采用先进技术、强化数据安全和培养专业人才,以充分发挥其潜力。
11 3
|
7天前
|
运维 供应链 大数据
数据之势丨从“看数”到“用数”,百年制造企业用大数据实现“降本增效”
目前,松下中国旗下的64家法人公司已经有21家加入了新的IT架构中,为松下集团在中国及东北亚地区节约了超过30%的总成本,减少了近50%的交付时间,同时,大幅降低了系统的故障率。
|
9天前
|
SQL 分布式计算 Hadoop
利用Hive与Hadoop构建大数据仓库:从零到一
【4月更文挑战第7天】本文介绍了如何使用Apache Hive与Hadoop构建大数据仓库。Hadoop的HDFS和YARN提供分布式存储和资源管理,而Hive作为基于Hadoop的数据仓库系统,通过HiveQL简化大数据查询。构建过程包括设置Hadoop集群、安装配置Hive、数据导入与管理、查询分析以及ETL与调度。大数据仓库的应用场景包括海量数据存储、离线分析、数据服务化和数据湖构建,为企业决策和创新提供支持。
40 1
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks报错问题之dataworks同步rds数据到maxcompute时报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
存储 监控 大数据
数据仓库(11)什么是大数据治理,数据治理的范围是哪些
什么是数据治理,数据治理包含哪些方面?大数据时代的到来,给了我们很多的机遇,也有很多的挑战。最基础的调整也是大数据的计算和管理,数据治理是一个特别重要的大数据基础,他保证着数据能否被最好的应用,保证着数据的安全,治理等。那么数据治理到底能治什么,怎么治?
64 0
|
1月前
|
存储 数据处理 Apache
万字长文 | 泰康人寿基于 Apache Hudi 构建湖仓一体平台的应用实践
万字长文 | 泰康人寿基于 Apache Hudi 构建湖仓一体平台的应用实践
69 0
|
2月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
SQL 分布式计算 大数据
maxcompute开发环境问题之同步到生产环境失败如何解决
MaxCompute开发环境是指设置和配置用于开发MaxCompute项目的本地或云端环境;本合集将指导用户如何搭建和管理MaxCompute开发环境,包括工具安装、配置和调试技巧。

相关产品

  • 云原生大数据计算服务 MaxCompute