??斗地主捕鱼电竞提现秒到 广告位招租 - 15元/月全站展示
??支付宝搜索579087183领大额红包 ??伍彩集团官网直营彩票
??好待遇→招代理 ??伍彩集团官网直营彩票
??络茄网 广告位招租 - 15元/月全站展示
Hadoop 原理学习(6)HBase 架构与工作原理4 - 压缩、分裂与故障恢复

转载   2018-05-31   浏览量:128


Compacation

彩票开奖查询 www.kbyp.net HBase 在读写的过程中,难免会产生无效的数据以及过小的文件,比如:MemStore 在未达到指定大小便刷新数据以写入到磁盘;或者当已经写入 HFile 的数据被删除后,原数据被标记了墓碑,却仍然存在于 HFile 之中。在这些情况之下,我们需要清除无效的数据或者合并过小的文件来提高读的性能。这种合并的过程也被称为 compacation。

HBase 中使用的 compacation 方式主要分为以下两种:

  • Minor_compaction
  • Major_compaction

Minor_Compaction

HBase 会自动选择一些较小的 HFile,并将它们重写成更少的但更大的 HFiles 文件,这个过程被称为 minor_compaction。minor_compaction 通过将少量的相邻的 HFile 合并为单个 HFile 来达到压缩操作,但是它不会删除被标记为删除或过期的数据。

Minor_Compaction

Major_Compaction

Major_Compaction 将 Region 中的所有 HFile 合并并重写成一系列由列族(Column Family)组成的 HFile 文件,并在此过程删除已被删除或已过期的数据。这会提高读取性能,但是由于 Major_compaction 会重写所有文件,所以在此过程中可能会发生大量的磁盘 I/O 和网络流量,这种现象被称为写入放大(write amplification)。

Major

Region Split

最初,每一个 table 都会有一个 Region。随着数据的不断写入,当这个 Region 变得太大时,它就会被分裂成两个子 Regions。两个子 Regions 各种拥有原 Region 的一半,它们会在相同的 RegionServer 上并行打开,然后将分区信息报告给 HMaster。处于负载均衡的原因,HMaster 可能会将新的 Region 移动到其它服务器。

Region Split

负载均衡

Split 最初发生在同一个 RegionServer 上,但是出于负载均衡的原因,HMaster 可能会将新的 Region 移动到其它服务器(移动元数据,而不是 HFile 文件)。这会导致新的 RegionServer 提供来自远程 HDFS 节点的数据,直到 Major_compaction 时将数据文件移动到区域服务器的本地节点。

负载均衡

故障恢复

WAL 文件和 HFile 被保存在磁盘上并被复制,但是 MemStore 还没有被保存在磁盘上,所以当 RegionServer 发生问题后,HBase 是如何恢复 MemStore 之中的数据呢?

故障恢复

当 RegionServer 失败时,崩溃的 Region 将不可用,直到检查并恢复之后方可继续使用。Zookeeper 会在失去 RegionServer 心跳时确定节点故障,HMaster 将会被通知 RegionServer 已经失败。

注:当 RegionServer 失败时,正在查询该节点上的数据的操作会被重试,并且不会立即丢失。

当 HMaster 检测到 RegionServer 已经崩溃时,HMaster 会将已崩溃的 RegionServer 上的 Regions 重新分配给活动的 RegionServer。为了恢复已崩溃的 RegionServer 上未刷新到磁盘的 MemStore 中的内容,HMaster 将属于崩溃的 RegionServer 的 WAL 文件拆分成单独的文件,并将这些文件存储在新的 RegionServer 的 DataNode 上。然后新的 RegionServer 根据拆分后的 WAL 文件重播 WAL,以重建丢失的 MemStore 区域。

故障恢复

WAL 重播

WAL 文件包含编辑列表,一个编辑表示单个操作的 put 或者 delete。编辑按照时间顺序写入,并将附加到存储在磁盘上的 WAL 文件的末尾。

如果数据仍在 MemStore 中并且未保存到 HFile 中时,将发生 WAL 重播。WAL 重播是通过读取 WAL 文件,将其包含的编辑操作添加到当前的 MemStore 并进行排序来完成的。

参考链接

注:此文章主要为学习的笔记,其中大量的翻译了参考链接中的资料,并有改动,如有需要,请阅读原文。

转载自:https://blog.csdn.net/t894690230/article/details/80529153

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024



HBase之Rowkey设计总结及方舟实战篇
一、引言HBase由于其存储和读写的高性能,在OLAP即时分析中越来越发挥重要的作用,在易观精细化运营产品--易观方舟也有广泛的应用。作为Nosql数据库的一员,HBase查询只能通过其Rowkey来查询(Rowkey用来表示唯一一行记录),Rowkey设计的优劣直接影响读写性能。HBase中的数据是按照Rowkey的ASCII字典顺序进行全局排序的,有伙伴可能对ASCII字典序印象不够深刻,下面...
HBase的java编程实例-写入词频统计
下面代码需要新建一个文本文件作为读取内容importjavaioBufferedReader;importjavaioFileReader;importjavautilList;importjavautilArrayList;importorgapachehadoopconfConfigura
Hbase regionserver 逐个挂掉的问题分析
最近遇到一个比较诡异的问题,一个regionserver由于GC的原因,导致与zookeeper链接超时,最终被踢出集群。但是,接下来的现象,才是噩梦的开始?。?!
hbaseshell基本操作简介(代码)
hbaseshell基本操作简介(代码)。之前介绍了hbase的安装,现在来简介下hbase的基本操作:1启动hbase
Hbase操作命令大全
Hbase操作命令大全。一Hbase操作命令;二Namespace操作。
Hbase之Shell基本命令
Hbase之Shell基本命令?;久睿喊沧巴旰罂梢栽阡榔髦惺淙胂旅娴腢RL来测试安装是否成功:http:localhost:60010hbase目录输出日志文件所在位置:$HBASE_HOMElogs进入hbaseshellconsole$HBASE_HOMEbinhbaseshell如果有kerberos认证,需要事先使用相应的ke
HBase:架构,Compaction合并操作
HBase:架构,Compaction合并操作。compaction合并操作:compaction操作将小文件合并成大文件,加快查询速度,减少文件数量,减少资源占用。compaction分为两种:
Hbase对数据表的增删改查和对数据的增删改查
Hbase对数据表的增删改查和对数据的增删改查。
HBase的复制函数CopyToTable
HBase的复制函数CopyToTable。在日常的生产环境中,通常需要将一张已有的hbase表格直接复制给在hbase中的另一张表格,那么可以通过命令行直接调用CopyToTable来实现。首先在hbase中有一张表,如下:
HBase计算表的总count
HBase计算表的总count。