Hbase数据迁移

==作者:YB-Chi==

[toc]

旧CDH 新CDH
CDH-5.16.1 CDH-5.16.1
Hadoop 2.6.0 Hadoop 2.6.0
HBase 1.2.0 HBase 1.2.0
Hive 1.1.0 Hive 1.1.0
greenplum-db-4.3.11.3-rhel5-x86_64 greenplum-db-4.3.11.3-rhel5-x86_64
JDK1.8 JDK1.8
CentOS7.6

CDH-hadoop资源池,涉及到版本差异,以及ker认证
image

因素

1.kerberos认证

查看集群是否开启krb
image

这里会有三种可能情况:一是都未开启认证,二是都开启认证,三是一个开了,另一个没开。前两种情况按照正常的认证(或非认证)的配置操作即可,第三种情况则需要在开启了认证的集群上开启ipc.client.fallback-to-simple-auth-allowed 参数,意即在使用Kerberos的方式访问非Kerberos的集群时,系统自动转换成简单认证,否则会出现认证问题。

2.新旧集群间通讯
  • 可通讯的情况下可以采用hdfs的distcp或hbase提供的ExportSnapshot
  • 不可通讯需要手动操作
3.在线/离线

若业务允许做离线迁移,可以先将该表Disable后再做迁移,然后在新集群上重新clone成新表即可;但若需要在线进行迁移,则需要提前新集群上生成对应的HBase表,开启ACL权限等操作,并让业务开启数据双写,确保两个集群的数据在迁移时刻之后的数据是一致的。

4.表数量

位置/大小/数量
hdfs dfs -ls /hbase/data/default
hdfs dfs -du -h /hbase/data/default

步骤

旧cdh-新cdh

互通|无kerberos|表30+|物理空间~30TB
方案 采用ExportSnapshot方式 <cp快照然后clone恢复>

snapshot

hbase shell

  • 在源集群中创建快照
    snapshot 'table_name','snapshot_name'

  • copy快照

使用ExportSnapshot 将快照从源集群导出到目标集群
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <table_name> -copy-from hdfs://<source_cluster>/hbase -copy-to hdfs://<target_cluster>/hbase -mappers 200 -bandwidth 20 -chuser hbase -chgroup hbase

补充:有些时候执行完任务,在目标集群并不能找到对应快照,再执行一次,会在很短时间内完成。

  • 恢复快照
    clone_snapshot 'snapshot_name', 'namespace_name:table_name'

  • 统计数据

1
2
3
hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'tablename'
# 后台执行,将打印的信息写入到count_mdt.evt.date_gh这个文件中
hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'v2.mdt.evt.date_gh' 2>&1 | tee count_mdt.evt.date_gh &

脚本文件create_file.sh,exportSnapshot.sh

cdh-hadoop资源池

网络通|有kerberos|表30+|物理空间~30TB
方案 采用export 表到hdfs,然后hdfs到本地,再利用厂商提供的客户端传到hdfs资源池,最后使用厂商客户端hbase import

#创建临时目录
hadoop fs -mkdir /hbase/bak
#导出表到hdfs
hbase org.apache.hadoop.hbase.mapreduce.Export tableName /hbase/bak/tableName
#hdfs导出到本地
hadoop fs -copyToLocal /hbase/bak/tableName /usr/local/
#备份更改/etc/krb5.conf,上传厂商的*.keytab,执行kerberos认证 wyzdbz为厂商提供的用户
kinit -kt /home/jianlu/hdp/wyzdbz.keytab wyzdbz
#使用厂商客户端传到hdfs
/usr/hdp/3.1.0.0-78/hadoop/bin/hadoop fs -copyFromLocal /hadooppath /usr/local/
#使用厂商客户端创建放表的目录,执行写好的建表脚本,导入表


文章参考

Hbase3.0中文官方文档
Hbase1.2官方文档
HBase 数据迁移实战

文章作者: CYBSKY
文章链接: https://cybsky.top/2022/10/27/cyb-mds/bigdata/Hbase/Hbase数据迁移/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CYBSKY