
HBase使用
淡定一生2333
这个作者很懒,什么都没留下…
展开
-
HBase的Compaction理解
本文是对自己了解到的HBase Compaction机制做个总结。为什么需要Compaction: 因为HBase使用了LSM树,将写数据和索引时的随机写转变成了顺序写磁盘,提高了写入时的性能。但是小文件过多的话,查询数据时的I/O次数会增加,影响查询性能。所以HBase提供了Compaction机制,将小文件合并成大文件,目的是查询性能。Minor and M...原创 2020-05-05 16:47:27 · 3471 阅读 · 1 评论 -
GeoMesa-HBase 索引以及查询原理简单了解
在项目中使用GeoMesa作为时空索引数据库,打算了解下这个组件如何做到索引数据,又是如何做到数据查询的。本文主要是了解GeoMesa的索引原理(空间Z曲线和GeoHash算法)以及GeoMesa-HBase查询流程。空间Z曲线与GeoHash算法:下图中充满空间的Z形状的曲线就叫Z曲线,又叫peano曲线:GeoHash算法就是对这些曲线进行编码:...原创 2020-03-01 23:07:26 · 4329 阅读 · 0 评论 -
HBase Put流程分析
本文主要来了解下HBase的写入流程,先大致说一下写数据的流程:从Zookeeper中获取meta表的信息,然后从中找到对应的Region 找到对应的RegionServer,将数据在WAL日志和MemStore上各写一份 MemStore达到一定阈值之后会将数据刷写成一个StoreFile客户端Put是如何进行的: 如果一个Put就往服务端发送一次的话,那么就会有很多个...原创 2020-01-14 21:15:49 · 1169 阅读 · 0 评论 -
HBase的BulkLoad
在网上看到了一篇文章说到了HBase的BulkLoad机制,从文章中看出BulkLoad是不走HBase的服务端的,直接和Hadoop打交道将数据直接生成HFile,然后将文件直接移到Region下面。如下图所示: 相比较于直接写HBase,BulkLoad主要是绕过了写WAL日志这一步,还有写Memstore和Flush到磁盘,从理论上来分析性能会比Put快!...原创 2019-11-19 21:09:33 · 2534 阅读 · 0 评论 -
HBase客户端连接以及超时和租约机制分析
在使用HBase的时候客户端偶尔会出现超时等问题,所以本文打算简单分析下HBase客户端相关的源码,初步了解其中比较核心的机制。客户端连接源码分析:Connection的创建: 程序中设置好HBase相关连接属性之后,调用ConnectionFactory.createConnection(conf)方法连接HBase。内部是使用反射的方法初始化对应类的:该...原创 2019-08-24 15:00:17 · 2390 阅读 · 0 评论 -
HBase为什么使用LSM树
一般的关系型数据库使用的都是B+树,而《HBase权威指南》中说到HBase使用的LSM树,所以本文就是想来了解一下使用LSM树的好处是啥。先来回顾下B+树:为什么不用二叉树、红黑树? 因为二叉树结构中,每个节点至多会有两个子节点,当树的高度很高时,相应的磁盘访问次数就要增加,因为访问磁盘的速度是很慢的,从而导致查询效率低下。所以很自然的想法就是把树的高度降一降,所...原创 2019-04-13 15:27:21 · 3723 阅读 · 4 评论 -
浅析HBase1.2.0的Split机制
日前,在项目进行过程中,需要把一部分不大不小的数据暂时存起来,所以个人想到的就是放到HBase好了,手上刚好有现成的代码和环境,但是扔到表中发现表从最初的1个Region分裂成了4个Region。而系统在hbase-site.xml文件中Store的大小最大设置的是10G: </property> <property> <...原创 2019-02-19 19:05:13 · 1245 阅读 · 0 评论 -
HBase的Get是如何执行的
之前的那篇HFile结构解析的文章分析了下HFile的结构,这篇文章来分析下HBase Get数据的流程,看下它是如何获取数据的。一般来说,HBase读取数据的流程是这样的:先从Zookeeper中找到meta表所在的Regionserver的信息,根据namespace、表名、以及rowKey查找数据所在的RegionServer的信息。 向对应的regionServer建立连接并发起...原创 2019-01-26 16:26:39 · 3669 阅读 · 1 评论 -
HBase-HFile结构分析
HBase的存储架构图: 一些存储相关的一些概念:HBase中的一张表称为一张Table,由于Table太大,所以Table会按行进行切分然后分配到集群的各个节点上,每一个节点称为一个RegionServer。切分的每一部分称为一个HRegion,HRegion是逻辑上的一个单元。一个HRegion包括了Table的一部分行,而一行又可以有多个Column Family(以下简...原创 2018-12-11 22:24:50 · 2647 阅读 · 0 评论 -
HBase1.2.0源码编译
编译前准备:Maven: 3.6.0JDK: 1.8CygWinFindBugs:3.0.0(这个应该不安装也没问题)开始编译:打开CygWin,cd到HBase的所在的目录下cd E:\\Code\\HBase-Debug\\hbase-rel-1.2.0 2. 运行命令编译代码mvn -e clean package -DskipTests assem...原创 2018-12-19 21:38:02 · 906 阅读 · 1 评论 -
HBase数据导入导出
由于测试的原因,需要将HBase的数据从一台服务器拷贝到另外一台服务器.所以记录一下操作的步骤一.将HDFS上HBase表数据拷贝至本地服务器 注意,下载时默认会下载到当前路径,最好要选择一块空间较大的盘 /bin/hadoop fs -get /hbase/data/default/YOUR_TABLE (为了方便拷贝到远程服务器上,可以将文件进行压缩成tar包)二.数据拷贝到...原创 2018-06-30 17:32:06 · 1250 阅读 · 0 评论