==作者: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认证
因素
1.kerberos认证
查看集群是否开启krb
这里会有三种可能情况:一是都未开启认证,二是都开启认证,三是一个开了,另一个没开。前两种情况按照正常的认证(或非认证)的配置操作即可,第三种情况则需要在开启了认证的集群上开启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 | hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'tablename' |
脚本文件create_file.sh
,exportSnapshot.sh
cdh-hadoop资源池
网络通|有kerberos|表30+|物理空间~30TB
方案 采用export 表到hdfs,然后hdfs到本地,再利用厂商提供的客户端传到hdfs资源池,最后使用厂商客户端hbase import
#创建临时目录hadoop fs -mkdir /hbase/bak
#导出表到hdfshbase 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/
#使用厂商客户端创建放表的目录,执行写好的建表脚本,导入表