HBase 大数据量迁移。hbase snapshot 快照方式数据迁移
snapshot备份默认已开启(0.95版本之后默认开启,也可手动添加hbase-site.xml配置)、SnapShot 快照迁移流程、SnapShot迁移问题记录
hbase snapshot 快照方式数据迁移
前提
snapshot备份默认已开启(0.95版本之后默认开启,也可手动添加hbase-site.xml配置)
SnapShot 快照迁移流程
1.生成快照备份
// device 是table的名字,‘device_snapshot01’是备份快照名称
snapshot 'device','device_snapshot01'
2.查看快照
// Hbase中查看已经创建的快照
list_snapshots hdfs
// Hdfs中存储的 Hbase快照地址
hadoop fs -ls hdfs://127.0.0.1:8020/hbase/.hbase-snapshot/
3.迁移、传输快照
// 参数说明
-snapshot 快照名称
-copy-from 快照源位置
-copy-to 快照目标位置
-mappers map数量、并行度
-bandwidth 传输带宽
// 快照迁移命令
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot device_snapshot01 \
-copy-from hdfs://127.0.0.1:8020/hbase \
-copy-to hdfs://127.0.0.2:8020/hbase \
-mappers 16 \
-bandwidth 1024
4.目标集群查看快照迁移是否成功
5.恢复数据
//使表失效,变为不可用状态
disable 'device'
// 覆盖原表,需先在新环境创建同名表
// 无需指定表名,直接通过快照中存储的表名信息恢复
restore_snapshot 'device_snapshot01'
//使表有效,可对其正常开始读写
enable 'device'
// 恢复到新表(指定快照名、表名)
clone_snapshot 'device_snapshot01','device_new'
SnapShot迁移问题记录
错误日志(一):
Can’t find hfile: 643c8e0f85e5487982241077ae245f34 in the real directory for the primary table.
或 Hfile文件不存在等FileNotFoundException
问题原因:
该问题的原因是从源集群复制过来的文件在目标集群上不存在,检查目标集群,可发现目标集群的NameNode上有出现未找到的文件,也就是说文件原来是存在的,但过程中又被删除了
解决方案:
CleanerChore线程清理archive目录是通过hbase-site.xmll配置项hbase.master.hfilecleaner.ttl控制的,默认是5分钟(单位:毫秒),大表的文件迁移远超5分钟。调到两小时以上的足够大值。
(迁移时可能需要分别修改新旧两个集群环境配置;失败后可删除.snapshot/.tmp/下快照文件重试)
错误日志(二):
org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block hadoop集群的datanode节点出现宕机
问题原因:
创建快照超时
解决方案:
(hbase-site.xml添加并调整以下参数)
hbase.snapshot.region.timeout
hbase.snapshot.master.timeoutMillis
补充
表压缩 :major_compact
压缩整个区域(region)(可单独压缩列、列族) :major_compact ‘table’
刷新表(将mem中缓存刷入Hfile) :flush ‘table’
此外可能还会有 no such file 等问题,后续在Hbase专栏将单独说明~
更多推荐
所有评论(0)