HBase介绍
HBase是Hadoop Database的简称,是一个分布式的、面向列的开源数据库。使用HBase在HDFS读取消费/随机访问数据(随机存取)。
利用Hadoop HDFS作为其文件存储系统
利用Hadoop MapReduce来处理HBase中的海量数据
利用Zookeeper作为协同服务
高可靠、高性能、面向列、可伸缩
HBase架构
HBase 需要运行在 HDFS 之上,以 HDFS 作为其基础的存储设施。HBase 上层提供了访问的数据的 Java API 层,供应用访问存储在 HBase 的数据。在 HBase 的集群中主要由 Master 和 Region Server 组成,以及 Zookeeper,具体模块如下图所示:
MasterHBase 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的存储机制
物理模型
HRegionServer是HBase中最主要的组件,负责table数据的实际读写,管理Region。在分布式集群中,HRegionServer一般跟DataNode在同一个节点上,目的是实现数据的本地性,提高读写效率。
Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。
每个Region包含着多个Store对象。每个Store包含一个MemStore或若干StoreFile,StoreFile包含一个或多个HFile。MemStore存放在内存中,StoreFile存储在HDFS上。
逻辑视图
基本概念:
RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要;
Column Family:列族,拥有一个名称(string),包含一个或者多个相关列;
Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加;
Timestamp:类型为Long,默认值是系统时间戳,可由用户自定义;一个单元格的不同版本的值按照时间戳降序排列在一起,在读取的时候优先取最新的值。
Cell:单元格,即:
实验环境
虚拟机: Hadoop版本: Java版本: HBase版本: ZooKeeper:
HBase安装部署
安装前准备
1、准备不少于3个节点的集群,这里是Hadoop-Master、Hadoop-Slave、Hadoop-Slave2。
2、 各服务器之间系统时间保持一致先设置时区为亚洲上海:
切换到root,每小时从时间服务器上同步时间:
下载
到 下载稳定版HBase,下载完成后上传到Hadoop-Master节点,解压。
到 下载Zookeeper,下载完成后上传到Hadoop-Master节点,解压。
安装Zookeeper
1、配置zoo.cfg属性文件,文件在 目录,重命名zoo_sample.cfg
修改dataDir目录,
配置服务器 service.N =YYY:A:B
说明:N:代表服务器编号(也就是myid里面的值)YYY:服务器地址A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)B:表示 是选举端口(默认是3888)
2、创建 文件夹,在该目录下创建 文件,内容为
3、修改环境变量
4、拷贝zookeeper-3.4.12到其它节点
修改Hadoop-Slave的zookeeper-3.4.12的data目录下的myid为2,修改Hadoop-Slave的zookeeper-3.4.12的data目录下的myid为3。
启动
在3个节点分别运行以下命令:
查看状态:
安装HBase
配置HBase
1、修改环境变量hbase-env.sh
2、修改配置文件hbase-site.xml
3、设置regionservers
4、设置环境变量
5、复制到其它节点
启动并验证
1、在Hadoop-Master上运行
2、访问
到这里HBase就安装完成。
参考
HBase官方文档
Hadoop相关知识整理系列之一:HBase基本架构及原理
领取专属 10元无门槛券
私享最新 技术干货