【阿里云 CDP 公开课】 第八讲:Hive 迁移到 CDP

简介: 本文整理自 Cloudera 生态资深解决方案工程师王雪峰在 阿里云CDP公开课 上的分享。

本期导读 :【阿里云 CDP 公开课】第八讲


主题:Hive 迁移 到 CDP

讲师:王雪峰,Cloudera 生态资深解决方案工程师


内容框架:

  • Hive 迁移工具介绍
  • 使用 Replication Manager 迁移 Hive 数据
  • 使用 DistCP+HMS Mirror 迁移 Hive 数据



直播回放链接:(第8讲)

https://developer.aliyun.com/live/248869


一、Hive 迁移工具介绍

image.png

Hive 迁移到 CDP,主要有以下两种方案:

① 使用 DistCP+HMS Mirro迁移 Hive 数据。

② 使用 Replication Manager (企业级工具)迁移 Hive 数据。


方案①是基于命令行的方式,分步操作,每部分单独执行,其中 DistCP 负责 HDFS 数据的迁移, HMS Mirror 负责 Hive Metastore 数据的迁移。方案②是通过企业级的界面配置进行简单操作,将 Hive 数据一次性迁移到 CDP 平台,同时提供了完整的监控报告和调度。


安全支持方面,两种方式都支持非 Kerberos 集群之间、非 Kerberos 到 Kerberos 以及 Kerberos 到 Kerberos 的 Hive 数据迁移。


监控方面,两种方式都是单独执行,监控和运行是独立的,需要分别进行监控。方案②通过 UI 和 CM 界面集成,提供了完整的监控和运行报告以及调度支持。


增量和全量方面,两种方案都能支持增量和全量复制。


周期性运行方面,两种方案都基于原生命令行一次性执行,可以利用调度器实现周期性调度来完成整个复制。 Replication Manager 方案可以在 UI 里配置对应调度策略来一次性执行或立即执行,也可以按照不同的时间做调度,以及按照不同的频率梯度来执行。同时它保存了完整的执行日志和执行过程,便于后续分析以及错误预警。


适用性方面,两种方案都适用于所有 Hadoop 集群进行 Hive 迁移,支持从 Hive 1到Hive 3 、Hive 2 到 Hive 3 等,也支持从 CDH/HDP、Apache Hadoop 迁移到 CDP。Replication Manager 主要支持 CDH 到 CDH/CDP、 CDP 到 CDP 的 Hive 迁移。此外,由于 Replication Manager 是企业级工具,因此使用它需要通过 Cloudera  许可证以正常运行。


二、使用 Replication Manager 迁移 Hive 数据

image.png

Replication Manager 主要用于整个 CDH/CDP 平台的数据备份和灾难恢复,它提供了完整的数据备份和灾难恢复功能。在其界面上可以选择源和目标的配置,然后选择需要备份和恢复的文件、表、库等。可以配置用户、资源池、带宽、监控、日常预警等信息。配置完成后,可以根据调度策略来进行数据同步,同步过程中可以进行监控以观察实时运行情况,并采取措施。


Repliation Manager 也支持快照和数据复制。快照部分主要支持 HDFS 和 Hbase ,数据复制主要支持 HDFS 和 Hive。在 Hive 数据复制里,除了支持 HDFS 数据复制之外,还支持了元数据的复制以及 Sentry 到 Ranger 权限的同步。今年的版本会新增支持 Hive 数据迁移的复制。


image.png


进行 Hive 数据同步时,如果是 CDH 到 CDP 的迁移,建议在 CDP 的 Hive 里将 Hive 外表目录设置成 CDH 的受管表目录,数据会自动迁移到该目录下,代码无须修改目录即可直接运行。


受管表从 CDH 迁移到 CDP 后会变成 CDP 的外表,同时增加 purge属性,能够在做表清理的同时将数据文件进行 drop,从而保证其与 CDH 内表是相同的使用体验。而 CDP内表目前还不支持 Repliation Manager,今年的版本会增加对应的支持。


