Hbase 学习(一) hbase配置文件同步

最近在狂啃hadoop的书籍,这部《hbase:权威指南》就进入我的视野里面了,啃吧,因为是英文的书籍,有些个人理解不对的地方,欢迎各位拍砖。

HDFS和Hbase配置同步

hbase的配置中有一些和hdfs关联的配置,当hdfs中修改了,但是hbase中修改了,hbase中是不会知道的,比如dfs.replication,有时候我们想增加备份的数量,在hdfs中设置为5了,但是hbase中默认为3,这样hbase还是只保存3份。

那么有什么方法可以使他们的配置文件同步,有三种方法:

(1)在hbase-env.sh的HBASE_CLASSPATH环境变量增加HADOOP_CONF_DIR。

(2)在${HBASE_HOME}/conf下放一份hadoop的配置文件hdfs-site.xml (or hadoop-site.xml)。

(3)直接在hbase-site.xml中添加。

从上述三种方法当中,目测是第一种方法比较靠谱,当然要同步配置文件还有别的方法,后续再进行介绍。


Hbase配置文件同步的脚本

以下这两个脚本都可以实现集群的hbase配置文件同步,第二个还带有删除之前配置文件的方法,用的时候注意一些

#!/bin/bash 
# Rsyncs HBase files across all slaves. Must run on master. 
Assumes 
# all files are located in /usr/local 
if [ "$#" != "2" ]; then 
echo "usage: $(basename $0) <dir-name> <ln-name>" 
echo " example: $(basename $0) hbase-0.1 hbase" 
exit 1 
fi 
SRC_PATH="/usr/local/$1/conf/regionservers" 
for srv in $(cat $SRC_PATH); do 
echo "Sending command to $srv..."; 
rsync -vaz --exclude='logs/*' /usr/local/$1 
$srv:/usr/local/ 
ssh $srv "rm -fR /usr/local/$2 ; ln -s /usr/local/$1 
/usr/local/$2" 
done 
echo "done."


另一个脚本,同样的功能,这个更简单些    

#!/bin/bash 
# Rsync's HBase config files across all region servers. Must 
run on master. 
for srv in $(cat /usr/local/hbase/conf/regionservers); do 
echo "Sending command to $srv..."; 
rsync -vaz --delete --exclude='logs/*' /usr/local/hadoop/ 
$srv:/usr/local/hadoop/ 
rsync -vaz --delete --exclude='logs/*' /usr/local/hbase/ 
$srv:/usr/local/hbase/ 
done 
echo "done."

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值