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

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

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

参数

tablename

hdfs_path

version

start_time

end_time

backupDst

含义

hbase中需要备份的表

备份到hdfs中的父路径

Hbase的版本号,增量备份的时候需要指定,否则不能备份

增量备份的时候起始时间戳

增量备份的时候结束时间戳

备份的目录。具体由如下格式组成:hdfs_path/ hbase_tablename_date(备份当天的日期,2019-08-22)_f (全量备份为f,增量为i)

※具体示例脚本如下:

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层的增量备份与全量备份,并在实际中得到了良好的应用。

发布了11 篇原创文章 · 获赞 165 · 访问量 5378

猜你喜欢

转载自blog.csdn.net/godlovedaniel/article/details/104524733