同时, Repliation Manager 支持 Sentry 权限迁移到 Ranger,用户可以根据自己的需求迁移权限。


Repliation Manager 对 CM 的版本要求较高,在 CDH 上需要将 CM 升级到版本 6.3 以上, CDH 要求在版本 5.10 以上。如果 CDH 版本较老,则只能通过 Distcp + HMS Mirror 的方式来同步 Hive 元数据。目标集群要求 CDP 7.0 以上,能够支持 HDFS Sentry 到 Ranger 权限迁移,支持 Hive 到 Hive 外部表迁移等。 CDP 要求 CM 和 CDH 的版本在7.1.1以上,支持高密度的文件系统以及外部表的数据迁移。


Demo演示

1.png

2.png


本次演示的环境版本如上图所示。

3.png


在 CDH 集群中有四张 Hive 内置表,其中三张 test 表分别对应普通文本、ORC 和 Parquet 格式,本次演示需要将三张 test 表从 CDH5 迁移到 CDP ,并进行一些操作。

4.png


首先,进行备份复制,迁移 CDH5 的数据。如果集群中没有配置同行,则需要点击备份-同行-添加同行,配置同行后才能继续后续操作。

5.png


同行的端口是 Cloudera Manager 的登录路径。如果启用了 TLS,则对应的端口为 7183,否则为 7180。使用默认的账户和密码填入同行管理用户名和密码。配置完成后会做测试连接,连接认证之后,即可在后续备份复制时在不同集群中进行数据迁移。

6.png


同行的操作菜单包括测试连接性、编辑和删除。


点击菜单栏中备份-复制计划-创建计划-Hive复制。

1.png

填写以上常规信息。


目标路径是指 HDFS 存储 Hive 数据和元数据的可选项,是创建表的根目录。比如 HDFS 的目标目录路径为 /mypath ,而源路径为user/hive/warehouse/bdr.db/tab1,那么复制完成后的路径即/mypath/user/hive/warehouse/bdr.db/tab1

8.png

填写以上资源相关信息。其中,复制策略为“动态”指将小集合中的文件复制任务分配给 mapper, 执行完后再去处理下一个未分配的任务集,而“静态”指根据文件大小实现统一分配。

9.png

10.png

完成高级部分的配置。


11.png

选择“立即运行”。


12.png

点击“命令详细信息”即可查看具体的执行相关信息。


13.png

从上图执行信息中可以看到, Hive 数据复制分为6个步骤。

第一步:导出远程 Hive Metastore;

第二步:传输元数据文件;

第三步:Hive 表数据复制,即 HDFS 数据复制,主要包含做检查、文件监听、列举文件、将列举清单传输到同行中,并在目标端触发 HDFS 的复制任务。

第四步: Hive Metastore导入。

第五步:通过引发 Impala shell 执行 Invalidate 相关命令

第六步:在目标端重命名 Snapshots,使其变为可用。


2.png

点击“显示历史记录”,即可查看执行结果。图中显示了本次执行耗费时间为2分钟,复制了3张表,预期文件3个,无失败文件。


复制完成后,查看文件是否已经存在。

15.png


此时目标目录的路径已经变为 /data/user/hive/warehouse,下面有3张表,意味着复制成功。

16.png


default 库下也已经存在三张表。此处发生了几个变化:


第一,表的性质变为“EXTERNAL”外部表;第二,路径变为/data/user/hive/warehouse;第三,增加了external.table.purge属性,做数据清理的时候会将底层文件一起删除。


通过 Replication Manager 迁移 Hive 有以下几个注意点:

①   需要企业的许可证。

②   数据迁移 Hive 到 CDP 后,会变为外表同时带有 purge 属性。

③   做增量数据同步时会自动创建快照,需要在 Hive 主目录上启动快照。通过比较快照的方式找到对应增量来同步增量数据,以减少数据同步的带宽。



