HBase在CentOS上分布集群安装

场景

CentOS7上搭建Hadoop集群(入门级):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119335883

在上面搭建起来Hadoop的环境后,进行HBase的安装。

HBase

    HBase是一个基于HDFS的面向列的分布式数据库,源于Google的

BigTable论文。HDFS基于流式数据访问,低时间延迟的数据访问并不

适合在HDFS上运行。所以,如果需要实时地随机访问超大规模数据集,使用HBase

是更好的选择。

HBase体系结构

    HBase同样是采用Master/Slaves的主从服务器结构,它由一个HMaster服务器和多

个HRegionServer服务器构成,而所有服务器都是通过ZooKeeper协调并处理各服务器

运行期间可能遇到的错误。HMaster负责管理所有的HRegionServer,各HRegionServer

负责存储许多HRegion,每一个HRegion是对HBase逻辑表的分块。

HRegion

    HBase使用表(Table)存储数据集,表由行和列组成,这与关系型数据库类似。

但是在HBase中,当表的大小超过设定值时,HBase会自动将表划分为不同的区域

(Region),每个区域称为一个HRegion,它是HBase集群上分布式存储和负载均衡

的最小单位,在这一点上,表和HRegion类似于HDFS中文件与文件块的概念。一个

HRegion中保存一个表中一段连续的数据,通过表名和主键范围(开始主键~结束主键)

来区分每一个HRegion。最开始,一个表只有一个HRegion,随着HRegion逐渐变大,

直到超出设定的闽值大小,便会在某行的边界把表分成两个大小基本相同的HRegion,

称为HRegion分裂。

HRegionServer

    HRegionServer负责响应用户I/O请求,向HDFS中读写数据,一台机器上只运行

一个HRegionServera HRegionServer包含两部分:HLog部分和HRegion部分。

    HLog用于存储数据日志,实质是HDFS的Sequence File。到达HRegion的写操作

首先被追加到日志中,然后才被加入内存中的MemStoreo HLog文件主要用于故障恢复。

例如某台HRegionServer发生故障,那么它所维护的HRegion会被重新分配到新的机器

上,新的HRegionServer在加载HRegion的时候可以通过HLog对数据进行恢复。

    HRegion由多个HRegion组成,每个HRegion对应表中的一个分块,并且每一个

HRegion只会被一个HRegionServer管理。

HMaster

    每台HRegionServer都会和HMaster服务器通信。HMaster的主要任务就是告诉每

个HRegionServer它要维护哪些HRegion 。

在HBase中可以启动多个HMaster,通过ZooKeeper的Master选举机制来保证系

统中总有一个Master在运行。HMaster的具体包括以下功能。

1、管理用户对表的增、删、改、查操作。

2、管理HRegionServer的负载均衡,调整HRegion分布。

3、在HRegion分裂后,负责新HRegion的分配。

4、在HRegionServer停机后,负责失效HRegionServer上的HRegion迁移。

ZooKeeper

    ZooKeeper存储的是HBase中的一ROOT表和.META.表的位置,这是HBase中两

张特殊的表,称为根数据表(-ROOT-)和元数据表(.META. )。.META表记录普通用

户表的HRegion标识符信息,每个HRegion的标识符为:表名+开始主键十唯一ID。

随着用户表的HRegion的分裂,.META表的信息也会增加,并且还可能会被分割为几

个HRegion,此时可以用一个-ROOT-表来保存META的HRegion信息,而-ROOT-表

是不能被分割的,也就是-ROOT表只有一个HRegion。那么客户端(Client)在访问

用户数据前需要先访问ZooKeeper,然后访问一ROOT表,接着访问.META.表,最后

才能找到用户数据所在的位置进行访问。

    此外ZooKeeper还负责监控各个机器的状态,之前各机器需要在ZooKeeper中注册一

个实例。当某台HRegionServer发生故障时,通知HMaster进行HRegion迁移;若HMaster

发生故障,ZooKeeper负责恢复HMaster,并且保证同时有且只有一台HMaster运行。

特点

HBase是一个基于列模式的映射数据库,它只能表示简单的键一值的映射关

系。与关系型数据库相比,它具有如下特点。

1、数据类型:

HBase只有简单的字符串类型,它只保存字符串.而关系型数据库有着丰富的类型选择和存储方式。

2、数据操作:

HBase只有简单的插入、查询、删除、清空等操作,表和表之间是

