hbase 高可用 全分布式集群 搭建以及原理分析

4 篇文章 1 订阅
3 篇文章 0 订阅

1、HBase简介


 HBase hadoop database 是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库
 
 利用hadoop hdfs作为其文件存储系统 
 利用hadoop MapReduce来处理HBase中的海量数据
 利用Zookeeper作为分布式协同服务
  
 主要用来存储非结构化和半结构化的松散数据 比如图片、文件等

2、架构

    各个环节的作用大体介绍:
        zookeeper 
           维护region入口
           维护集群 保证任何时候集群中都有一个活跃的master
           实时监控region server健康  并实时通知master
           存储hbase中的schena和table元数据
        hmaster 
          为regionserver分配region
          负责region server的负载均衡
          region server再分配
          某个region server宕机 重新分配到其他region
        hregionserver table
          维护region 
          切分region 
        hregion 表
          store 代表cf colum family
            memstore  内存(写缓存)存储
            storeFile 缓存数据溢写到storefile
        region 
          hbase自动把表水平划分成多个region,每个region会保存包里面一部分连续的数据
          每一个表开始只有一个region,随着数据的不断增多,region不断增大,当达到一个阈值时,region会等分成两个新的region(裂变)
          当table中的值继续不断增大,就会有越来越多的region,并分布到不同的region server上
        Memstore 与 storefile
            一个region由多个store组成,一个store对应一个CF(列族)
            store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile
            当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile,对于大范围合并,自动触发需要控制。
            当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡
            客户端检索数据,先在memstore找,找不到再找storefile
            文件合并 
           minor 小文件合并不需要控制  
           major 大文件合并 需要控制 比如时间控制

3、环境

4、hdfs搭建

          请参阅我的hdfs搭建文章,这里就不在赘述了 https://blog.csdn.net/chuanxincui/article/details/83546344/

5、hbase搭建

5、1 准备工作:

       (1)网络配置 hdfs搭建时已经完成,参阅hdfs搭建

       (2)配置hosts文件 hdfs搭建时已经完成,参阅hdfs搭建

       (3)免密登录 

                  hdfs中已经配置:(hadoop01免密登录自己和其他机器;且与hadoop02相互免密登录)

                  在hbase中还需要配置:

                         hadoop04免密登录  hadoop01 hadoop02 hadoop03 hadoop04

       (4)时间同步 hdfs搭建时已经完成,参阅hdfs搭建

       (5)jdk安装  hdfs搭建时已经完成,参阅hdfs搭建

  5、2 配置免密登录     

           hadoop04免密登录  hadoop01 hadoop02 hadoop03 

           登录hadoop04

                   生成秘钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

                   配置免密登录自己:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

                   mv ~/.ssh/id_dsa.pub ~/.ssh/hadoop04.pub 

  将公钥添加到hadoop01 hadoop02 hadoop03节点的authorized_keys中

ssh-copy-id -i ~/.ssh/hadoop04.pub hadoop01
ssh-copy-id -i ~/.ssh/hadoop04.pub hadoop02
ssh-copy-id -i ~/.ssh/hadoop04.pub hadoop03

               

登录hadoop01 hadoop02 hadoop03 验证公钥是否已经添加成功。以hadoop02为例:

验证免密登录

5、3 上传压缩包并解压

登录hadoop04

cd /opt
ll
yum install -y lrzsz
rz
tar -zxvf hbase-0.98.12.1-hadoop2-bin.tar.gz -C /usr/local


重新命名包名,

cd /usr/local
mv hbase-0.98.12.1-hadoop2/ hbase

5、4配置hbase环境变量

vi /etc/profile
source /etc/profile

验证环境变量配置是否成功

echo $HBASE_HOME

 

5、5 修改配置文件

 修改配置文件 hbase-env.sh

cd /usr/local/hbase/conf

配置hbase的环境(配置jdk,关闭hbase默认的zookeeper)
vi hbase-env.sh

修改配置文件 hbase-site.xml

在configuration中添加

   <property>
    <name>hbase.rootdir</name>
    <value>hdfs://mycluster/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
   <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop02,hadoop03,hadoop04</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/var/sxt/zk_data</value>
  </property>

配置regionservers节点

编辑regionservers文件
vi regionservers 

配置备节点hmaster

创建一个文件backup-masters,并将从节点添加到该文件中

vi backup-masters

HDFS客户端配置  一定要注意 注意 注意 重要的事情说3遍 

官网给出了3中方法如下:

大体上意思就是:

方法1 将hdfs中的环境变量信息,都要添加到hbase-env.sh这个配置你文件中

方法2 将hdfs中的hdfs-site.xml文件复制到hbase的conf下    

方法3 将hdfs-site.xml中的所有配置,添加到hbase-site.xml中

综上可以看出  方法2是最简单

cp /usr/local/hadoop-2.6.5/etc/hadoop/hdfs-site.xml /usr/local/hbase/conf/

5、6 分发

将hadoop04上面配置好的hbase 分发到hadoop01、hadoop02 hadoop03节点上

cd /usr/local
scp -r hbase/ hadoop01:`pwd`
scp -r hbase/ hadoop02:`pwd`
scp -r hbase/ hadoop03:`pwd`

因为hadoop01是备节点,所以需要配置一下hbase的环境变量,hadoop02、hadoop03无需配置

登录hadoop01节点

vi /etc/profile
添加hbase环境变量,添加完毕之后,重新加载配置文件
source /etc/profile

6、启动测试

6、1 启动 zookeeper

登录hadoop02 hadoop03 hadoop04执行启动命令  

zkServer.sh start

6、2 启动hdfs

登录hdfs的namenode的主节点hadoop01,启动hdfs

start-dfs.sh

验证hdfs是否启动成功

浏览器登录 http://hadoop01:50070   http://hadoop02:50070/

 

6、3 启动hbase

登录hbase主节点hadoop04,执行命令start-hbase.sh

start-hbase.sh

 

验证是否启动成功

 

6、4 验证高可用

关闭主master中的hbase服务,验证备节点hadoop01是否变为master

hbase-daemon.sh stop master

 

然后再启动 hadoop04中的hbase服务

hbase-daemon.sh start master

 

 

 

 

7 最后 搭建过程中遇到的几个问题请参阅

https://blog.csdn.net/chuanxincui/article/details/88052835

https://blog.csdn.net/chuanxincui/article/details/88052797

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值