三、使用 DistCP+HMS Mirror 迁移数据

image.png

DistCP 主要负责迁移 HDFS 部分的数据,它支持增量和全量的迁移方式,支持非 Kerberos 到 Kerberos 以及非 Kerberos 到 Kerberos 的数据迁移。


HMS Mirror 是一个实用程序,上图下方为其项目文档地址。它主要用于弥补两个集群之间的差异并迁移 Hive 元数据,数据移动不是该工具的主要功能,需要 DistCP 来完成。


HMS Mirror 在两个集群之间迁移 Hive Metastore,可以使用 SQL 和EXPORT_IMPORT 等数据策略。也可以做一些数据移动,但它适用于较小的数据集,在较大数据集场景下效率不高。此外,元数据迁移里也有不同的策略,比如 Schema、Read-only。

image.png

上图为 HMS-Mirror 迁移步骤,此种方式对来源没有限制,Hive 可以是 EMR、HDP、CDH、Apache Hadoop、CDP 等,目标一般为 CDP 。


过程中通过 YARN 来调度 HDFS ,将数据导出再导入,此处更倾向于通过 DistCP 在 YARN 上调度来执行 HDFS 数据的迁移。然后将 Hive Metastore 数据进行复制,并通过 YARN 写入到 Hive Metastore 数据库,终端用户即可直接通过目标集群来访问。


Demo演示

本次 demo 使用的环境如下:CDH 5.1.6,禁用 Kerberos,使用的 Hive 版本为 1.1 ;CDP 7.1.7,启用 Kerberos,使用的 Hive 版本为3.1.3。


1.png

在 CDH 5.1.6 里的test_db 库下有四张表,本次演示将完成这四张表的数据同步。


2.png

首先在 CDH 集群对 DB 目录创建 Snapshot ,创建完成后,查看其对应的快照。


3.png

接着到目标集群对数据同步赋权,创建针对 user/hdfs 目录的权限,该权限赋予 etl_user 用户,并通过此用户来操作数据。


4.png

在 CDP 集群里使用 etl_user 用户做数据同步,利用 DistCP 进行数据迁移。关于 DistCP 的使用方式和参数请参考对应手册。


5.png

数据同步完成后,查看目录里的数据,可以看到四张表已经同步成功。


6.png

github 上提供了非常完整的 HMS Mirror文档,依照文档里的步骤进行下载安装即可。安装完成后可以看到 user/local 目录下创建了新的目录结构,包含 bin 和 lib 参考文件。根目录下创建了隐藏文件夹 HMS Mirror 用于存放对应的目录结构,将 hive-jdbc 的 standalone.jar 文件放至该目录下,再将 cdh 的 standalone.jar 文件放至该目录下并创建对应的配置文件。


查看配置信息,其中 transfer 提供了一些参数,左右集群分别配置了 HDFSNameSpace 、uri 以及 jar 文件的目录路径。

8.png

配置完成后,执行 HMS Mirror 的命令来同步元数据。


9.png

执行完成后,可以看到同步了一个数据库和四张表,对应的同步数据库是test_db,temp目录下生成了若干文件。


10.png


查看 temp 目录下的文件结构。其中比较重要的是右侧目标集群的执行文件。

11.png

查看此文件,可以看到已经将对应的表结构抽取出来,CDH是内表,在 CDP 中转成了外表。此处 location 路径对应的根目录有误,应将其替换,保存文件。


12.png

在环境中创建 test_db 目录。


13.png

启用 Hive 用户,执行 beeline 生成 DDL 语句。


14.png

回到 Hive,可以看到已经存在四张表,查询 parquet 表内数据总条数为20004条。


15.png

对表做更新,插入2条数据,再做增量的同步。


插入完成后查询 parquet 表内数据更新为20006条。


前面为使用命令方式迁移数据,接下来演示使用 UI 工具。


16.png

