
HBase
文章平均质量分 91
HBase
K. Bob
多读书,多睡觉;少吃零食,多运动。
展开
-
HBase读写缓存
目录读写缓存BlockCacheLRUBlockCacheSlabCacheBucketCache读写缓存 HBase上RegionServer的cache主要分为两个部分,分别是memstore&blockcache,其中memstore主要用于写缓存,而blockcache用于读缓存。 当数据写入HBase时,会先写入memstore,RegionServer会给每个region提供一个memstore,memstore中的数据达到系统设置的阈值后,会触发flush将memstore中原创 2021-03-15 10:10:08 · 1610 阅读 · 0 评论 -
HBase数据结构之 跳跃表、LSM、布隆过滤器
目录LSM树用多路归并实现LSM树的文件合并用跳表实现LSM的内存部分布隆过滤器LSM树HBase中的LSM树用多路归并实现LSM树的文件合并 随着写入的增加,内存数据会不断地刷新到磁盘上。最终磁盘上的数据文件会越来越多。如果用户有读取请求,则需要将大量的磁盘文件进行多路归并,之后才能读取到所需的数据。 LSM树的索引实际上是将写入操作全部转化为了磁盘的顺序写入,提高了写入性能。但是,这种设计是以牺牲一定的读操作性能为代价的,因为读取的时候,需要归并多个文件来获取满足条件的KV,非常消耗磁盘I原创 2020-07-20 22:12:56 · 956 阅读 · 0 评论 -
HBase数据写入方式 与 BulkLoad
cookie和session都是用来跟踪浏览器用户身份的会话方式。SessionCookieSession与Cookie区别Session session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id...原创 2019-08-07 11:42:14 · 1522 阅读 · 0 评论 -
HBase的MVCC
MVCC是一种通过数据的多版本来解决读写一致性问题的解决方案。HBase在保证写数据一致性的同时,还保证读取的高性能。这一机制的实现就是通过MVCC来控制的。HBase为什么需要并发控制?可能存在多个客户端,可能同时在操作某一个Region的某一行的某一列。HBase的MVCC是在HRegion中的写操作的实现。MVCC实现类 MVCC的实现类是MultiVersionConsistencyControl,是个Region级别的MVCC控制。当有写操作来时,MVCC会做如下事情:HRegion原创 2020-05-30 23:34:56 · 1118 阅读 · 0 评论 -
Hbase的二级索引
由于在 HBase 中的二级索引是通过建表的方式实现的,当需要更新时,就是两个表的数据原子更新,也就是跨表的事务功能,而 Hbase 只提供行级事务,没有跨表和跨行的事 务功能,这就需要开发者自己去实现,如果对数据一致性要求较高,那么就可能需要自己 去实现一套分布式的事务机制,之所以是分布式的事务机制,是因为原始数据可能由一些 HRegionserver 维护,而索引表由另外一些 HRegionserver 维护,这个事务机制就涉及到了多个HRegionserver,也就是分布式的事务机制。二级索引设原创 2020-05-29 22:15:41 · 756 阅读 · 0 评论 -
HBase删除数据
HBase不会定位到需要删除或更新的记录进行操作。由于HBase底层依赖HDFS,对于HBase删除操作来说,HBase无法在查询到之前的数据并进行修改,只能顺序读写,追加记录。为了更新或删除数据,HBase会插入一条一模一样的新的数据,但是key type会标记成Delete状态,以标记该记录被删除了。在读取的时候如果取到了是Delete,而且时间是最新的,那么这条记录肯定是被删掉了。HF...原创 2020-04-29 13:50:51 · 1942 阅读 · 0 评论 -
HBase中不建议使用过多列族
HBase列族个数限制列族数对 Flush 的影响列族数对 Split 的影响列族数对 Compaction 的影响列族数对 HDFS 的影响列族数对 RegionServer 内存的影响列族数对 Flush 的影响 在 HBase 中,调用 API 往对应的表插入数据是会写到 MemStore 的,而 MemStore 是一种内存结构,每个列族对应一个 MemStore(和零个或多个 HF...原创 2020-04-24 19:42:22 · 1348 阅读 · 0 评论 -
HBase如何快速查询
HBase能提供实时计算服务主要原因是由其架构和底层的数据结构决定的,即由LSM-Tree(Log-Structured Merge-Tree) + region分区 + Cache决定——客户端可以直接定位到要查数据所在的HRegion server服务器,然后直接在服务器的一个region上查找要匹配的数据,并且这些数据部分是经过cache缓存的。 HBase会将数据保存到内存中,...原创 2020-04-23 20:31:23 · 2849 阅读 · 0 评论 -
HBase Region分裂以及预分区
HBase默认建表时有一个region,这个region的rowkey是没有边界的,即没有start key和end key,在数据写入时,所有数据都会写入这个默认的region,随着数据量的不断增加,此region已经不能承受不断增长的数据量,会进行split,分成2个region。在此过程中,会产生两个问题:【1】数据往一个region上写,会有写热点问题。【2】region split会...原创 2020-02-14 14:58:11 · 1105 阅读 · 0 评论 -
HBase读写流程
HBase读写流程HBase 写流程HBase读流程HBase 写流程 插入一条数据到某个表,因为HBase通过ZooKeeper协调,Client 首先连接ZooKeeper,从ZooKeeper中获取表region相关信息。根据要插入的rowkey,获取指定的RegionServer信息,如果是批量提交的话,会把rowkey根据HRegion Location进行分组。 当得到了需要...原创 2020-02-08 15:01:01 · 588 阅读 · 0 评论 -
HBase HA
HBase进行HA配置的原因 HBase通过WAL来保障数据不丢失。HBase在写数据前会先写HLog,HLog中记录的是所有数据的变动, HBase的高可用也是通过HLog实现的。 HBase 是一个没有单点故障的分布式系统,计算层和存储层都有各自的保障了服务的可用性。HBase 容错:HMaster 容错 HMaster 可以配置HA,利用 Zookeeper 重新选择新的 ...原创 2020-01-20 22:38:01 · 437 阅读 · 0 评论 -
Hbase RowKey设计以及HBase数据倾斜问题
作为Nosql数据库的一员,HBase查询只能通过其rowkey来查询(rowkey用来表示唯一一行记录),HBase中的数据是按照rowkey的ASCII字典顺序进行全局排序的。HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定位。 HBa...原创 2019-12-19 12:46:25 · 932 阅读 · 0 评论 -
HBASE调优
服务端调优垃圾回收与JVM优化Java本身提供了垃圾回收机制,依靠JRE对程序行为的各种假设进行垃圾回收。但是HBase支持海量数据持续入库,非常占用内存,因此繁重的负载会迫使内存分配策略无法安全地依赖于JRE的判断,主要调节的是RegionServer节点的JVM垃圾回收参数。(1)HBASE_OPTS或者HBASE_REGIONSERVER_OPT变量来设置垃圾回收的选项,后面一般是用于...原创 2019-12-08 20:20:48 · 507 阅读 · 0 评论 -
HBASE
HBASEHBASE与关系型数据库HBASE表结构HBASE集群架构及表存储机制HBASE基本语法HBASE与关系型数据库 Oracle、MySQL和HBASE比较:Oracle和MySQL是传统的关系型数据库,优势在于处理复杂的表与表之间的关系,进行各种复杂的关系查询。HBASE是没有表关联的,不提供表的关联查询,它对于这种关系的处理是不擅长的,属于NoSQL的范围,只适合做简单的查询,基...原创 2019-05-17 21:27:29 · 2603 阅读 · 0 评论