目录
一、目的及要求:
实验目的:
- 掌握完全分布模式的整合平台中HBase的高可用完全分布模式的安装
- HBase的高可用完全分布模式的安装和验证
实验要求:
- 完成HBase的高可用完全分布模式的安装
- HBase的相关服务进程能够正常启动
- HBase控制台能够正常使用
- 表创建、数据查询等数据库操作能够正常进行
二、环境要求:
- 五台独立PC机或虚拟机
- 主机之间有有效的网络连接
- 每台主机内存2G以上,磁盘50G
- 已安装CentOS 7.4操作系统
- 所有主机已完成网络属性配置
- 所有主机已安装JDK
- 已完成zookeeper集群的安装和部署
- 已完成Hadoop集群的安装和部署
软件选用HBase的1.2.3版本,软件包名hbase-1.2.3-bin.tar.gz
集群规划:
HBase有主节点和Region节点2类 服务节点,高可用完全分布模式中需要满足主节点有备用功能的基本要求,所以需要两台或者两台以上的主机作为主节点,而完全分布模式中需要满足Re.0.gion有备份和数据处理能够分布并行的基本需求,所以要两台或者两台以上的主机作为Region节点,具体规划如下:
主机名 | IP地址 | 服务描述 |
Cluster-01 | 192.168.10.111 | HBase主控节点 |
Cluster-02 | 192.168.10.112 | HBase备用主控节点 |
Cluster-03 | 192.168.10.113 | HBase Region服务 |
Cluster-04 | 192.168.10.114 | HBase Region服务 |
Cluster-05 | 192.168.10.115 | HBase Region服务 |
三、具体步骤:
1、HBase基本安装配置
★该项的所有操作步骤使用专门用于集群的用户admin进行
★此项只在一台主机操作,然后在下一步骤进行同步安装与配置
1. 创建存放HBase相关文件的目录,并将所用的软件包解压到该目录下
2. 配置HBase相关的环境变量
3. 生效环境变量,并查看配置是否正确,验证HBase的安装配置是否成功
二:HBase高可用完全分布模式配置
★该项的所有操作步骤使用专门用于集群的用户admin进行
1、在HBase目录下创建HBase的元数据文件目录tmp,和HDFS的日志文件目录logs,进入HBase的配置文件所在目录
2、修改配置文件
修改JAVA_HOME
修改HBASE_CLASSPATH,指定Hadoop的配置文件所在路径
修改HBASE_LOG_DIR,指定日志文件的存放路径
HBASE_MANAGES_ZK,关闭HBase自带的zookeeper组件
3、修改配置文件hbase-site.xml
3、修改配置文件regionservers(删除文件原有内容,加入所要加入的内容)
4、创建配置文件backup-masters,并对配置文件进行修改
三:同步安装配置以及系统时间
★该项的所有操作步骤使用专门用于集群的用户admin进行
1、将hbase目录和.bash_profile文件发给集群中所有主机
2、在每台主机上生效环境变量,并查看配置是否正确,验证HBase的安装配置是否成功
Cluster-02
Cluster-03
Cluster-04
Cluster-05
3、在虚拟机设置上开启时间同步
★时间同步项的所有操作需要使用root用户进行
4、在所有主机上对系统时间进行设置,并将设置的时间同步到硬件时钟(在root用户下进行,并尽可能的在所有主机上将设置时间操作同时进行)
Cluster-01
Cluster-02
Cluster-03
Cluster-04
Cluster-05
四:HBase高可用完全分布模式启动与验证
★该项的所有操作步骤使用专门用于集群的用户admin进行。
★启动HBase集群之前首先确保Zookeeper集群已被开启状态。(实验5台)Zookeeper的启动需要分别在每个计算机的节点上手动启动。如果家目录下执行启动报错,则需要进入zookeeper/bin目录执行启动命令。
★启动HBase集群之前首先确保Hadoop集群已被开启状态。(实验5台)。Hadoop只需要在主节点执行启动命令。
1、启动zookeeper服务,并在所有集群中查看zookeeper服务当前的状态
2、启动Hadoop集群
3、启动HBase集群
4、用jps查看java进程信息
Cluster-01
Cluster-02
Cluster-03
Cluster-04
Cluster-05
5、进入HBase的控制台,并创建表tab1
四、所遇问题:
问题一:
第一次启动HBase时只有Cluster-03,Cluster-04,Cluster-05上面有HRegionServer服务,而Cluster-01,Cluster-02上面没有HMaster
解决方案:
重启虚拟机,再重新启动zookeeper,Hadoop,HBase服务,java进程正常。
问题二:
一段时间以后HBase掉线,重启虚拟机后,重启服务后hbase控制台正常
掉线原因分析:
集群中时间不同步导致zookeeper中存储的hbase信息不一致进而导致hmaster死掉。
hbase的conf目录中没有添加hdfs中的core-site.xml和hdfs-site.xml。logs日志信息显示org.apache.hadoop.hbase.TableExistsExcep-Tion:hbase:namespace异常,可能是更换了hbase版本后zookeeper还保留了上一次的HBASE设置,造成冲突。
解决方案:
1、进入zookeeper的bin目录;
2、执行客户端脚本:$sh zkCli.sh
3、查看Zookeeper节点信息: ls /
4、递归删除hbase节点:rmr /hbase
5、退出:quit
6、重启Zookeeper
五、总结
一:HBase集群分析
REGION:是HBASE中对表进行切割的单元
HMASTER: HBASE的主节点,负责整个集群的状态感知,负载分配、负责用户表的元数据管理 (可以配置多个用来实现HA)
为regionserver分配region,负责regionserver负载均衡
用户对表的增删改查
如果当前的regionserver宕机,会把region迁移
REGION-SERVER: HBASE中真正负责管理region的服务器,也就是负责为客户端进行表数据读写的服务器
维护master给它的region
当这个region过大的情况下,他还负责切分这个过大的region
(负责客户端的IO请求,去hdfs上进行读写数据)
ZOOKEEPER: 整个HBASE中的主从节点协调,主节点之间的选举,集群节点之间的
上下线感知……都是通过zookeeper来实现
Region 存储寻址入口
监控:REGION SERVER 上下线 把这个状态告诉master
存储hbase的schema(当前哪些表,表里有哪些列族)
二:HBase总结
(1)HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
(2)HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应来源
(3)HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:
- 管理用户对Table的增、删、改、查操作
- 管理HRegionServer的负载均衡,调整Region分布
- 在Region Split后,负责新Region的分配
- 在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移
(4)HRegionServer
HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个 Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。