首先找到 text_db 所在目录,拍摄快照。创建完成后即可在页面上看到快照。


17.png

切换到 etl 用户,做 DistCP 的增量数据同步。


18.png

同步完成后,切换到 CDP 集群,将工具切换为 Hive,查看数据总条数,结果为20006。




点击回放链接,观看第8讲视频回放,获取讲师实例讲解:

   https://developer.aliyun.com/live/248869



更多信息

产品试用

ae7cf633839b4980b25c8dff53f4b3a0.png

目前,CDP产品支持三个场景试用体验:

第一,CDP沙箱环境。主要测试常用场景:如构建数仓、ETL等常见的大数据分析场景,以及测试安全、数据血缘和治理等组件。

第二,Edge2AI场景。在此Edge2Al的实操实验中,将为IoT预测性维护用例构建完整的OTIT的工作流。

第三,CDP Base+Data Service。测试存算分离,新一代容器化计集群,用户体验良好的APP等。


立即开通:https://cloudera.console.aliyun.com/?

试用申请:https://survey.aliyun.com/apps/zhiliao/owtTaIQU3



技术交流

钉钉扫描下方二维码加入产品交流群一起参与讨论吧!

lADPJxRxQzaccuvNA97NAu4_750_990.jpg

相关文章
|
8天前
|
关系型数据库 MySQL Apache
**ADB MySQL湖仓版能够平滑迁移到湖仓**,阿里云提供了相应的迁移工具和服务来简化这一过程。
**ADB MySQL湖仓版能够平滑迁移到湖仓**,阿里云提供了相应的迁移工具和服务来简化这一过程。
20 2
|
8天前
|
关系型数据库 Apache 流计算
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
本文介绍了如何将数据从 OceanBase 迁移到阿里云数据库 SelectDB 内核版 Apache Doris。提供 3 种数据同步方法 1. 使用 DataX,下载 DataX 并编写配置文件,通过 OceanBaseReader 和 DorisWriter 进行数据迁移。 2. 利用 Apache Doris 的 Catalog功 能,将 OceanBase 表映射到 Doris 并插入数据。 3. 通过Flink CDC,设置 OceanBase 环境,配置 Flink 连接器,实现实时数据同步。
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
|
8天前
|
存储 容灾 安全
在阿里云RDS(Relational Database Service)迁移前准备目标区域选择
在阿里云RDS(Relational Database Service)迁移前准备目标区域选择
34 3
|
8天前
|
监控 安全 关系型数据库
在规划阿里云RDS跨区迁移资源和服务可用性
在规划阿里云RDS跨区迁移资源和服务可用性
271 4
|
8天前
|
SQL 运维 关系型数据库
在阿里云RDS(Relational Database Service)进行跨区域迁移
在阿里云RDS(Relational Database Service)进行跨区域迁移
45 2
|
8天前
|
存储 运维 容灾
在规划阿里云RDS(Relational Database Service)跨区迁移
在规划阿里云RDS(Relational Database Service)跨区迁移
43 1
|
8天前
|
SQL 关系型数据库 MySQL
Hive跨集群和版本迁移
Hive跨集群和版本迁移
|
8天前
|
存储 监控 关系型数据库
在规划和准备阿里云RDS(Relational Database Service)跨区域迁移
在规划和准备阿里云RDS(Relational Database Service)跨区域迁移
25 1
|
1天前
|
弹性计算 监控 负载均衡
【阿里云弹性计算】ECS实例迁移实战:无缝迁移到阿里云的步骤与技巧
【5月更文挑战第22天】阿里云ECS实例迁移实战详解,涵盖无缝迁移步骤与技巧:选择合适迁移方案,如VPC或使用阿里云工具;创建目标环境,数据迁移及配置同步;测试验证功能正常,流量切换;选择低峰期,保证数据一致,实时监控,提升迁移成功率。本文为云平台迁移提供实用指南。
27 2
|
8天前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移

热门文章

最新文章