| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> hive和hbase数据迁移 -> 正文阅读 |
|
[大数据]hive和hbase数据迁移 |
数据迁移一、数据分析1. Hive数据分析
2. Hbase数据分析
3. Kudu数据分析二、数据迁移设1. Hive数据迁移设计? 使用自带命令工具进行迁 ? 使用第三方迁移工具 2. Hbase数据迁移设计? 使用自带命令工具迁移 ? Hadoop层数据迁移 ? Hbas层数据迁移 ? 使用第三方迁移工具 3. Kudu数据迁移设3.1. 基于impala迁移设计部3.2. 离线迁移设计三、数据迁移实1. Hive数据迁移1.1. Hive元数据迁移1.1.1. Import方式迁移? 说明:将hive数据中的表元数据导出,推荐使用这种方式
? -->取出库中的所有表 ? -->在HDFS上创建存放数据库表元信息的目录 ? -->将hive数据库中表元数据信息导出到创建的目录中 1.1.2. Sql方式迁移? -->导出数据库表元信息
? -->在新环境中执行创建表结构
? -->验证新环境的表结构 1.2. Hive全量数据迁移1.2.1. Hadoop distcp迁移前置要求 1、新环境和就环境的网络互通 2、新环境和旧环境的ip不能相同
参数说明: ? -->-skipcrccheck 省略crc检查,如果hadoop版本一样,可以不加,如果低版本向高版本迁移的话,最好带 ? -->-update 增量更新,通过文件名称,大小比较,源文件和目标文件不同则更新 1.2.2. 本地迁移
1.3. 元数据和数据关联1.3.1. 基于sql元数据迁移
1.3.2. 基于import元数据迁移
1.4 推荐迁移方? 元数据迁移 import方式迁移 ? 数据迁移 依据实际业务 ? 元数据和数据关联 Import数据关联 1.5. 迁移流程2. Hbase数据迁? 目前的方案主要有四类,Hadoop层有一类,HBase层有三类。 2.1. Hadoop层数据? Hadoop层的数据迁移主要用到DistCp(Distributed Copy),官方描述是:DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝 参考命令
参数说明 ? -m参数来设定要跑的map数量,默认设置是20 ? -bandwitdh考虑带宽问题,所以在跑任务时还需要设定 约束条件 ? 源端集群到目的端集群策略是通的,同时hadoop/hbase版本也要注意是否一致,如果版本不一致,最终load表时会报错。 实施步骤 ? 1、第一步,如果是迁移实时写的表,最好是停止集群对表的写入,迁移历史表的话就不用了,此处举例表名为test ? 2、flush表, 打开HBase Shell客户端,执行如下命令
? 3、拷贝表文件到目的路径,检查源集群到目标集群策略、版本等,确认没问题后,执行如上带MR参数的命令 ? 4、检查目标集群表是否存在,如果不存在需要创建与原集群相同的表结构 ? 5、在目标集群上,Load表到线上,在官方Load是执行如下命令
参数说明:hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily, 这个表示在bulkload过程中,每个region列族的HFile数的上限,这里我们是限定了1024,也可以指定更少,根据实际需求来定。 ? 6、检查表数据是否OK,看bulkload过程是否有报错 2.2. Hbase层数据迁2.2.1. copyTable方式? copyTable也是属于HBase数据迁移的工具之一,以表级别进行数据迁移。copyTable的本质也是利用MapReduce进行同步的,与DistCp不同的时,它是利用MR去scan 原表的数据,然后把scan出来的数据写入到目标集群的表。这种方式也有很多局限,如一个表数据量达到T级,同时又在读写的情况下,全量scan表无疑会对集群性能造成影响。
约束条件 ? CopyTable支持的范围还是很多的,但因其涉及的是直接HBase层数据的拷贝,所以效率上会很低,同样需要在使用过程中限定扫描原表的速度和传输的带宽,这个工具实际上使用比较少,因为很难控制 2.2.2. Export/Import方式? 此方式与CopyTable类似,主要是将HBase表数据转换成Sequence File并dump到HDFS,也涉及Scan表数据,与CopyTable相比,还多支持不同版本数据的拷贝,同时它拷贝时不是将HBase数据直接Put到目标集群表,而是先转换成文件,把文件同步到目标集群后再通过Import到线上表。主要有两个阶段 Export阶 ? 将原集群表数据Scan并转换成Sequence File到Hdfs上,因Export也是依赖于MR的,如果用到独立的MR集群的话,只要保证在MR集群上关于HBase的配置和原集群一样且能和原集群策略打通(master?ionserver策略),就可直接用Export命令,如果没有独立MR集群,则只能在HBase集群上开MR,若需要同步多个版本数据,可以指定versions参数,否则默认同步最新版本的数据,还可以指定数据起始结束时间
Import阶段 ? 将原集群Export出的SequenceFile导到目标集群对应表
2.2.3. Snapshot方式? 说明:建议使用这种方式进行数据迁移 ? 此方式与上面几中方式有所区别,也是目前用得比较多的方案,snapshot字面意思即快照,snapshot的应用场景和上面CopyTable描述差不多,我们这里主要考虑的是数据迁移部分。数据迁移主要有以下几个步骤 创建快照 ? 在原集群上,用snapshot命令创建快照
数据迁移 ? 在上面创建好快照后,使用ExportSnapshot命令进行数据迁移,ExportSnapshot也是HDFS层的操作,本质还是利用MR进行迁移,这个过程主要涉及IO操作并消耗网络带宽,在迁移时要指定下map数和带宽,不然容易造成机房其它业务问题,如果是单独的MR集群。
其他说明 ? 上面这些流程网上很多资料都有提到,对于我们业务来说,还有一种场景是要同步的表是正在实时写的,虽然用上面的也可以解决,但考虑到我们表数据规模很大,几十个T级别,同时又有实时业务在查的情况下,直接在原表上就算只是拷贝HFile,也会影响原集群机器性能,由于我们机器性能IO/内存方面本身就比较差,很容易导致机器异常,所以我们采用的其它一种方案,流程图如下。 ? 主要考虑的是直接对原表snapshot进行Export会影响集群性能,所以采用折中的方案,即先把老表clone成一个新表,再对新表进行迁移,这样可以避免直接对原表操作 2.2.4. 数据迁移方式对比
2.3 推荐迁移方式? Hbase数据迁移 Snapshot 2.4. 迁移流3. Kudu数据迁移 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 1:29:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |