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兼容性检查

网路连通性检测


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
7月前
|
运维 Kubernetes Java
物理部署图
物理部署图用于描述系统运行时的结构,展示硬件配置与软件部署在网络中的方式。它帮助理解分布式系统的部署架构,核心元素包括节点、构建、物件、连接和框架,常用于指导软硬件的协同运行与运维管理。
227 0
|
7月前
|
人工智能 JSON 小程序
【AI编程】AI+高德MCP不到10分钟搞定上海三日游
本文介绍了小白如何通过AI编程工具(如Trae)快速开发应用并实现技术变现。内容涵盖AI编程用途、工具准备、高德地图开发者权限获取、AI工具配置及实战生成旅游攻略与打印页面,帮助零基础用户轻松入门AI编程。
370 0
|
缓存 Java 数据处理
java查询大量数据优化
通过结合的高性能云服务,如其提供的弹性计算资源与全球加速网络,可以进一步增强这些优化策略的效果,确保数据处理环节更加迅速、可靠。蓝易云不仅提供稳定的基础架构,还拥有强大的安全防护和灵活的服务选项,是优化大型数据处理项目不可或缺的合作伙伴。
400 0
|
Kubernetes 负载均衡 调度
在K8S中,如何实现集群管理?
在K8S中,如何实现集群管理?
|
数据采集 数据可视化 数据挖掘
阿里云 Quick BI使用介绍
阿里云 Quick BI使用介绍
3605 3
|
搜索推荐 前端开发 数据安全/隐私保护
改善用户体验方法
【10月更文挑战第9天】改善用户体验方法
1274 3
|
机器学习/深度学习 人工智能 自然语言处理
SCoRe: 通过强化学习教导大语言模型进行自我纠错
谷歌研究人员提出了一种名为自我纠错强化学习(SCoRe)的新方法,旨在使大型语言模型(LLMs)能够在无需外部反馈的情况下即时纠正自己的错误。SCoRe通过在线多轮强化学习训练模型,解决了传统自我纠错方法的局限性。实验结果显示,SCoRe在数学问题求解和代码生成任务上显著提升了模型的自我纠错能力,相较于基准模型和其他方法表现出色。此外,SCoRe还可与其他推理优化技术结合,进一步提升模型性能。尽管存在迭代次数限制和计算成本等局限性,SCoRe为未来研究提供了新的方向,有望推动AI系统的自主性和适应性发展。
734 3
|
边缘计算 人工智能 物联网
|
分布式计算 关系型数据库 MySQL
maxcompute迁移工具MMA使用操作手册
针对官方教程中省略和易出错的部分进行了补充,在使用过程中如果有更多问题,建议工单或者任务单咨询阿里云售后服务人员。
619 1