Hbase简介
文章目录
一、HBase概述
- HBase是一个领先的NoSQL数据库
是一个面向列存储的NoSQL数据库
是一个分布式Hash Map,底层数据是Key-Value格式
基于Google Big Table论文
使用HDFS作为存储并利用其可靠性 - HBase特点
数据访问速度快,响应时间约2-20毫秒
支持随机读写,每个节点20k~100k+ ops/s
可扩展性,可扩展到20,000+节点
高并发
二、HBase 应用场景
- 增量数据-时间序列数据
特点:高容量,高速写入
HBase之上有OpenTSDB模块,可以满足时序类场景,比如传感器,系统监控,股票行情监控等 - 信息交换-消息传递
特点:高容量,高速读写
通信、消息同步的应用构建在HBase之上,比如email,FaceBook等 - 内容服务-Web后端应用程序
特点:高容量,高速读写
头条类、新闻类的的新闻、网页、图片存储在HBase中
补充: HBase生态圈技术
Lily – 基于HBase的CRM
OpenTSDB – HBase面向时间序列数据管理
Kylin – HBase上的OLAP
Phoenix – SQL操作HBase工具
Splice Machine – 基于HBase的OLTP
Apache Tephra – HBase事务支持
TiDB – 分布式SQL DB
Apache Omid - 优化事务管理
Yarn application timeline server v.2 迁移到HBase
Hive metadata存储可以迁移到HBase
Ambari Metrics Server将使用HBase做数据存储
常用的有:Kylin – HBase上的OLAP
Phoenix – SQL操作HBase工具
Yarn application timeline server v.2 迁移到HBase
Hive metadata存储可以迁移到HBase
三、Habase架构
HBase 也是 Master/slaves 架构,从前面安装环境应该能看出, HBase 分布式环境安装成功后,是有一个 HMaster,多个 HResgionServer 进程。 HBase 架构如图所示:
从上图中能看出 HBase 是由 Client、 ZooKeeper、 HMaster、 HRegionServer、HDFS 等几个组件组成,组件的相关功能:
1.Client:客户端,可以是 HBase Shell、 Java API 客户端、 RestAPI 等
Client 就是用来访问 HBase 数据库的,它不仅提供了访问接口,还维护了对应的缓存(cache)来加速 HBase 的访问.
Client端的缓存主要是缓存 Region 的位置信息,减少获取元数据的时间。当 Client 端没有缓存的时候(第一次请求),
会加载 Region 的位置信息到 Client 端,后面直接使用 cache 中的信息,如果出现重试,则会重新获取 Region 的位置信息,
更新 Client 端的 cache。
2.ZooKeeper
HBase 通过 ZooKeeper 来做 HMaster 的高可用、 HRegionServer 的监控、元数据的入口以及集群配置的维护等工作。
它具体 工作如下:
(1)通过 ZoopKeeper 来保证集群中只有 1 个 HMaster 在运行,如果 HMaster异常,会通过竞争机制产生新的
HMaster 提供服务。
(2)通过 ZoopKeeper 来监控 HRegionServer 的状态,当 HRegionSevrer 有异常的时候,通过 Master
会收到 ZooKeeper 消息通知 HRegionServer 上下线的信息。
(3)通过 ZoopKeeper 存储元数据的统一入口地址(数据目录)
3.HMaster
HMaster 节点的主要职责如下:
(1) 监 控 HRegionServer , 处 理 HRegionServer 故 障 转 移 , 当 某 个HRegionServer 挂掉时, ZooKeeper 会将分配
在该 HRegionServer 上的 HRegion 分配到其他 HRegionServer 上进行管理。
(2) HRegion 分裂后,负责新的 HRegion 的分配。
(3)处理元数据的变更,比如对表的添加,修改,删除等操作。
(4)在空闲时间进行数据的负载均衡,主要就是在 HRegionServer 间迁移HRegion,达到负载均衡。
(5)通过 ZooKeeper 发布自己的位置给客户端。
4.HRegionServer
HRegionServer 直接负责用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
(1)负责和底层 HDFS 的交互,存储数据到 HDFS, HBase 是依托于 HDFS的 NoSQL 数据库,数据会存储在 HDFS 上。
(2)处理分配给它的 HRegion。
(3)刷新缓存到 HDFS。
(4)维护 HLog, HLog 是一个容错机制,下面的内容会介绍到 HLog 的功能。
(5)处理来自客户端的读写请求。 HRegionServer 是实际管理数据的,客户端的读写请求最终都要由 HRegionServer 来处理。
(6)负责处理 HRegion 变大后的拆分。
(7)负责 StoreFile 的合并工作。
5.HDFS
HDFS 为 HBase 提供最终的底层数据存储服务,同时为 HBase 提供高可用(HLog 存储在 HDFS)的支持,具体功能概括如下:
(1) 提供元数据和表数据的底层分布式存储服务。
(2) 数据多副本,保证的高可靠和高可用性。
6.Write-Ahead Logs
Write-Ahead Logs 也叫预写日志(WAL),在 HBase 中为 HLog, HLog 存储在 HDFS 上。HLog 是每一个 RegionServer 对应一个。
数据先写道HLog里面,然后在进行存储,目的是在数据丢失时可以通过日志进行恢复。
7.HRegion
HRegion是HBase集群分布数据的最小单位Region被分配给集群中的RegionServerHBase 每