HBase
大数据学习与分享
【微信公众号:大数据学习与分享】专注于大数据领域常用技术,如Spark、Hadoop、Hive、HBase、Kafka、Zookeeper等技术的使用、实战技巧、源码解读,语言主要以Java和Scala为主
展开
-
Hive数据导入HBase引起数据膨胀引发的思考
最近朋友公司在做一些数据的迁移,主要是将一些Hive处理之后的热数据导入到HBase中,但是遇到了一个很奇怪的问题:同样的数据到了HBase中,所占空间竟增长了好几倍!详谈中,笔者建议朋友至少从几点原因入手分析:HBase中的数据相对于Hive中的数据会新增一些附加信息导致磁盘占用的增加,比如布隆过滤器Hive中的数据是否进行过压缩,比如snappy,压缩比还是很高的row key和列族都会占据一定的空间,当数据量较大时,仅二者就会占据很多不必要的空间建议将相同查询场景下的几个常用的原创 2020-12-01 09:04:25 · 541 阅读 · 0 评论 -
HBase中Memstore存在的意义以及多列族引起的问题和设计
Memstore存在的意义HBase在WAL机制开启的情况下,不考虑块缓存,数据日志会先写入HLog,然后进入Memstore,最后持久化到HFile中。HFile是存储在hdfs上的,WAL预写日志也是,但Memstore是在内存的,增加Memstore大小并不能有效提升写入速度,为什么还要将数据存入Memstore中呢?Memstore在内存中维持数据按照row key顺序排列,从而顺序写入磁盘由于hdfs上的文件不可修改,为了让数据顺序存储从而提高读取率,HBase使用了LSM树结构来存原创 2020-11-30 16:02:48 · 542 阅读 · 0 评论 -
从HBase底层原理解析HBASE列族不能设计太多的原因?
在之前的文章《深入探讨HBASE》中,笔者详细介绍了:HBase基础知识(包括简介、表结构)、系统架构、数据存储WAL log和HBase中LSM树的应用HBase寻址机制minor合并和major合并region管理以及region server上下线HMaster工作机制和HBase容错性HBASE数据迁移和备份a. distcp命令拷贝hdfs文件的方式b. copytable的方式实现表的迁移和备份c. replication的方式实现表的复制d.原创 2020-11-19 16:55:07 · 591 阅读 · 1 评论 -
通过Spark生成HFile,并以BulkLoad方式将数据导入到HBase
在实际生产环境中,将计算和存储进行分离,是我们提高集群吞吐量、确保集群规模水平可扩展的主要方法之一,并且通过集群的扩容、性能的优化,确保在数据大幅增长时,存储不能称为系统的瓶颈。具体到我们实际的项目需求中,有一个典型的场景,通常会将Hive中的部分数据,比如热数据,存入到HBase中,进行冷热分离处理。我们采用Spark读取Hive表数据存入HBase中,这里主要有两种方式:通过HBase的put API进行数据的批量写入通过生成HFile文件,然后通过BulkLoad方式将数据存入HBas原创 2020-08-27 19:57:53 · 1537 阅读 · 0 评论 -
HBase高级特性(布隆过滤器和协处理器)、列族设计、rowkey设计以及热点问题处理
在阐述HBase高级特性和热点问题处理前,首先回顾一下HBase的特点:分布式、列存储、支持实时读写、存储的数据类型都是字节数组byte[],主要用来处理结构化和半结构化数据,底层数据存储基于hdfs。同时,HBase和传统数据库一样提供了事务的概念,但是HBase的事务是行级事务,可以保证行级数据的原子性、一致性、隔离性以及持久性。布隆过滤器在HBase中的应用布隆过滤器(Bloom Filter)是空间利用效率很高的数据结构,利用位数组表示一个集合,判断一个元素是否属于该集合。但存在一定的错误率,原创 2020-08-13 19:36:46 · 673 阅读 · 0 评论 -
HBase中minor和major合并、region管理
minor合并和major合并先前文章提到storefile最终是存储在hdfs上的,那么storefile就具有只读特性,因此HBase的更新其实是不断追加的操作。当一个store中的storefile达到一定的阈值后,就会进行一次合并,将对同一个key的修改合并到一起,形成一个大的storefile,当storefile的大小达到一定阈值后,又会对storefile进行split,划分为两个storefile。由于对表的更新是不断追加的,合并时,需要访问store中全部的storefile和mem原创 2020-07-16 19:11:38 · 2278 阅读 · 0 评论 -
Hive数据导入HBase引起数据膨胀引发的思考
最近朋友公司在做一些数据的迁移,主要是将一些Hive处理之后的热数据导入到HBase中,但是遇到了一个很奇怪的问题:同样的数据到了HBase中,所占空间竟增长了好几倍!详谈中,笔者建议朋友至少从几点原因入手分析:HBase中的数据相对于Hive中的数据会新增一些附加信息导致磁盘占用的增加,比如布隆过滤器Hive中的数据是否进行过压缩,比如snappy,压缩比还是很高的row key和列族都会占据一定的空间,当数据量较大时,仅二者就会占据很多不必要的空间建议将相同查询场景下的几个常用的原创 2020-07-09 20:10:35 · 640 阅读 · 0 评论 -
HBase寻址机制及HMaster、RegionServer容错
HBase寻址机制HBase提供了两张特殊的目录表-ROOT-和META表,-ROOT-表用来查询所有的META表中region位置。HBase设计中只有一个root region即root region从不进行切分,从而保证类似于B+树结构的三层查找结构:第1层:zookeeper中包含root region位置信息的节点,如-ROOT-表在哪台regionserver上第2层:从-ROOT-表中查找对应的meta region位置即.META.表所在位置第3层:从META表中查找用户表对应re原创 2020-07-07 17:32:22 · 509 阅读 · 0 评论 -
HBase中LSM树的应用
1. 输入数据首先存储在日志文件 [文件内数据完全有序,按键排序]2. 然后当日志文件修改时,对应更新会被先保存在内存中来加速查询3. 数据经过多次修改,且内存空间达到设定阈值,LSM树将有序的"键记录"flush到磁盘,同时创建一个新的数据存储文件。[内存中的数据由于已经被持久化了,就会被丢弃]4. 查询时先从内存中查找数据,然后再查找磁盘上的文件5. 删除只是“逻辑删除”即将要删除的数据或者过期数据等做删除标记,查找时会跳过这些做了删除标记的数据6. 多次数据刷写之后会创建许多数据存储文件,后原创 2020-07-04 22:31:04 · 342 阅读 · 1 评论 -
深入探讨HBASE | 基础知识-系统架构-数据存储-WAL log
HBASE基础1. HBase简介HBase是一个高可靠、高性能、面向列的,主要用于海量结构化和半结构化数据存储的分布式key-value存储系统。它基于Google Bigtable开源实现,但二者有明显的区别:Google Bigtable基于GFS存储,通过MAPREDUCE处理存储的数据,通过chubby处理协同服务;而HBase底层存储基于hdfs,可以利用MapReduce、Spark等计算引擎处理其存储的数据,通过Zookeeper作为处理HBase集群协同服务。2. HBase表结构原创 2020-06-29 12:19:13 · 425 阅读 · 1 评论