分离的,没有复杂的表和表之间的关系,所以不能也没有必要实现表和表之间

的关联操作。而关系型数据库有多种连接操作。

3、存储模式:

HBase是基于列存储的,每个列族都由几个文件保存,不同列族的

文件是分离的。而关系型数据库是基于表格结构和行模式存储的。

4、数据维护:

HBase的更新操作实际上是插入了新的数据,它的旧版本依然会保留,

而关系型数据库是替换修改。

5、可伸缩性:

HBase这类分布式数据库就是为了这个目的而开发出来的,所以它

能够轻松地增加或减少硬件数量,并且对错误的兼容性也比较高。而关系型数

据库通常需要增加中间层才能实现类似的功能。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、首先下载HBase的安装包

https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/

这里选择2.4.5版本下的bin.tar.gz的文件下载

下载成功之后将其上传并解压到master服务器上

 
目录文件说明: 

bin: 包含了所有可执行命令与脚本

conf:配置文件目录

hbase-webapps:存储Web应用的目录,这些应用主要用于查看HBase的运行状态。

默认访问地址http://master:16010,其中master是HBase Mater服务器地址。

lib:jar文件目录,包括第三方依赖与Hadoop相关jar文件,其中Hadoop相关jar文件最好能与实际运行的Hadoop版本一致。

logs:日志文件

2、分布模式的HBase会运行在多个节点上,通常是将HBase的HMaster运行在HDFS的NameNode上,而

将HRegionServer运行在HDFS的DataNode上。

进入到conf目录,修改配置文件

修改hbase-site.xml

<configuration>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
  </property>
  <property>
    <name>hbase.master</name>
    <value>master:600000</value>
  </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master,slave1,slave2</value>
  </property>
</configuration>

说明:

hbase.cluster.distributed 配置HBase为完全分布式

hbase.master 配置HMaster的地址

hbase.zookeeper.quorum 配置Zookeeper集群中所有服务器的位置

hbase.rootdir 配置HRegionServer的数据库存储目录

3、修改hbase-env.sh

此文件是来配置全局HBase集群系统的特性,每一台机器都可以通过该文件来了解全局HBse的

某些特性。在文件末尾需要增加以下环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_162
export HADOOP_HOME=/hadoop/hadoop-2.8.0
export HBASE_HOME=/hbase/hbase-2.4.5
export HBASE_MANAGES_ZK=true

说明:

    前3个环境变量分别代表Java.、Hadoop、HBase的安装目录。分布式的HBase集

群需要ZooKeeper实例的运行,最后一个环境变量HBASE MANAGES ZK表示HBase

是否使用内置的ZooKeeper实例,默认为true。当在hbase-site.xml文件中配置了hbase.

zookeeper.quorum属性后,系统会使用该属性指定的ZooKeeper集群服务器列表。在启动

HBase时,HBase将把ZooKeeper作为自身的一部分运行,其对应进程为“HQuorumPeer" ,

关闭HBase时其内置ZooKeeper实例也一起关闭。如果HBASE MANAGES ZK为

false,表示不会使用内置ZooKeeper实例,也就是内置ZooKeeper不会随HBase启动,而

需要用户在指定机器上独立安装配置ZooKeeper实例,同样使用hbase.zookeeper.quorum

属性指定这些机器,并且在启动HBase之前必须手动启动这些机器的ZooKeeper。

这里使用HBase内置ZooKeeper实例。

4、修改regionservers文件

    该文件列出T所有HRegionServer节点,配置方式与Hadoop的slaves文件类似,

每一行指定一台机器。当HBase启动、关闭时会把此文件中列出的所有机器同时启动、

关闭。

5、同Hadoop的分布式安装类似,还需要将HBase所在目录/hbase分别复制到slave1、slave2

scp -r /hbase slave1:/
scp -r /hbase slave2:/

6、启动HBase

进入到master节点的hbase的bin目录下

./start-hbase.sh

7、在slave1和2节点上输入jps查看增加了两个java进程,HQuorumPeer 为ZooKeeper进程和HMaster为HBase进程。

8、在启动HBase后,通过命令

./hbase shell

进入到HBase Shell

然后使用命令

status

可以看到HBase的运行状态

标识共有两个HRegionServer正在正常运行

还可以通过HMaster节点的16010端口查看HBase的运行状态

http://192.168.148.128:16010/

最后通过命令exit退出HBase Shell
 

猜你喜欢

转载自blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119511593