![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
HBase
HBase 专栏
有数的编程笔记
蓄势待发,待机而动
展开
-
HBase Compaction
文章目录1. Compaction1.1. 基本原理1.2. Compaction 的核心作用1.3. Compaction 基本流程1.3.1. Compaction 触发时机1.3.2. 待合并 HFile 集合选择策略1. CompactionCompaction是以Store为单位进行的Compaction使读取延迟更加稳定,但是读取时间产生了很大的毛刺Compaction 操作的主要源头来自flush操作根据待合并HFile文件的选择策略可以得知,正在进行Compaction的HFi原创 2020-10-21 23:59:12 · 2256 阅读 · 1 评论 -
HBase MemStore
文章目录MemStore设计MemStore的原因Memstore Flush触发条件MemStoreHBase中,Region是集群节点上最小的数据服务单元,用户数据表由一个或多个Region组成。在Region中每个ColumnFamily的数据组成一个Store。每个Store由一个Memstore和多个HFile组成(如果一次flush都还没有发生的话,就是0个HFile)。HFile是由Memstore flush产生的,每一次的flush都会产生一个全新的HFile文件。设计MemSto原创 2020-09-16 09:10:47 · 1654 阅读 · 0 评论 -
HBase 读取流程
文章目录1. HBase 读取流程1.1. Client-Server读取交互逻辑1.2. Server端Scan框架体系1.2.1. 构建scanner iterator体系1.2.2. 执行next函数获取KeyValue并对其进行条件过滤1.3. 过滤淘汰不符合查询条件的HFile1.4. 从HFile中读取待查找Key1. HBase 读取流程HBase读数据的流程更加复杂。主要基于两个方面的原因:一是因为HBase一次范围查询可能会涉及多个Region、多块缓存甚至多个数据存储文件;二是原创 2020-09-13 23:11:48 · 668 阅读 · 0 评论 -
HBase 行级事务模型
文章目录1. HBase 行级事务模型1.1. HBase事务原子性保证1.2. 写写并发控制1.2.1. 如何实现写写并发控制?1.2.2. 如何实现批量写入多行的写写并发?1.3. 读写并发控制1.3.1. 如何实现读写并发控制?1. HBase 行级事务模型HBase目前只支持行级事务1.1. HBase事务原子性保证HBase数据会首先写入WAL,再写入Memstore。写入Memstore异常很容易可以回滚,因此保证写入/更新原子性只需要保证写入WAL的原子性即可。1.2. 写写并发控制转载 2020-09-13 18:13:14 · 535 阅读 · 0 评论 -
Hbase 的 sequenceId
文章目录1. Hbase 的 sequenceId1.1. 为什么需要sequenceId1.2. HLog日志核心结构1.3. 什么是sequenceid?1. Hbase 的 sequenceId1.1. 为什么需要sequenceIdHBase数据在写入的时候首先追加写入HLog,再写入Memstore,也就是说一份数据会以两种不同的形式存在于两个地方。那两个地方的同一份数据需不需要一种机制将两者关联起来?Memstore中的数据flush到HDFS文件中后HLog对应的数据是不是就可以被删转载 2020-09-13 18:06:24 · 520 阅读 · 0 评论 -
HBase 写入流程
文章目录HBase 写入流程Region写入阶段HBase 写入流程HBase写入流程整理分为3个阶段:客户端处理阶段Region写入阶段MemStore Flush阶段注意:用户写入请求在完成MemStore的写入后就会返回成功,MemStore Flush是一个异步执行过程。Region写入阶段...原创 2020-09-13 18:03:49 · 2752 阅读 · 0 评论 -
Region 分裂策略补充
文章目录Region分裂策略补充KeyPrefixRegionSplitPolicyDelimitedKeyPrefixRegionSplitPolicyDisabledRegionSplitPolicyRegion分裂策略补充Region分裂详见参见Region 分裂KeyPrefixRegionSplitPolicy除了简单粗暴地根据大小来拆分,还可以自己定义拆分点。 KeyPrefixRegionSplitPolicy 是 IncreasingToUpperBoundRegionSplitP原创 2020-09-12 17:25:36 · 615 阅读 · 0 评论 -
Hbase HBCK2
文章目录Apache HBase HBCK2 ToolHBCK2 vs hbck1总述获取 HBCK2构建 HBCK2运行 HBCK2HBCK2 概述发现问题诊断工具Master LogsMaster UI: /master-status#tablesMaster UI: 'Procedures & Locks'Master UI: The 'HBCK Report'[HBase Canary 工具](http://hbase.apache.org/book.html#_canary)其他工具修复.翻译 2020-08-15 19:58:13 · 2765 阅读 · 1 评论 -
hbase hbck
HBaseFsck (HBCK)工具可以检测 HBase 集群中 Region 的一致性和完整性,同时可以对损坏的集群进行修复。HBCK 主要工作在两种模式下:一致性检测只读模式和多阶段修复模式。HBase 集群一致性状态HBase 集群一致性主要包括两个方面:HBase Region 一致性:集群中所有 Region 都被 assign,而且 deploy 到唯一一台 RegionServer 上,并且该 Region 的状态在内存中、hbase:meta 表中以及 ZooKeeper 这原创 2020-05-19 01:11:51 · 1798 阅读 · 0 评论 -
Region 迁移(2)
HBase 中数据分片的概念是 Region。集群负载均衡、故障恢复等功能都是建立在分片迁移的基础之上的。HBase 系统中,分片迁移就是 Region 迁移。HBase 中 Region 迁移是一个非常轻量级的操作。所谓轻量级,是因为 HBase 的数据实际存储在 HDFS 上,不需要独立进行管理,因而 Region 在迁移的过程中不需要迁移实际数据,只要将读写服务迁移即可。Regio...原创 2020-08-16 20:39:46 · 849 阅读 · 0 评论 -
HDFS 在 HBase 系统中扮演的角色
HDFS在HBase系统中扮演的角色HBase使用HDFS存储所有数据文件,从HDFS的视角看,HBase就是它的客户端。这样的架构有几点需要说明:HBase本身并不存储文件,它只规定文件格式以及文件内容,实际文件存储由HDFS实现。 HBase不提供机制保证存储数据的高可靠,数据的高可靠性由HDFS的多副本机制保证。 HBase-HDFS体系是典型的计算存储分离架构。这种轻耦合架构的...原创 2020-05-19 00:29:35 · 550 阅读 · 0 评论 -
HBase 与 ZooKeeper 的关系
HBase在ZooKeeper中创建的主要子节点meta-region-server:存储HBase集群hbase:meta元数据表所在的RegionServer访问地址。客户端读写数据首先会从此节点读取hbase:meta元数据的访问地址,将部分元数据加载到本地,根据元数据进行数据路由。rs:集群中所有运行的RegionServer。master:backup-masters:通常...原创 2020-05-19 00:29:14 · 7167 阅读 · 0 评论 -
RegionServer 宕机恢复流程
根据上节的基本原理,本节介绍HBase故障恢复的具体流程,重点讨论RegionServer的宕机恢复。Master检测RegionServer宕机HBase使用ZooKeeper协助Master检测RegionServer宕机。所有RegionServer在启动之后都会在ZooKeeper节点/rs上注册一个子节点,这种子节点的类型为临时节点(ephemeral)。临时节点的意义是,一旦连...原创 2020-10-21 23:55:47 · 1212 阅读 · 1 评论 -
HBase故障恢复基本原理
Master故障恢复原理在HBase体系结构中,Master主要负责实现集群的负载均衡和读写调度,并没有直接参与用户的请求,所以整体负载并不很高。HBase采用基本的热备方式来实现Master高可用。通常情况下要求集群中至少启动两个Master进程,进程启动之后会到ZooKeeper上的Master节点进行注册,注册成功后会成为ActiveMaster,其他在Master节点未注册成功的进...原创 2020-10-21 23:54:56 · 1025 阅读 · 1 评论 -
WAL的优化
结论:WAL没啥可优化的!!!一个Region只有一个WAL实例。WAL实例启动后在内存中维护了一个线程安全的并发集合(ConcurrentNavigableMap)。这个ConcurrentNavigableMap包含了很多个WAL文件的引用。当一个文件写满了就会开始下一个文件。当WAL工作的时候WAL文件数量会不断增长直到达到一个阈值后开始滚动。跟WAL有关的优化参数有:hbas...原创 2020-04-19 19:17:38 · 860 阅读 · 0 评论 -
Region 合并(4)
Region的合并不是出于性能考虑的,而更多地的是出于维护的目的被创造出来的。什么时候会用到合并?比如删了大量的数据,每个Region都变小了,这个时候分成这么多个Region就有点浪费了,可以把Region合并起来,然后可以减少一些 RegionServer服务器来节省成本。通过Merge类合并Region合并通过使用org.apache.hadoop.hbase.util.Me...原创 2020-04-19 18:40:19 · 1169 阅读 · 0 评论 -
Region 分裂(3)
通过查询hbase:meta可以形象地看到,一个Region就是一个表的一段Rowkey的数据集合。当Region太大的时候HBase会拆分它。hbase:meta表结构详情参见hbase:mate表结构拆分region的原因:当某个Region太大的时候读取效率太低了。查询的本质其实也就是遍历key;而当数据增大到上亿的时候同一个磁盘已经无法应付这些数据的读取了,因为遍历一遍数据的时间实...原创 2020-04-19 17:23:04 · 1393 阅读 · 0 评论 -
Region 定位(1)
Region的定位Region就是HBase架构的灵魂。Client在读写的时候是怎么定位到RegionServer的???三层查询架构关于Region的查找,0.96.0版本之前是被称为三层查询架构配图5-13Region:就是要查找的数据所在的Region,这个不多解释。.META.:是一张元数据表,它存储了所有Region的简要信息。.META.表中的一行记录就是...原创 2020-04-19 16:13:28 · 1893 阅读 · 0 评论 -
hbase:meta 表解析
hbase:meta表中存储了Hbase集群中全部表的所有的region信息。hbase:mate表所在的RegionServer信息被存储到了zk中的/hbase/meta-region-server节点。通过查询该节点,可以获得hbase:meta表在那个RegionServer。rowkeyhbase:meta表的rowkey结构如下:表名,STARTKEY,创建时间.ha...原创 2020-04-19 16:02:04 · 5777 阅读 · 0 评论 -
Hbase增删改查真正面目
增删改查的真正面目Hbase是如何实现增删改查的?!真实的情况是这样的:HBase几乎总是在做新增操作。当新增一个cell的时候,HBase在HDFS上新增一条数据。当修改一个cell的时候,HBase在HDFS又新增一条数据,只是版本号比之前那个大(或者你自己定义)。当删除一个cell的时候,HBase还是新增一条数据!只是这条数据没有value,类型为DELETE,这条数据叫墓碑标...原创 2020-04-14 23:01:24 · 233 阅读 · 0 评论 -
Hbase Cell实现类-KeyValue
KeyValue是cell最重要的实现类。配图5-9一个KeyValue类里面最后一个部分是存储数据的Value,前面部分都是存储跟cell相关的元数据信息。如果value很小,那么这个cell的绝大部分空间就是rowkey、column family、column等元数据,所有如果列族和列的名字很长,大部分空间都用来存储这些数据了。采用适当的压缩算法可以极大的节省存储列族、列等信息的...原创 2020-04-14 23:20:53 · 1622 阅读 · 0 评论 -
hbase shell的使用
进入hbase命令行./hbase shell显示hbase中的表list创建表创建user表,包含info、data两个列族create 'user', 'info', 'data'创建user表,包含info一个列族,并且指定cell版本为3,指定TTL(TTL参数的单位为秒)create 'user', {NAME => 'info', VERS...原创 2020-01-14 23:30:52 · 513 阅读 · 0 评论 -
HBase WAL
预写日志RegionService内部架构图预写日志(Write-ahead log,WAL)就是设计来解决宕机之后的操作恢复问题的。数据到达Region的时候是先写入WAL,然后再被加载到Memstore的。就算Region的机器宕掉了,由于WAL的数据是存储在HDFS上的,所以数据并不会丢失。如何关闭/打开WALWAL是默认开启的。你可以选择通过调用下面语句:Muta...原创 2019-08-05 22:25:46 · 2823 阅读 · 0 评论 -
初识Hbase架构
1 基本概念1.1 部署架构Hbase有两种架构:Master服务器和RegionServer服务器。一般一个Hbase集群有一个Master服务器和几个RegionServer服务器。Master服务器负责维护表结构信息,实际的数据都存储在RegionServer服务器上。...原创 2020-04-19 15:59:56 · 598 阅读 · 2 评论