HBase 理解
来源:互联网 发布:淘宝怎样免费开店 编辑:程序博客网 时间:2024/05/16 14:23
图 3. HBase 的工作原理
在上面的图中,我们需要注意几个我们之前没有提到的概念:Store、MemStore、StoreFile 以及 HFile。带着这几个新的概念,我们完整的梳理下整个 Hbase 的工作流程。
首先我们需要知道 HBase 的集群是通过 Zookeeper 来进行机器之前的协调,也就是说 HBase Master 与 Region Server 之间的关系是依赖 Zookeeper 来维护。当一个 Client 需要访问 HBase 集群时,Client 需要先和 Zookeeper 来通信,然后才会找到对应的 Region Server。每一个 Region Server 管理着很多个 Region。对于 HBase 来说,Region 是 HBase 并行化的基本单元。因此,数据也都存储在 Region 中。这里我们需要特别注意,每一个 Region 都只存储一个 Column Family 的数据,并且是该 CF 中的一段(按 Row 的区间分成多个 Region)。Region 所能存储的数据大小是有上限的,当达到该上限时(Threshold),Region 会进行分裂,数据也会分裂到多个 Region 中,这样便可以提高数据的并行化,以及提高数据的容量。每个 Region 包含着多个 Store 对象。每个 Store 包含一个 MemStore,和一个或多个 HFile。MemStore 便是数据在内存中的实体,并且一般都是有序的。当数据向 Region 写入的时候,会先写入 MemStore。当 MemStore 中的数据需要向底层文件系统倾倒(Dump)时(例如 MemStore 中的数据体积到达 MemStore 配置的最大值),Store 便会创建 StoreFile,而 StoreFile 就是对 HFile 一层封装。所以 MemStore 中的数据会最终写入到 HFile 中,也就是磁盘 IO。由于 HBase 底层依靠 HDFS,因此 HFile 都存储在 HDFS 之中。这便是整个 HBase 工作的原理简述。
我们了解了 HBase 大致的工作原理,那么在 HBase 的工作过程中,如何保证数据的可靠性呢?带着这个问题,我们理解下 HLog 的作用。HBase 中的 HLog 机制是 WAL 的一种实现,而 WAL(一般翻译为预写日志)是事务机制中常见的一致性的实现方式。每个 Region Server 中都会有一个 HLog 的实例,Region Server 会将更新操作(如 Put,Delete)先记录到 WAL(也就是 HLog)中,然后将其写入到 Store 的 MemStore,最终 MemStore 会将数据写入到持久化的 HFile 中(MemStore 到达配置的内存阀值)。这样就保证了 HBase 的写的可靠性。如果没有 WAL,当 Region Server 宕掉的时候,MemStore 还没有写入到 HFile,或者 StoreFile 还没有保存,数据就会丢失。或许有的读者会担心 HFile 本身会不会丢失,这是由 HDFS 来保证的。在 HDFS 中的数据默认会有 3 份。因此这里并不考虑 HFile 本身的可靠性。
- HBase 理解
- HBase理解
- 对于HBase的理解
- HBase的一些理解
- 深入理解HBase Memstore
- 深入理解HBase Memstore
- 深入理解HBase Memstore
- 深入理解HBase Memstore
- Hbase自己理解
- 深入理解HBase Memstore
- 深入理解HBase Memstore
- 深入理解HBase Memstore
- 深入理解HBase Memstore
- 深入理解HBase Memstore
- HBase-LSM树理解
- HBase总结:LSM理解
- Hbase数据库简单理解
- 看图理解HBase
- Codeforces 776A-A Serial Killer
- 聊聊Linux操作系统对进程的调度
- 员工管理系统之MYSQL
- java中Scanner类nextInt之后用nextLine无法读取输入
- 2016蓝桥杯javaA组第五题答案
- HBase 理解
- Predict the winner
- 时域和频域之间联系
- 【九度OJ】题目1065:输出梯形 解题报告
- 《Android高级进阶》目录
- N皇后问题的非递归回溯和递归回溯
- 主元消去法(N元一次方程组)
- Leetcode 491. Increasing Subsequences 上升序列 解题报告
- Spring编程式事务管理和声明式事务管理 案例