HBase数据迁移和导入

本文详细介绍了如何在HBase中进行数据集群迁移,包括创建快照、并发迁移、恢复快照以及HDFSCSV文件导入HBase的操作,还涵盖了表名更改的步骤。
摘要由CSDN通过智能技术生成

目录

一、HBase数据夸集群数据迁移(前提是两个CDH集群互信配置好)

 1.源CDH环境准备迁移表单

2. 在源CDH环境中执行创建快照命令

3. 开并发,多张表一起导入,省时间。

  4. 到目标集群中恢复快照

5.快照恢复完成后,在源集群和目标集群中删除快照

 二、HDFS的csv文件导入hbase

1. HBase建表

2.生成hfile文件

3.hfile文件导入hbase中

三、HBase更改表名


一、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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值