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."
时间: 2024-08-04 02:47:57

Hbase 学习(一) hbase配置文件同步的相关文章

hbase 学习(十三)集群间备份原理

集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份结构一样,只有一个日志来跟踪.一个master集群可以向多个slave集群推送,收到推送的集群会覆盖它本地的edits日志. 这个备份操作是异步的,这意味着,有时候他们的连接可能是断开的,master的变化不会马上反应到slave当中.备份个格式在设计上是和mysql的statement-based

以前认为数据库就是一层,但现在学习的Hbase,HDFS的数据库,怎么感觉是多层?应怎样理解?

问题描述 以前认为数据库就是一层,但现在学习的Hbase,HDFS的数据库,怎么感觉是多层?应怎样理解? 以前学习数据库时,就只知道MySql,就这一个东西就是数据库. 但现在学习大数据,了解到 Titan graph数据库建立在HBase数据库之上,而HBase又要建立在HDFS之上. 这里就把数据库分成了三层,最顶层是Titan, 中间是HBase,下面是HDFS, 问题就是: 1.它们每层应该叫什么名字啊?顶层叫数据库框架吗?中间层叫后端数据库?底层叫分布式文件系统数据库? 2.它们各个组

HBase学习总结(3):HBase的数据模型及工作机制

一.HBase数据模型 HBase模式里的逻辑实体包括: (1)表(table):HBase用表来组织数据.表名是字符串(String),由可以在文件系统路径里使用的字符组成. (2)行(row):在表里,数据按行存储.行由行键(rowkey)唯一标识.行键没有数据类型,总是视为字节数组byte []. (3)列族(column family):行里的数据按照列族分组,列族也影响到HBase数据的物理存放,因此,它们必须事前定义并且不轻易修改.表中每行拥有相同列族,尽管行不需要在每个列族里存储数

Hadoop学习之HBase的伪分布式安装

HBase的伪分布式安装 1.   HBase单台机器上的安装 a)    使用winscp将win下的HBase软件(hbase-0.94.7-security.tar.gz)包复制到linux下的/usr/local/下 b)   解压文件hbase-0.94.7-security.tar.gz #tar -xzvf hbase-0.94.7-security.tar.gz 更名为hbase #mv hbase-0.94.7-security hbase c)    增加hbase的环境变量

hbase 学习(十二)非mapreduce生成Hfile,然后导入hbase当中

最近一个群友的boss让研究hbase,让hbase的入库速度达到5w+/s,这可愁死了,4台个人电脑组成的集群,多线程入库调了好久,速度也才1w左右,都没有达到理想的那种速度,然后就想到了这种方式,但是网上多是用mapreduce来实现入库,而现在的需求是实时入库,不生成文件了,所以就只能自己用代码实现了,但是网上查了很多资料都没有查到,最后在一个网友的指引下,看了源码,最后找到了生成Hfile的方式,实现了之后,发现单线程入库速度才达到1w4左右,和之前的多线程的全速差不多了,百思不得其解之

hbase学习(一)hbase单机部署和java客户端连接单机hbase

最近看了些hbase的东西,打算写点什么,谁知鼓捣的过程中步步是坑,最终呕心沥血,憋出了这篇文章,实属不易. hbase和hive总是成对出现的,简单说,hbase是数据库,hive是mapReduce作业. 先从hbase单机部署说起,尽量说的简洁点,说多了都是眼泪. 1.给服务器起个机器名,iptables关掉,同时本地绑定host. 起个机器名 1 vi /etc/hosts 127.0.0.1 localhost 211.155.225.210 love-kaige 1 vi /etc/

Hbase 学习(十) HBase Snapshots

HBase Snapshots允许你对一个表进行快照(即可用副本),它不会对Region Servers产生很大的影响,它进行复制和 恢复操作的时候不包括数据拷贝.导出快照到另外的集群也不会对Region Servers产生影响. 下面告诉你如何使用Snapshots功能. 1.开启快照支持功能,在0.95+之后的版本都是默认开启的,在0.94.6+是默认关闭. <property> <name>hbase.snapshot.enabled</name> <val

HBase学习总结(2):HBase介绍及其基本操作

(HBase是一种数据库:Hadoop数据库,它是一种NoSQL存储系统,专门设计用来快速随机读写大规模数据.在已成功安装并正常启动的前提下,本文介绍HBase的基本操作.) 一.HBase简介 什么是HBase(Hadoop Database)呢?有以下两种常见的说法: 第一,它是一种稀疏的.分布式的.持久化的.多维有序映射,它基于行键(row key).列键(column key)和时间戳(timestamp)建立索引. 第二,它是一种键值(key value)存储,面向列族的数据库,有时也

Hbase 学习(五) 调优

1.垃圾回收器调优 当我们往hbase写入数据,它首先写入memstore当中,当menstore的值大于hbase.hregion.memstore.flush.size参数中设置的值后,就会写入硬盘. 在hbase-env.sh文件中,我们可以设置HBASE_OPTS或者HBASE_REGIONSERVER_OPTS,后者只影响region server进程. export HBASE_REGIONSERVER_OPTS="-Xmx8g -Xms8g -Xmn128m -XX:+UsePar