HBase 学习:Region 迁移、合并、分裂和负载均衡 负载均衡是分布式系统的必备功能,多个节点组成的分布式系统必须通过负载均衡机制保证各个节点之间负载的均衡性,一旦出现负载非常集中的情况,就很有可能导致对应的部分节点响应变慢,进而拖慢甚至拖垮整个集群。HBase 基于 Region 的数量实现负载均衡。平衡 Region 数量会进行 Region 迁移。为了避免单个 Region 过大或者过小,可以对 Region 做合并或分裂操作。本文首先介绍 R 2020-11-13 技术文章 HBase
HBase 学习:读取流程 和写流程相比,HBase 读数据的流程更加复杂。主要基于两个方面的原因:一是因为 HBase 一次范围查询可能会涉及多个 Region、多块缓存甚至多个数据存储文件;二是因为 HBase 中更新操作以及删除操作的实现都很简单,更新操作并没有更新原有数据,而是使用时间戳属性实现了多版本;删除操作也并没有真正删除原有数据,只是插入了一条标记为”deleted”标签的数据,而真正的数据删除发生在系统异步 2020-10-19 技术文章 HBase
HBase 学习:Flush 和 Compaction 当数据已经被写入 WAL 与 MemStore,就可以说数据已经被成功写到 HBase 中了。随着数据的不断写入,MemStore 中存储的数据会越来越多,系统会将 MemStore 中的数据进行 Flush 操作写入文件形成 HFile。而随着 Flush 产生的 HFile 文件越来越多,系统还会对 HFile 文件进行 Compaction 操作。本文主要介绍数据写入后 Flush & 2020-10-16 技术文章 HBase
HBase 学习:写入流程 本文介绍了 HBase 中写数据的接口和方式,数据路由和分发,以及 RegionServer 侧将数据写入到 Region 中的全部流程。 2020-10-15 技术文章 HBase
HBase 学习:RegionServer RegionServer 是 HBase 系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer 包含多个核心模块:HLog、MemStore、HFile 以及 BlockCache。本文主要介绍 RegionServer 核心模块的作用、内部结构等内容。后续文章中将会进一步介绍 HBase 的写入读取流程。 2020-09-29 技术文章 HBase HLog MemStore HFile BlockCache
数据结构和算法:Bloom Filter 如何高效判断元素 w 是否存在于集合 A 之中?首先想到的答案是,把集合 A 中的元素一个个放到哈希表中,然后在哈希表中查一下 w 即可。但如果 A 中元素数量巨大,甚至数据量远远超过机器内存空间,该如何解决问题呢?实现一个基于磁盘和内存的哈希索引当然可以解决这个问题。而另一种低成本的方式就是借助 Bloom Filter(布隆过滤器)来实现。 2020-09-27 数据结构和算法 HBase Bloom filter
数据结构和算法:LSM Tree LSM tree 全称是 Log-structured merge-tree,是一种分层,有序,面向磁盘的数据结构。其核心原理是磁盘批量顺序写比随机写性能高出很多,可以通过围绕这一原理进行设计和优化,让写性能达到最优。相较于传统的 B+树,它减少了磁盘随机读取的需求,从而在一定程度上改善了数据库的写能力,当然在一定程度上牺牲了数据库的读能力。LSM tree 也是当今流行的各种 NoSQL 或 N 2020-09-25 数据结构和算法 HBase LSM tree
数据结构和算法:Skip List Skip List(跳表)是一种能高效实现插入、删除、查找的内存数据结构。常用来对标 AVL tree 或红黑树等二叉查找树。与红黑树以及其他的二分查找树相比,跳跃表的优势在于实现简单,而且在并发场景下加锁粒度更小,从而可以实现更高的并发性。因此在一些热门项目中,如 Redis、LevelDB、HBase 都把跳跃表作为一种维护有序数据集合的基础数据结构。JDK 中也内置了基于 Skip List 2020-09-02 数据结构和算法 HBase Skip List Redis