H 数据迁移方案有很多种,但今天我们来通过Snapshot方式来实现H 的数据迁移(即将A集群H 的数据迁移到B集群),废话不多说,直接进去主题吧:
参考文献:https://www.cnblogs.com/ballwql/p/h _data_transfer.html
https://www.cnblogs.com/cenyuhai/p/3309033.html
H Snapshots允许你对一个表进行快照(即可用副本),它不会对Region Servers产生很大的影响,它进行复制和 恢复操作的时候不包括数据拷贝。导出快照到另外的集群也不会对Region Servers产生影响。 下面告诉你如何使用Snapshots功能
1.开启快照支持功能,在0.95+之后的版本都是默认开启的,在0.94.6+是默认关闭
<property>
<name>h .snapshot.enabled</name>
<value>true</value>
</property>
2.创建快照:
(1)在原集群上,用snapshot命令创建快照,命令如下:h > snapshot \'g2monitor:g2monitor_range_event\',’g2monitor_range_event\'
g2monitor:g2monitor_range_event是原H 表的名字,g2monitor_range_event是创建快照的名字。
(2)查看创建的快照,可用list_snapshots命令:h > list_snapshots
(3)如果快照创建有问题,可以先删除,用delete_snapshot命令:h >delete_snapshot \'g2monitor_range_event\'
(4)创建完快照后在/h 根目录会产生一个目录:
[user_w@emr-header-1 ~]$ hadoop fs -ls hdfs://172.16.120.199:9000/h /.h -snapshot/
#子目录下有如下几个文件
Found 2 items
drwxr-x--x - h hadoop 0 2018-11-29 10:54 hdfs://172.16.120.199:9000/h /.h -snapshot/.tmp
drwxr-x--x - h hadoop 0 2018-11-29 10:54 hdfs://172.16.120.199:9000/h /.h -snapshot/g2monitor_range_event
3.数据迁移
在上面创建好快照后,使用ExportSnapshot命令进行数据迁移,ExportSnapshot也是HDFS层的操作,本质还是利用MR进行迁移,这个过程主要涉及IO操作并消耗网络带宽,在迁移时要指定下map数和带宽,不然容易造成机房其它业务问题,如果是单独的MR集群,可以在MR集群上使用如下命令:
h org.apache.hadoop.h .snapshot.ExportSnapshot \\
-snapshot g2monitor_range_event -copy-from hdfs://172.16.120.199:9000/h \\
-copy-to hdfs://172.16.120.213:8020/h -overwrite -mappers 16 -bandwidth 1024\\
4.从快照复制生成一个新表
h > clone_snapshot \'g2monitor_range_event\',\'g2monitor:g2monitor_range_event\'
5.用快照恢复数据,它需要先禁用表,再进行恢复
h > disable \'g2monitor:g2monitor_range_event\'
h > restore_snapshot ‘g2monitor_range_event\'
h > enable \'g2monitor:g2monitor_range_event\'
6.检查H 数据是否迁移成功
h > scan \'g2monitor:g2monitor_range_event’
7.现在H 表迁移成功,但由于需要查询,所以我们新建hive表关联到H 表,以方便数据查询
use ${hiveconf:db};
CREATE EXTERNAL TABLE stg_g2monitor_range_event
(event_id STRING,
gpsno STRING,
vehicle_no STRING,
org_code STRING,
from_org_code STRING,
point_id STRING,
point_name STRING,
enter_time STRING,
depart_time STRING,
seconds INTEGER)
STORED BY \'org.apache.hadoop.hive.h .H StorageHandler\' WITH SERDEPROPERTIES
(\"h .columns.mapping\" = \":key,f:gpsno,f:vehicle_no,f:org_code,f:from_org_code,f:point_id,f:point_name,f:enter_time,f:depart_time,f:seconds\")
TBLPROPERTIES (\"h .table.name\" = \"g2monitor:g2monitor_range_event\", \"h .mapred.output.outputtable\" = \"g2monitor:g2monitor_range_event\");
8.数据校验:
hive> select * from stg_g2monitor_range_event limit 1;
OK
1001672592571895808 90023076 川A1TE16 200HO813 200HOF F3334A3E09355230114C52D2AB4E3D1E 成都鑫盛瑞吉物流有限公司_华丰食品城 2018-05-30 11:51:59.0 2018-05-30 11:53:19.0 80
Time taken: 0.181 seconds, Fetched: 1 row(s)
9.补充
在H 数据迁移过程中还有可能使用到的命令:
hadoop fs -ls hdfs://172.16.120.213:8020/h /.h -snapshot
hadoop fs -rm -r -skipTrash /h /.h -snapshot
hadoop fs -ls hdfs://172.16.120.199:9000/h /.h -snapshot/g2monitor_range_event/
hadoop fs -ls hdfs://172.16.120.213:8020/h
继续阅读与本文标签相同的文章
线性回归拟合
-
《DNS攻击防范科普系列4》--遭遇DNS缓存投毒该怎么办?
2026-05-18栏目: 教程
-
进击的 Java ,云原生时代的蜕变
2026-05-18栏目: 教程
-
阿里云Kubernetes平台构建和管理实践(上)
2026-05-18栏目: 教程
-
阿里云Kubernetes平台构建和管理实践(下)
2026-05-18栏目: 教程
-
F5的SSL加解密和负载均衡器如何提高安全性?
2026-05-18栏目: 教程
