本帖最后由 泰克教育 于 2022-10-20 16:25 编辑
HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列而不是基于行的模式。
HBase使用和BigTable非常相同的数据模型。用户存储数据行在一个表里,一个数据行拥有一个可选择的键和任意数量的列,一个或多个列组成一个ColumnFamily,一个Fmaily下的列位于一个HFile中,易于缓存数据。表是疏松的存储的,因此用户可以给行定义各种不同的列。在HBase中数据按主键排序,同时表按主键划分为多个Region。
在分布式的生产环境中,HBase需要运行在 HDFS之上,以HDFS作为其基础的存储设施。HBase 上层提供了访问的数据的Java API层,供应用访问存储在 HBase的数据。在 HBase的集群中主要由Master和Region Server组成,以及Zookeeper,具体模块如下图所示:
简单介绍一下HBase中相关模块的作用:
Master
HBase Master用于协调多个Region Server,侦测各个RegionServer之间的状态,并平衡RegionServer之间的负载。HBaseMaster还有一个职责就是负责分配Region给RegionServer。HBase允许多个Master节点共存,但是这需要Zookeeper的帮助。
不过当多个Master节点共存时,只有一个Master是提供服务的,其他的Master节点处于待命的状态。当正在工作的Master节点宕机时,其他的Master则会接管HBase的集群。
Region Server
对于一个RegionServer而言,其包括了多个Region。RegionServer的作用只是管理表格,以及实现读写操作。Client直接连接RegionServer,并通信获取HBase中的数据。
对于Region而言,则是真实存放HBase数据的地方,也就说Region是HBase可用性和分布式的基本单位。如果当一个表格很大,并由多个CF组成时,那么表的数据将存放在多个Region之间,并且在每个Region中会关联多个存储的单元 (Store)。
Zookeeper
对于HBase而言,Zookeeper的作用是至关重要的。首先Zookeeper是作为HBase Master的HA解决方案。也就是说,是Zookeeper保证了至少有一个HBase Master处于运行状态。
并且Zookeeper负责Region和Region Server的注册。其实Zookeeper发展到目前为止,已经成为了分布式大数据框架中容错性的标准框架。不光是HBase,几乎所有的分布式大数据相关的开源框架,都依赖于Zookeeper实现HA。
注意: HBase集群建立在hadoop集群基础之上,所以在搭建HBase集群之前需要把Hadoop集群搭建起来,并且要考虑二者的兼容性。
环境准备
各服务器修改主机名,配置如下图: 安装HBase
切换超级用户 su –(我这里用的超级用户进行部署的,所以要切换)
1、进入/usr/local/目录下,新建一个文件夹 mkdir hbase 2、更改hbase的全限:chmod 777 hbase 3、利用远程文件传输工具将hbase压缩包上传到新建的文件夹hbase中 4、解压hbase压缩包:tar -xvf hbase-1.2.10.tar.gz 5、进入hbase/conf中,修改三个配置文件(hbase-env.sh,hbase-site.xml,regionservers) 6、vi hbase-env.sh 添加:export JAVA_HOME=你的jdk解压目录 添加:export HBASE_CLASSPATH=/usr/local/hadoop/hadoop2.5.6/etc/hadoop(用自己的Hadoop目录) 将export HBASE_MANAGES_ZK=true前面的#号去掉,目的就是使用系统自带的zookeeper 7、vi hbse-site.xml 添加如下内容: <property> <name>hbase.rootdir</name> <value>hdfs://hadoop:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.master</name> <value>hadoop:6000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>slave1,slave2,slave3</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/usr/local/hbase/hbase-1.2.10/hbase_tmp</value> </property> 8、vi regionservers slave1 slave2 slave3 将各个从节点的主机名添加进去。去掉localhost 9、配置全局环境变量 vi /etc/profile 添加 export HBASE_HOME=你的hbase的解压目录 export PATH=$HBASE_HOME/bin: source /etc/profile 10、分发hbase文件发到其他节点 使用scp命令分发:scp -r /usr/local/hbase slave1:/usr/local/(分发三给节点)
启动集群
1、启动hadoop节点:start-all.sh(无异常时在启动hbase的节点)
主节点:namednoe、SecondaryNameNode、ResourceManager 三个从节点:DataNode、NodeManager 2、启动hbase节点:start-hbase.sh 主节点:HMaster 三个从节点:HRegionServer、HQuorumPeer 注:如果访问失败,关闭防火墙:service iptables stop(临时关闭) chkconfig iptables off(永久关闭,需重启虚拟机让它生效) 4.Web端访问HBase效果图
|