Hadoop 数据如何同步至 MaxCompute | 学习笔记(二)

简介: 快速学习 Hadoop 数据如何同步至 MaxCompute

开发者学堂课程【SaaS 模式云数据仓库实战Hadoop 数据如何同步至MaxCompute

 学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/761/detail/13345


Hadoop 数据如何同步至 MaxCompute


3.MMA Agent 操作说明 Hive Metadata 自动采集

1.使用meta-carrier采集Hive Metadata

解压工具包:odps-data-carrier.zip,工具目录结构如下:

图片16.png

odps-data-carrier/

|— bin

|   |— meta-carrier  用于获取Hive metadata的工具

|   |— meta-processor 用于生成0DPS DDL及Hive UDTF SQL的工具

|   |— odps_ddl_runner_py 用于运行0DPS DDL的工具

|   |— hive_udtf_sql_runner_py用于运行Hive UDTF SQL的工具

|   |— network-measurement-tool 用于检查用户网络环境。选挥合适的endpoint的工具

|   |— sql-checker 用于检查用户Hive SQL是否能直接在0DPS上运行的工具

|— odps_config.ini 用户ODPS配置

|— extra_settings.ini 数据迁移时需要增加的额外Hadoop/Hive配置

获取Hive metadata

Usage:

meta-carrier -u  -o  [-h] [-d ] [-t ]

-h ,--help 打印help信息

-o,—-output-dir 必填,指定一个输出的目录

-u,—-uri  必填,指定hive metastore service的thrift地址

-d,—-database  可选,指定一个database

-t,--table

可选,插定一个table

Example:

导出全部metadata:

sh meta-carrier -a thrift://127.0.0.1:9083 -o meta

导出某个database的metadata:

sh meta-carrier -u thrift://127.0.0.1:9083 -o meta -d test_db

导出某张表的metadata:

sh meta-carrier -u thrift://127.0.0.1:9883 -o meta -d test_db -t test_tbl

结果hive metadata输出的目录结构

output:

输出一个目录,结构如下:

[output directory]

|————global.json

|————[database name]

|————[database name] . json

|————table_meta

|        |————[table name].json

|————partition_meta

|————[table name].json

[说明] :

①global.json是一个全局的配置文件, 包含了整

个迁移过程中的一些配置

②每一个database会有-个独立的目录

③每-个表有一个以表名命名的json文件

④如果是分区表,还会有一个以表名为命名的partition的json文件。

图片17.png

提前下载客户端的zip包,在本地进行解压,解压完成后是这个目录,查看目录结构

18.png

有一个bin目录,bin目录底下有几个文件,有几个核心角色,network-measurement-tool网络测量工具,用于测量hive集群网络条件是什么,通过网络测速,了解有多少数据量,网络传输的时间,sql-checker,用于检查hive SQL语法是否能够作用语法点上,判断sql能否在mysql运行

Libs目录

底下是工具依赖的jar包

odps_config.ini

res目录底下有一个console,有一个bins目录,目录底下有odpscmd、odpscmd.bat,是客户端是一个工具

20.png

配置文件直接配置odps_config.ini

查看本地hive的结构

21.png

有三个库,将dma_demo库下面的自动批量同步

查看表

22.png 

有五个表将五个表进行同步

在dataworks控制台中创建

演示用另一个控制窗口,用console在本地运行的客户端工具连接创建的project

22.png

没有表

在安装的机器上运行

进入工具的目录中,在bin下查看meta-carrier工具

23.png

查看参数说明

-d可以指定一个数据库,指定把某一个数据库的meta拉出,也可以不指定,将整个hive下面所有库的meta拉出,-o是输出目录,-t指定表,-u是uri地址,是hive meta的地址

测试,指定地址,是thrift地址,用thrift协议连接

Hive meta在本地用127.0.0.1,默认端口9083

运行

查看生成的meta目录

25.png24.png

Tree一下meta目录查看结构

Meta目录底下创建一个跟数据的不同名目录,不同名目录目录底下有一个json文件,描述数据库meta信息的文件,partition meta有两个分区表,其他表为非分区表,非分区表不在partition meta底下,table meta将所有表集的meta信息写在下面

查看例子

26.png

json结构,databaseName,在hive上的database名字

odpsProjectName,两个名字不一致,可以在本处修改

dropTableIfExists,表存在是否需要先照顾表,默认没有打开,都是可以设置的

查看表的catalog_sales.json

包含各种字段信息,每个字段名字,字段在opds表中字段的名字,前面有各种表名,需要自定义,在odps上表名跟hive不一致,加入前缀,都可以通过修改json文件实现

27.png

将hive meta转化成my SQL 的DDL

27.png

查看参数,-i input目录,-o输出目录

-i 是第一个命令输出的结果,meta目录放入的拉出的hive meta数据meta-processor的命令写入output中

28.png

Tree查看结构

29.png

Output目录底下以project名字命名的目录,目录下有hive_udtf-sql目录和odps-ddl目录,odps-ddl创建表,hive_udtf-sql用于批量做数据迁移是写的sql

查看

是DDL,首先set,把新数据类型打开,后面创建表的DDL语句

查看hive_udtf_sql

30.png

里面写了一个sql,sql实际上是在hive运行的sql,将整个表的输出读出

有批量多表的导出,核心的逻辑在odps中实现

为客户端工具先做一个数据化配置

31.png

