目录
一、HBase数据夸集群数据迁移(前提是两个CDH集群互信配置好)
一、HBase数据夸集群数据迁移(前提是两个CDH集群互信配置好)
1.源CDH环境准备迁移表单
cat snapshot.txt
snapshot 'namespace:table_name01','table_name01_snapshot'
snapshot 'namespace:table_name02','table_name02_snapshot'
snapshot 'namespace:table_name03','table_name03_snapshot'
cat list.txt
table_name01
table_name02
table_name03
2. 在源CDH环境中执行创建快照命令
注意 :1.如果快照已经存在,根据实际需要判断是否需要重新创建
2. 可能报错权限问题,建议使用hbase认证,迁移完成后再改回之前认证用户
hbase shell snapshot.txt
3. 开并发,多张表一起导入,省时间。
vi start.sh
#!/bin/bash
. ~/.bashrc
test -e /tmp/fd1 || mkfifo /tmp/fd1
exec 3<>/tmp/fd1
rm /tmp/fd1
a=1
while(($a<=3)) ##此处控制并发个数
do
echo >&3
a=$(($a+1))
done
for table_name in `cat list.txt` ##获取表清单
do
read -u3
{
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot --snapshot ${table_name}_snapshot --copy-to hdfs://xxx(目标集群的hsfs):8020/hbase --mappers 100 > logs/$table_name.log 2>&1
## --mappers 100 设置map数量
echo >&3
}&
done
wait
exec 3<&-
exec 3>&-
4. 到目标集群中恢复快照
hbase shell
restore_snapshot 'table_name01_snapshot'
restore_snapshot 'table_name02_snapshot'
restore_snapshot 'table_name03_snapshot'
## 此处也可以写成文档,使用hbase shell xxx 执行
5.快照恢复完成后,在源集群和目标集群中删除快照
hbase shell
list_snapshots
delete_snapshot 'xxxx'
二、HDFS的csv文件导入hbase
1. HBase建表
hbase shell
create 'namespace:table_name',{NAME=>'cf1',COMPRESSION=>'snappy'},{NUMREGIONS=>2,SPLITALGO=>'UniformSplit'}
2.生成hfile文件
nohup hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dmapreduce.map.memory.mb=32768 -Dmapreduce.reduce.memory.mb=32768 \
-Dimporttsv.separator="," -Dimporttsv.bulk.output=/hfile \
-Dimporttsv.columns=HBASE_ROW_KEY,cf1:certno namespace:table_name \
/hdfs/xxxx.txt &
## 此处设置了map和reduce的内存
## Dimporttsv.bulk.output 指定生成hfile的hdfs路径
## Dimporttsv.columns 指定csv文件中列和hbase表对应关系
## 最后是csv的hdfs路径
## 此处需要较长时间,所有使用nohup挂在后台执行
3.hfile文件导入hbase中
hbase completebulkload /hfile01 namespace:table_name
三、HBase更改表名
#1. 先disable表 disable 'test'
#2. 创建一个快照 snapshot 'test', 'test_snapshot'
#3. 克隆这个快照,赋给新的表名 clone_snapshot 'test_snapshot', 'test_new'
#4. 删除之前创建的快照 delete_snapshot 'test_snapshot'
#5. 再删除掉之前的表 drop 'test'
disable 'namespace:certno_01_md5'
drop 'namespace:certno_01_md5'
disable 'namespace:certno_01_md5_new'
snapshot 'namespace:certno_01_md5_new', 'certno_01_md5_snapshot'
clone_snapshot 'certno_01_md5_snapshot', 'namespace:certno_01_md5'
delete_snapshot 'certno_01_md5_snapshot'
drop 'namespace:certno_01_md5_new'