场景
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的运行状态
最后通过命令exit退出HBase Shell
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136219.html