32.png

配置好参数后可以批量创建表

执行python

33.png

查看参数,cmd不需要指定,默认寻找目录

直接指定input目录,基于output目录,作为创建表的输入

34.png

35.png

存在五个表

查看之前的分区

36.png

另一边

37.png

左右两边分区一致

38.png

两边表结构是一致的,数据类型一一对应

迁移数据

用hive_udtf_sql_runner命令,读output目录下hive_udtf_sql下的语句

39.png

查看参数,input_all,选用此参数,将output所有的生成的数据执行,做数据迁移,做单表或单分区的迁移用input_single_file参数,在hive目录下找到要执行的sql

parallelism PARALLELISE 参数指的是并行度,默认就可以

做批量全表的操作,将所有的sql执行,只需要加参数

40.png

过程需要将数据从Hive meta读出,写道表格中,等待时间较长。

查看表格

41.png

数据相同,是完整的

介绍report工具

在output下,创建完成DDL后,除DDL于SQL外,生成report文件,下载到本地

42.png

Hive表的数据结构与MaxCompute表的数据结构映射关系是否有风险,以及风险等级,明细,介入类型以及报错等有明显的描述,预警提示

43.png

每个表都有预警,其他建设性问题预警都有提示

单表迁移或单分区迁移

测试单分区,做单分区迁移

重新创建表

指定output目录,报错因为其他表已经存在

44.png

五个分区已建好

45.png

指定其中一个分区

查看分区single位置

在output下,以数据库名字命名的hive_udtf_aql,hive_udtf_aql有两级目录,一是mutil_partition,,二是single_partition,整张表的同步数据sql在mutil_partition下,单分区的同步在single_partition目录下,single_partition的编号根据分区顺序对应,只迁移0926分区,对应inventory_1。

使用single_file参数

用input_single_file做单分区single的指定,将single所在文件的目录指定,执行,有数据写入,对比Hive与MaxCompute数据是否一致

46.png

数据是一致的

Network-measurement-tool网络测试工具,查看参数

47.png

指定一个模式find,找最快的做排序,连接所有节点

48.png

49.png

50.png

前方最快51毫秒,后面最慢3393毫秒

51.png

sql_checker,查看参数,目录是meta carrier产生的目录,meta目录作为input

测试

52.png

表中写了一条sql,能够返回,兼容性可以,sql语句可以在MaxCompute运行的

sql_checker工具用于检查平时做hive sql兼容性检查

网路连通性检测


相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
6月前
|
SQL 分布式计算 DataWorks
可以使用HiveSyncTask任务将HDFS中的数据同步到MaxCompute中
可以使用HiveSyncTask任务将HDFS中的数据同步到MaxCompute中
52 2
|
SQL 弹性计算 分布式计算
Hadoop 数据如何同步至 MaxCompute | 学习笔记(一)
快速学习 Hadoop 数据如何同步至 MaxCompute
250 0
Hadoop 数据如何同步至 MaxCompute | 学习笔记(一)
|
SQL 分布式计算 DataWorks
Hadoop 数据如何同步至 MaxCompute | 学习笔记(三)
快速学习 Hadoop 数据如何同步至 MaxCompute
198 0
Hadoop 数据如何同步至 MaxCompute | 学习笔记(三)
|
SQL JSON 分布式计算
Hadoop 数据如何同步至 MaxCompute | 学习笔记
快速学习 Hadoop 数据如何同步至 MaxCompute ,介绍了 Hadoop 数据如何同步至 MaxCompute 系统机制, 以及在实际应用过程中如何使用。
299 0
Hadoop 数据如何同步至 MaxCompute | 学习笔记
|
分布式计算 Hadoop MaxCompute
《零基础实现hadoop 迁移 MaxCompute 之 数据》电子版地址
零基础实现hadoop 迁移 MaxCompute 之 数据迁移
60 0
《零基础实现hadoop 迁移 MaxCompute 之 数据》电子版地址
|
分布式计算 Hadoop MaxCompute
《零基础实现hadoop 迁移 MaxCompute 之 数据迁移》电子版地址
零基础实现hadoop 迁移 MaxCompute 之 数据迁移
79 0
《零基础实现hadoop 迁移 MaxCompute 之 数据迁移》电子版地址
|
SQL 存储 分布式计算
Sqoop进行Hadoop生态离线数据迁移工具
学习一个东西,个人认为最好的方式是:官网+源码+实践。 Sqoop官网:http://sqoop.apache.org
435 0
Sqoop进行Hadoop生态离线数据迁移工具
|
SQL 分布式计算 API
E-MapReduce中Spark 2.x读写MaxCompute数据
最新的`aliyun-emapreduce-sdk`将`MaxCompute`数据以`DataSource`的方式接入Spark 2.x,用户可以使用类似Spark 2.x中读写`json/parquet/csv`的方式来访问MaxCompute.
6935 0
|
SQL 分布式计算 DataWorks
Hive 数据如何同步至 MaxCompute|学习笔记
快速学习 Hive 数据如何同步至 MaxCompute
266 0
Hive 数据如何同步至 MaxCompute|学习笔记
|
SQL 分布式计算 DataWorks
Hadoop 数据如何同步至 MaxCompute | 学习笔记
快速学习 Hadoop 数据如何同步至 MaxCompute
254 0
Hadoop  数据如何同步至  MaxCompute   | 学习笔记