hbase的集群搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbase的集群搭建相关的知识,希望对你有一定的参考价值。

1.集群搭建

1. 前置要求:

  - HBASE是用Java语言编写的,所以在安装HBASE时,必须安装jdk
  - 安装HBASE是必须有hadoop平台
  - HBASE和jdk的版本存在兼容性,一定注意
jdk
技术分享图片
hadoop
技术分享图片

2. 集群规划:

技术分享图片

3. 具体搭建:

① 上传安装包(hbase-1.2.6-bin.tar.gz)
②解压:tar zxvf hbase-1.2.6-bin.tar.gz -C /application/
③配置环境变量:

export HBASE_HOME=/application/hbase-1.2.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$SQOOP_HOME/bin:$HBASE_HOME/bin
source /etc/profie  #刷新配置文件
hbase version    #查看是否配置成功

技术分享图片
④修改hbase的配置文件
cd /application/hbase-1.2.6/conf
hbase-env.sh

export JAVA_HOME=/application/jdk1.8  #配置jdk
export HBASE_MANAGES_ZK=false  #配置使用自己的zookeeper
#psHBASE中必须依赖zookeeper,zookeeper作用是存储HBASE的寻址入口HBASE自带的是单机版的,所有需要开启使用自己的

hbase-site.xml

<configuration>
 <property>
<!-- 指定 hbase 在 HDFS 上存储的路径 -->
 <name>hbase.rootdir</name>
 <value>hdfs://zzy/hbase</value>
 </property>
 <property>
<!-- 指定 hbase 是分布式的 -->
 <name>hbase.cluster.distributed</name>
 <value>true</value>
 </property>
 <property>
<!-- 指定 zk 的地址,多个用“,”分割 -->
 <name>hbase.zookeeper.quorum</name>
 <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
 </property>
</configuration>

regionservers

hadoop01
hadoop02
hadoop03

backup-masters(自行创建)

#配置备份主节点的节点
hadoop02

⑤要把 hadoop 的 hdfs-site.xml 和 core-site.xml 放到 hbase-1.2.6/conf 下
因为hadoop集群是HA模式,所以需要配置:

cp /application/hadoop-2.7.6/etc/hadoop/core-site.xml .
cp /application/hadoop-2.7.6/etc/hadoop/hdfs-site.xml .

⑥分发安装到各节点

cd /application/
scp -r hbase-1.2.6 hadoop02:$PWD
scp -r hbase-1.2.6 hadoop03:$PWD

⑦时间同步:
HBase 集群对于时间的同步要求的比 HDFS 严格,所以,集群启动之前千万记住要进行时间同步,要求相差不要超过 30s。在定时任务中配置定时更新时间。

4. 启动集群:

① 先在每一个节点zookeeper 集群:zkServer.sh start
②启动hdfs集群:start-dfs.sh
③启动hbase:start-hbase.sh(启动) / stop-hbase.sh(关闭) 最好在主节点启动,在哪个节点启动哪个节点就是hmaster。
④ 检测是否正常启动:jps
技术分享图片
技术分享图片
技术分享图片
Web界面访问:http://HBASE主节点:16010
注意:如果有节点相应的进程没有启动,那么可以手动启动:

    hbase-daemon.sh start master
    hbase-daemon.sh start regionserver

2.集群架构

技术分享图片
技术分享图片
   在HBASE集群中:有多个主(hmaster)、多个从(RegionServer),每一个从节点中存储的是多个Region,每一个Region,是HBASE一张表中分出来的(默认的Region大小为10G)。

集群角色介绍

1. region:

  是HBASE将一个表中的所有数据按照RowKey的不同范围进行切割的逻辑单元,每一个region负责一定范围数据的读写访问。Region由RegionServer负责管理。HBASE中的region的概念就和hdfs中的数据块的概念差不多。Region 是 HBase 表切分出来的一个分片。Region的大小在1.x版本的时候是1G,在2.X版本的时候是10G。
Region的工作机制
技术分享图片
  当客户端发送命令(delete/put)的时候,region接收到请求的时候,首先会将数据更新到内存中,同时将操作记录到日志(追加),不论做的是什么操作,就会记录到操作日志中,为了进行数据恢复,因为region接收请求的时候,只是将数据同步到内存,如果节点一宕机则数据丢失,所以通过日志的方式进行数据恢复(或者说是持久化)。当然这个日志记录到一定大小的时候会进行切分,切分出来的叫Hfile,最后到有很多Hfile的时候,会进行日志合并,会将这些Hfile合并一个storeFile,在进行合并的时候,会将日志中的delete和put进行抵消删除(即一个put操作,如果有一个对应有一个delete操作,则这两条记录抵消,在合并的时候不会记录),最终合并出来的storefile中就会只有put操作而没有delete操作。

2. hmaster:

  HBASE的主节点,负责整个集群的状态感知、负载分配、负责用户表的元数据 (schema)管理(可以配置多个用来实现 HA),只有hmaster才有权利去修改元数据。
  HBase 的 HMaster 其实就算是宕机一段时间也可以正常对外提供服务的,因为在HMaster在宕机的时候,集群仍然可以进行查询但是不能进行读写。
   HMaster的负载:当第一次建立表的时候,只有一个Region,然后当region的值超过1G的时候,此时HBASE的HMaster会将region进行拆分(如果是2G,一份为二,每一个是1G),拆分后的region可能不存在一个节点上。由于HBASE是搭建在hadoop之上的,所以region的副本会在hdfs操作。
   hmaster的节点的上下线感知:当如果有一台Reginaservers宕机了,hmaster会自动将这个宕机节点中存储的region通过其他的副本在另外的节点上复制出来(基于hdfs的副本),当宕机的节点重新恢复的时候,hmaster又会进行负载,保证每一个Reginaservers中的region的个数大致相同,(只能保证集群的region的个数进行负载,如果region的大小不同,不能根据数据的大小进行负载)。

3.RegionServer:

   HBase 中真正负责管理 Region 的服务器,也就是负责为客户端进行表数据读 写的服务器。每一台 RegionServer 会管理很多的 Region,一个 RegionServer 上面管理的所有 的region不属于同一张表。负责Region的拆分,负责和底层的HDFS的存储交互,负责StoreFile 的合并。

4. ZooKeeper

   整个 HBase 中的主从节点协调,元数据的入口,主节点之间的选举,集群节点 之间的上下线感知……都是通过 ZooKeeper 来实现

5. Client

   Client 包含了访问 HBase 的接口,另外 Client 还维护了对应的 Cache 来加速 HBase 的 访问,比如 Cache 的.META.元数据的信息。(缓存上一个查询的rowkey的具体位置,方便快速一次查询)。

以上是关于hbase的集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

hbase的集群搭建

Hadoop集群 Hbase搭建

Hadoop集群搭建 Hbase

Hbase集群搭建三(Hbase搭建)

HBase集群搭建记录 | 云计算[CentOS7] | HBase完全分布式集群搭建

hbase集群搭建