HBasehbase

一种Hbase数据备份策略及方法

2020-01-20  本文已影响0人  果子学长

0.引言

Hbase在大数据处理中地位至关重要,有的公司会将Hbase作为原始数据接入层,那么Hbase的数据备份就显得至关重要,那么如何备份呢?这里我们引入Hbase的一个API,hbase org.apache.hadoop.hbase.mapreduce.Export,该API可以实现同一集群间的数据备份。

1.备份方法

初始化全量备份 + 增量备份手段

执行日程:

备份按照每张hbase中的表进行备份,每月的1号进行全量备份,每天进行增量备份

执行内容:

每月1号进行全量备份 在linux上执行如下命令

./hbase org.apache.hadoop.hbase.mapreduce.Exporttablename backupDst

每天进行增量备份,执行如下命令

./hbase org.apache.hadoop.hbase.mapreduce.Export tablename backupDst versionstart_time end_time

脚本参数列表如下图所示:

※具体示例脚本如下:

prepare_run.sh脚本

该脚本是执行备份脚本之前需要先做的准备工作

#!/bin/bash

su - hdfs <<EOF

hadoop fs -rm -R /backup

hadoop fs -mkdir /backup

hadoop fs -chmod -R 777 /backup

exit;

EOF

ods_xxx_hbase_backup_full_in.sh脚本

#!/bin/bash

##############################################################################################################################################

# HBASE data backup full and increment   #

########################################################################################

day=`date +%d`;#获取今天的日期

if [ "$2" != "" ];then

  day=$2

fi;

today=`date +%Y-%m-%d` #获取今天的日期

lastday=`date --date '-1days' +%Y-%m-%d` #获得昨天的日期

hbase_tablename='iot_dcqk_shock';#hbase中需要备份的表

if [ "$1" != "" ];then

  hbase_tablename=$1

fi;

hdfs_path='hdfs://10.1.3.12/backup';#hdfs路径,已经在hdfs中建好,且赋予777权限,需要根据自己集群修改

start_time=`date -d $lastday +%s`;#增量备份的起始时间戳

end_time=`date -d $today +%s`;#增量备份的结束时间戳

version='2';

#每月1号进行全量备份,其余时间增量备份

if [ $day == '01' ];

then

    #需要备份到hdfs上的目录

    backupDst=$hdfs_path"/"$hbase_tablename"_"$today"_f";

    hbase org.apache.hadoop.hbase.mapreduce.Export $hbase_tablename $backupDst $version

else

    backupDst=$hdfs_path"/"$hbase_tablename"_"$today"_i";

    hbase org.apache.hadoop.hbase.mapreduce.Export $hbase_tablename $backupDst $version $start_time $end_time

fi

2.脚本的使用方法

① 把脚本上传到服务器,位置是/home/centos/xxx/HbaseBackup(需要赋予脚本可执行权限)

chmod 777 –R /home/centos/xxx/HbaseBackup

② 首次备份需要在root用户下执行prepare_run.sh,创建hdfs上的备份目录/backup

③在/etc/crontab中设置定时任务,备份hbase中的每张表

Hbase中需要备份的表是通过位置参数传入进去,具体可参考如下图所示:

④查看hdfs中结果

文件夹以“_f”结尾的为全量备份,以“_i”结尾的为增量备份

3.总结

  本文主要讲解Hbase数据备份方法,备份主要采用Hbase自带的工具hbase org.apache.hadoop.hbase.mapreduce.Export进行备份,该备份工具结合shell脚本可有效的实现Hbase层的增量备份与全量备份,并在实际中得到了良好的应用。

上一篇 下一篇

猜你喜欢

热点阅读