开发者学堂课程【阿里云大数据计算服务 MaxCompute 使用教程:Hive 数据如何同步至 MaxCompute】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/86/detail/1329
Hive 数据如何同步至 MaxCompute
目录:
一、MMA功能介绍
二、MMA的迁移服务架构
三、MMA Agent技术架构和原理
四、环境准备
五、下载和编译工具包
六、MMA Agent操作说明
七、进阶功能
八、使用Dataworks自动迁移数据和工作流
九、其他类型作业的迁移方案
一、MMA功能介绍
(一)覆盖的主要场景
(二)主要功能
1、迁移评估分析
对 Hadoop 平台进行诊断分析,评估数据迁移规模、作业迁移改造的数量、预估迁移后的成本,从而对迁移工作进行整体评估和决策。
2、数据迁移自动化
对 Hive Meta 及数据进行检测扫描,自动在 MaxCompute 创建对应的 Meta,同时根据不同的网络环境,将 Hive 的数据自动转换并高吞吐地加载到 MaxCompute 上,支持从 TB 级到 PB 级数据的迁移上云。
3、作业兼容性分析
对 Hive 作业进行兼容性分析,识别出需要修改的任务并提供针对性的兼容性修改建议。对于用户自定义逻辑的分析任务,如 UDF、 MR/Spark 作业等,我们将给出一般性的改造建议供用户参考。
4、工作流迁移
对主流数据集成工具 Sqoop 进行作业的迁移转换,并自动创建 Dataworks 数据集成作业:支持主流 Pipeline 工具,如 Oozie、 Azkaban. Airflow 等自动迁移转化,并自动创建为 Dataworks 工作流及调度作业。
二、MMA的迁移服务架构
三、MMA Agent 技术架构和原理
1、MMA Agent 的工作流程主要分为四个步骤:
(1)Metadata 抓取
(2)MaxCompute DDL与 Hive UDTF 生成
(3)MaxCompute 表创建
(4)Hive 数据迁移
四、环境准备
1、jdk 1.6+
2、Python 3+
3、Hive Client
4、能访问 Hive Server
5、能连接网络 MaxCompute
6、场景举例
五、下载和编译工具包
1、下载源码:
切换到 odps-datacarier-develop 分支,
htp:/qihubp.com/alivun/alivun-maxcompute-data-collectors?spm=a2c4g.1186623.2.8.422c4c07MdjlpQ
2、解压下载的
aliyun-maxcompute-data-collectors-odps-datacarrier-develop.zip 文件
3、在控制台运行 odps-data-carrier 目录下的 build.py 文件,编译生成 MMA 工具
六、MMA Agent 操作说明
(一)Hive Metadata 自动采集
1、使用meta-carrier 采集 Hive Metadata
(1)解压工具包:odps-data-carrier.zip,工具目录结构
(2)获取Hive Metadata
(3)结果Hive Metadata 输出的目录结构
(4)说明
①global.json 是一个全局的配置文件,包含了整个迁移过程中的一些配置
②每一个 database 会有一个独立的目录
③每一个表有一个以表名命名的 json 文件
④如果是分区表,还会有一个以表名为命名的 partition 的 json 文件
(二)网络连通性检测
1、使用 network-measurement tool
(1)测试 Hadoop 集群到 MaxCompute 各 Region 的网络连通质量
(2)测试网络 上下行传输速率
2、使用方法
3、举例
(三)自动生成MaxCompute的DDL
1、使用 meta-processor 生成 ODPS DDL 和 Hive UDTF SQL
(1)修改 globle.json,自定义表、字段的生成规则:
(2)生成 ODPS DDL 和 Hive UDTF SQL 了,用法及结果如下
(四)Hive SQL 语法自动检查
1、使用 sql-checker 检查 Hive SQL 是否可以直接在 MaxCompute 执行
(1)输出 SQL 是否存在语法错误及修改建议:
(五)自动创建 MaxCompute 表和分区
1、使用 odps_ _ddl_ runner py 批量创建表和分区
(1)ODPS DDL 创建好以后,运行 odps_ ddl_ runner.py,将会遍历 meta processor 生成的目录,调用 odpscmd 自动创建 ODPS 表与分区:
(六)自动迁移数据到 MaxCompute
1、使用 hive_ _udtf_ _sql runner.py 迁移数据
(1)表和分区创建完成以后,运行 hive_ udtf. _sql runner.py, 将数据从 hive,上传至 MaxCompute。
(2)hive_udtf_sql_runner.py 有 两种模式,第一种将会遍历 meta-processor 生成的目录,调用 hive client 运行 hive udtf sql,从而将数据从 hive 上传至 ODPS。 第二种模式需要用户手动指定一个 hive sq| 文件。
七、进阶功能
1、仅生成指定 database 或 table 的 metadata
(1)在前面的 Demo 中,我们抓去了 hive 中所有 database 和表的 metadata,但在很多环境下,我们倾向于一次处理一个 database 或一张表,因此 meta-carrier 工具提供了抓取指定 database 或 table 的 metadata 的能力:
这里我们生成的 metadata 仅包含了 test.test 这张表
2、仅灵活的 hive 到 max compute 映射
(1)在前面的 Demo 中,我们将 hive 的 test.test 表 映射到 mc 中 ODPS_ DATA_ CARRIER. _TEST.test 这张表,然而,我们提供了更强大的能力,比如说修改 hive 表 到 mc 的表明与列名映射,设置 mc 中表的 life cycle,增加 comment, 等等。
八、使用 Dataworks 自动迁移数据和工作流
1、安装 MMA Agent 客户端工具:采集 Metadata& 生成 ODPS DDL
(1)参照 [MMA Agent 操作说明]的第 1、2步骤
2、上传 Dataworks 项目描述文件
(1)根据模板(参见右图)生成 DataWorks 项目描述文档,打包为 dataworks_ project.tgz 上传到 Dataworks.
(2)注意:一期仅支持:
打包文件手动上传:
支持 00IZE 调度引擎的配置模板和 Dataworks 工作流配置模板。
(3)上传完成后,Dataworks 服务会根据 ODPS DDL 批量生成 MaxCompute 的table。
(4)MaxCompute 的表创建完成后,Dataworks 服务会自动拉起 DataX 的数据同步任务,完成批量数据迁移。
3、项目描述文件(/project.xml)说明
4、工作流描述文件(/workflow.xml)说明
九、其他类型作业的迁移方案
1、UDF、MR 迁移
(1)支持相同逻辑的 UDF、MR 输入、输出参数的映射转换,但 UDF 和 MR 内部逻辑需要客户自己维护。
[注意]:不支持在 UDF、MR 中直接访问文件系统、网络访问、外部数据源连接。
2、外表迁移
(1)原则上全部迁到 MaxCompute 内部表。
(2)如果必须通过外表访问外部文件,建议先将文件迁移到 OSS 或者 OTS, 在MaxCompute 中 创建外部表,实现对文件的访问。
[注意] : MaxCompute 外部表支持的格式包括:
ORC、PARQUET、SEQUENCEFILE、RCFILE、AVRO和TEXTFILE.
3、Spark 作业迁移
(1) [作业无需访问 MaxCompute 表和 OSS ]用户 jar 包可直接运行,参照_《MaxCompute Spark 开发指南》第二节准备开发环境和修改配置。注意,对于spark 或 hadoop 的依赖必须设成 provided.
(2) [作业需要访问 MaxCompute 表]参考《MaxComputeSpark 开发指南》第三节编译 datasource 并安装到本地 maven仓库,在 pom 中添加依赖后重新打包即可。
(3) [作业需要访问 OSS] 参考《MaxCompute Spark 开发指南》第四节在 pom 中添加依赖后重新打包即可。