HBASE技术问题

#### hbase 需要时间同步,节点间同步最大时间差是30s


#### hbase 创建表
hbase(main):004:0> create 'emp', 'cf1', 'cf2'

 

#### hbase 配置高可用
1、配置bakup mater
echo "${备节点机器名}" >> $HBASE_HOME/conf/backup-masters
例:
echo "master2" >> $HBASE_HOME/conf/backup-masters

2、HBase的Replication(假设已经部署好了两套HBase系统,并且在配置文件中已经开启了replication配置),
    a、首先尝试配置下Master-Slave模式的高可用:
        1)、在Master上通过add_peer 命令添加复制关系,如下
        add_peer '1', ’db-xxx.photo.163.org:2181:/hbase‘
        2)、在Master上新建表t,该表拥有一个列簇名为cf,并且该列簇开启replication,如下:
        create ‘t’, {NAME=>’cf’, REPLICATION_SCOPE=>’1’}
        上面REPLICATION_SCOPE的值'1'需要跟步骤1)中的对应
        3)、 在slave建立相同的表(HBase不支持DDL的复制),在master-slave模式中,slave不需要开启复制,如下:
        create ‘t’, {NAME=>’cf’ }
        这样,我们就完成了整个master-slave模式高可用的搭建,后续可以在master上通过put操作插入一条记录,查看slave上是否会复制该记录
    b、Master-Master模式,配置的时候与Master-Slave模式不同的是,在Master上添加完复制关系后,需要在另外一台Master也添加复制关系(如a中的步骤1)),而且两边的cluster_id必须相同,
    并且在另外一台Master上建表的时候,需要加上列簇的REPLICATION_SCOPE=>’1’配置
    
3、rsgroup,在HBase还没有发布的2.0版本有一个新特性,全称叫做RegionServer Group,简称rsgroup。顾名思义,就是regionServer的分组功能,
通过引入这个功能可以指定某些表在特定一组服务器上,从而达到隔离的效果。目前从一些大会的分享来看,阿里千台规模和雅虎800+的大集群都使用了这个功能,
所以从这点来看,这个功能似乎成为了管理大集群的一种手段。
HBase是无法保证region落到哪个RegionServer上,多个region公用一台RegionServer。当然你可以关掉balance,然后单独move region到特定机器上。
所以,其实一直存在一个问题:各个region的读写之间会相互影响。
没有分组之前,一般是如何解决这些问题的?
最简单的方方式就是拆分集群。例如我们在94版本集群上,底层一个hadoop集群会配置多个HBase集群,不同集群对应不同的业务,
这样来避免不同业务间的影响。但是这种方式带来的问题一个最大问题就是小集群多,运维不方便。本来HBase就以难运维“著称”,这样搞需要干的活就更多了。
分组的本质其实就是打“标签”,rsgroup的分组就是给每台regionServer和table打上标签,从而划分所属分组,然后通过balance的,把表的region move到所属分组的机器上。
 

你可能感兴趣的:(HBASE技术问题)