最新 最热

hbase源码系列(五)Trie单词查找树

在上一章中提到了编码压缩,讲了一个简单的DataBlockEncoding.PREFIX算法,它用的是前序编码压缩的算法,它搜索到时候,是全扫描的方式搜索的,如此一来,搜索效率实在是不敢恭维,所以...

2018-03-01
0

hbase源码系列(三)Client如何找到正确的Region Server

客户端在进行put、delete、get等操作的时候,它都需要数据到底存在哪个Region Server上面,这个定位的操作是通过HConnection.locateRegion方法来完成的。loc = hConnection.locateRegion(this.tableName, row.getRow());...

2018-03-01
0

hbase源码系列(二)HTable 探秘

hbase的源码终于搞一个段落了,在接下来的一个月,着重于把看过的源码提炼一下,对一些有意思的主题进行分享一下。继上一篇讲了负载均衡之后,这一篇我们从client开始讲吧,从client到master再到region server,按照这个顺序来开...

2018-03-01
0

hbase 学习(十四)Facebook针对hbase的优化方案分析

使用hbase的目的是为了海量数据的随机读写,但是在实际使用中却发现针对随机读的优化和gc是一个很大的问题,而且hbase的数据是存储在Hdfs,而Hdfs是面向流失数据访问进行设计的,就难免带来效率的下降。下面介绍一下Facebook...

2018-03-01
0

hbase源码系列(四)数据模型-表定义和列族定义的具体含义

hbase是一个KeyValue型的数据库,在《hbase实战》描述它的逻辑模型【行键,列族,列限定符,时间版本】,物理模型是基于列族的。但实际情况是啥?还是上点代码吧。     HTableDescriptor tableDesc = new HTableDescriptor("...

2018-03-01
0

hbase源码系列(十四)Compact和Split

先上一张图讲一下Compaction和Split的关系,这样会比较直观一些。Compaction把多个MemStore flush出来的StoreFile合并成一个文件,而Split则是把过大的文件

2018-03-01
0

hbase 学习(十五)缓存机制以及可以利用SSD作为存储的BucketCache

下面介绍Hbase的缓存机制:   a.HBase在读取时,会以Block为单位进行cache,用来提升读的性能  b.Block可以分类为DataBlock(默认大小64K,存储KV)、BloomBlock(默认大小128K,存储BloomFilter数据)、IndexBlock(默认大小...

2018-03-01
0

hbase源码系列(七)Snapshot的过程

在看这一章之前,建议大家先去看一下snapshot的使用。可能有人会有疑问为什么要做Snapshot,hdfs不是自带了3个备份吗,这是个很大的误区,要知道hdfs的3个备份是用于防止网络传输中的失败或者别的异常情况导致数据块丢失或者...

2018-03-01
0

hbase源码系列(六)HMaster启动过程

这一章是server端开始的第一章,有兴趣的朋友先去看一下hbase的架构图,我专门从网上弄下来的。  按照HMaster的run方法的注释,我们可以了解到它的启动过程会去做以下的动作。 * <li>阻塞直到变成ActiveMaster * <li>结...

2018-03-01
0

hbase源码系列(十)HLog与日志恢复

HLog概述hbase在写入数据之前会先写入MemStore,成功了再写入HLog,当MemStore的数据丢失的时候,还可以用HLog的数据来进行恢复,下面先看看HLog的图。旧版的HLog是实...

2018-03-01
0