HBase进阶——文件的合并、 MemStore Flush、StoreFile Compaction、 Region Split、高可用与预分区介绍

系列文章目录

centos7虚拟机下hbase的使用案例讲解

hbase进阶操作——读流程与写流程介绍

centos7虚拟机在集群zookeeper上面配置hbase的具体操作步骤

文章目录

系列文章目录

一、HBase的架构原理

1、StoreFile

2、MemStore

3、WAL

二、HBase的shell操作

2.1、创建表与写入数据

2.2、对数据进行刷洗与上传到web页面

2.3、Compact合并文件

2.4、再次插入数据验证

2.5、插入新的数据进行实验

三、对regionserver的一些解释说明

3.1、 MemStore Flush

3.2、StoreFile Compaction

3.3、 Region Split

四、HBase的优化——高可用与预分区操作

4.1、高可用HA(High Availability)

1.关闭 HBase 集群(如果没有开启则跳过此步)

​编辑

2.在 conf 目录下创建 backup-masters 文件

3.在 backup-masters 文件中配置高可用 HMaster 节点

4.将整个 conf 目录 scp 到其他节点

5.打开页面测试查看

4.2、预分区

1.手动设定预分区

2.生成 16 进制序列预分区

3.按照文件中设置的规则预分区

4.使用 JavaAPI 创建预分区

补充一些小知识

总结


前言

本文主要介绍HBase如何进行分区与数据处理等等操作,下面的案例经供参考。

一、HBase的架构原理

1、StoreFile

保存实际数据的物理文件,StoreFile HFile 的形式存储在 HDFS 上。每个 Store 会有一个或多个 StoreFileHFile),数据在每个 StoreFile 中都是有序的。

2、MemStore

写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都会形成一个新的 HFile

3、WAL

由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中,然后再写入 MemStore 中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

二、HBase的shell操作

进入HBase的shell里面进行操作以便理解regionserver如何实现数据的存取等等操作

2.1、创建表与写入数据

创建表stu

插入数据

插入数据李四这个数据,scan查看时最新的数据

可以直接写scan查看其操作的说明

查看所有的数据内容

2.2、对数据进行刷洗与上传到web页面

Flush写入内存里面

再次插入1001里面的wangwu数据,此处flush上传到内存里面,此时web端应该有两个小文件

刷洗之后只有最新更新的最新数据

2.3、Compact合并文件

Compact合并文件的帮助文档


再次插入小王和小赵的数据,上传合并一下

刷洗一遍最后只有一个文件了。里面只有最新的1000小赵和1001的王五数据

Ps:此处会删除过时的数据,保存最新的数据到大文件里面

最终的页面结果

2.4、再次插入数据验证

再次插入1005:小红

刷洗一遍:flush

再次删除小红

使用Scan命令使其显示所有版本信息

在终端可以查看最新的文件信息【此处的最新文件是一个小文件】

2.5、插入新的数据进行实验

插入一行1006

删除1006

再次查看1006

刷洗之后,会保留删除的标记

compact上传合并一下

终端查看

此处的文件就只有一个合并的最终版本了。

三、对regionserver的一些解释说明

3.1、 MemStore Flush

 MemStore 刷写时机:

1.当某个memstroe 的大小达到了hbase.hregion.memstore.flush.size(默认值128M),

其所在region 的所有memstore 都会刷写。

memstore 的大小达到了

hbase.hregion.memstore.flush.size(默认值128M

* hbase.hregion.memstore.block.multplier(默认值4

时,会阻止继续往该memstore 写数据

2. region server memstore 的总大小达到

java_heapsize

*hbase.regionserver.global.memstore.size(默认值 0.4

*hbase.regionserver.global.memstore.size.lower.limit(默认值 0.95

region 会按照其所有 memstore 的大小顺序(由大到小)依次进行刷写。直到 region server

中所有 memstore 的总大小减小到上述值以下。【0.38(=0.4*0.95)】

region server memstore 的总大小达到

java_heapsize*hbase.regionserver.global.memstore.size(默认值 0.4

时,会阻止继续往所有的 memstore 写数据。

3. 到达自动刷写的时间,也会触发 memstore flush。自动刷新的时间间隔由该属性进行

配置 hbase.regionserver.optionalcacheflushinterval(默认 1 小时)

尚硅谷大数据技术之 Hbase —————————————————————————————

4. WAL 文件的数量超过 hbase.regionserver.max.logsregion 会按照时间顺序依次进

行刷写,直到 WAL 文件数量减小到 hbase.regionserver.max.log 以下(该属性名已经废弃,

现无需手动设置,最大值为 32)。

ps:Ctrl+f调出本地的官方文档进行查看上述内容

3.2、StoreFile Compaction

由于 memstore 每次刷写都会生成一个新的 HFile,且同一个字段的不同版本(timestamp

和不同类型(Put/Delete)有可能会分布在不同的 HFile 中,因此查询时需要遍历所有的 HFile

为了减少 HFile 的个数,以及清理掉过期和删除的数据,会进行 StoreFile Compaction

Compaction 分为两种,分别是 Minor Compaction Major CompactionMinor Compaction

会将临近的若干个较小的 HFile 合并成一个较大的 HFile,但不会清理过期和删除的数据

Major Compaction 会将一个 Store 下的所有的 HFile 合并成一个大 HFile,并且会清理掉过期

和删除的数据

Hile

3.3、 Region Split

默认情况下,每个 Table 起初只有一个 Region,随着数据的不断写入,Region 会自动进

行拆分。刚拆分时,两个子 Region 都位于当前的 Region Server,但处于负载均衡的考虑,

HMaster 有可能会将某个 Region 转移给其他的 Region Server

Region Split 时机:

1.1 region 中的某个Store 下所有StoreFile 的总大小超过hbase.hregion.max.filesize

Region 就会进行拆分(0.94 版本之前)。

2. 1 region Store StoreFile Min(R^2 *

"hbase.hregion.memstore.flush.size",hbase.hregion.max.filesize"),该 Region 就会进行拆分,其

R 为当前 Region Server 中属于该 Table 的个数(0.94 版本之后)。

四、HBase的优化——高可用与预分区操作

4.1、高可用HAHigh Availability

HBase HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,

如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并

不会维持太久。所以 HBase 支持对 HMaster 的高可用配置。

1.关闭 HBase 集群(如果没有开启则跳过此步)

[hadoop@hadoop102 hbase]$ bin/stop-hbase.sh

2.在 conf 目录下创建 backup-masters 文件

[hadoop@hadoop102 hbase]$ touch conf/backup-masters

3.在 backup-masters 文件中配置高可用 HMaster 节点

>指的追加

[hadoop@hadoop102 hbase]$ echo hadoop103 > conf/backup-masters

4.将整个 conf 目录 scp 到其他节点

[hadoop@hadoop102 hbase]$ scp -r conf/

hadoop103:/opt/module/hbase/

[hadoop@hadoop102 hbase]$ scp -r conf/

hadoop104:/opt/module/hbase/

5.打开页面测试查看

http://hadooo102:16010

杀死Hadoop102的master进程

查看Hadoop103节点的master进程

此处可以看到Hadoop103作为master节点

再次启动Hadoop102的进程

此时还是103节点为master节点

原因:此时的Hadoop102节点只能当作是Hadoop03的“小弟”,不能作为主节点【“大哥”】

4.2、预分区

每一个 region 维护着 StartRow EndRow,如果加入的数据符合某个 Region 维护的

RowKey 范围,则该数据交给这个 Region 维护。那么依照这个原则,我们可以将数据所要

投放的分区提前大致的规划好,以提高 HBase 性能。

1.手动设定预分区

Hbase> create 'staff1','info','partition1',SPLITS =>

['1000','2000','3000','4000']

2.生成 16 进制序列预分区

create 'staff2','partition2',{NUMREGIONS => 15,SPLITALGO =>

'HexStringSplit'}

3.按照文件中设置的规则预分区

创建 splits.txt 文件内容如下:

aaaa

bbbb cccc dddd

然后执行:

create 'staff3','partition3',SPLITS_FILE => 'splits.txt'

4.使用 JavaAPI 创建预分区

//自定义算法,产生一系列 hash散列值存储在二维数组中

byte[][] splitKeys = 某个散列值函数

//创建 HbaseAdmin实例

HBaseAdmin hAdmin = new HBaseAdmin(HbaseConfiguration.create()); //创建 HTableDescriptor实例

HTableDescriptor tableDesc = new HTableDescriptor(tableName);

//通过 HTableDescriptor实例和散列值二维数组创建带有预分区的 Hbase

hAdmin.createTable(tableDesc,splitKeys);

补充一些小知识

在集群启动之后使用kill  -9  +端口号杀死进程,此时如果进入到shell里面会显示无法实现对数据的基本操作。

单点启动hbase的master节点

总结

以上就是对HBase的进阶内容的介绍,希望对初学者有所帮助。

最后欢迎大家点赞

原文地址:https://blog.csdn.net/m0_56006701/article/details/130338345

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读301次。你可以使用Thrift客户端来测试HBase Thrift服务。例如,在Python中,你可以使用。请确保你的HBase伪集群已正确配置并且Thrift服务已经启动。这将在你的伪集群中启动HBase Thrift服务。库或者直接使用Thrift接口。进入HBase的安装目录,找到。请根据需要进行相应的配置。这将停止Thrift服务。_hbase 单机 thrift 配置
文章浏览阅读565次。hive和hbase数据迁移_hive转hbase
文章浏览阅读707次。基于单机版安装HBase,前置条件为Hadoop安装完成,安装Hadoop可以参考链接,Hadoop单机安装。地址:https://dlcdn.apache.org/hbase/2.4.13/hbase-2.4.13-src.tar.gz2.解压缩文件3.进入到conf目录下4.修改配置文件 hbase-env.sh示例:示例:6.修改配置文件 hbase-site.xml示例:8.访问页面访问你所以在服务器的16010端口,查看页面以上就是单机版安装HBase的内容,后续_hbase 2.4.13下载
文章浏览阅读301次。linux集群搭建-HBase_linux中在/home目录下创建目录hbase
文章浏览阅读933次。中没有库的概念,说一个数据说的是哪一个名称空间下的那一张表下的哪一个行键的哪一个列族下面的哪一个列对应的是这个数据。注意:put数据需要指定往哪个命名空间的哪个表的哪个rowKey的哪个列族的哪个列中put数据,put的值是什么。注意:put数据需要指定往哪个命名空间的哪个表的哪个rowKey的哪个列族的哪个列中put数据,put的值是什么。注意:put数据需要指定往哪个命名空间的哪个表的哪个rowKey的哪个列族的哪个列中put数据,put的值是什么。操作Hbase系统DDL,对名称空间等进行操作。_hbase中报错undefined method for main:object
文章浏览阅读1k次,点赞16次,收藏21次。整理和梳理日常hbase的监控核心指标,作为经验沉淀_hbase 对应promethus指标名
文章浏览阅读1.5k次,点赞45次,收藏20次。今天把之前学习Hbase的入门基础知识笔记翻出来了,为了不忘记也是帮助身边的小伙伴,我把他又整理了下放了出来给大家,希望对HBASE一知半解的小伙伴,能够对Hbase有一个清晰的认识,好了废话不多说,进入正题。以上内容就是初的识HBase 入门知识,包含了hbase的由来,特性,物理存储,逻辑存储模型,以及优缺点,应用场景这些内容,相信后面在使用或更深入的研究Hbase打下了良好的基础,后面的更深入的学习内容,看计划安排在后面的文章中进行更新。
文章浏览阅读655次。HDFS,适合运行在通用硬件上的分布式文件系统,是一个高度容错性的系统,适合部署在廉价的机器上。Hbase,是一个分布式的、面向列的开源数据库,适合于非结构化数据存储。MapReduce,一种编程模型,方便编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。Chukwa,是一个开源的用于监控大型分布式系统的数据收集系统。_开源非结构化数据存储
文章浏览阅读1.9k次。mongodb和hbase的区别和应用场景_hbase和mongodb的区别
文章浏览阅读1.2k次。Hbase入门篇01---基本概念和部署教程_hbase教程
文章浏览阅读1.6k次,点赞19次,收藏25次。hbase相关内容
文章浏览阅读942次,点赞16次,收藏20次。在hbase1.x中transition是令广大大数据运维人员头疼的一个话题,因为,region 的状态转移涉及到了三个核心组件,分别为:hbase master,zookeeper和hbase 的regionserver,这三个组件中的某一个region的状态都是一致的情况下,这个region 才算是正常,状态转移过程及其复杂,hbase 集群很容易出现RIT。好消息是,hbase2.x中有个工具HBCK2,这个工具可不是简单的hbase1.x中hbck 的升级,变化有点大,详细变化请参考帮助文档(
文章浏览阅读1k次。在HBase中,Region分裂是一种自动的机制,用于在Region大小达到一定阈值时将其分裂成两个Region,以便更好地管理数据。HBase中的Region大小是可以配置的,通过设置HBase表的最小和最大Region大小来控制。需要注意的是,禁止Region分裂后,当表的大小达到一定阈值时,数据将不再分裂成新的Region,因此需要根据实际需求进行调整。需要注意的是,禁止Region分裂后,当表的大小达到一定阈值时,数据将不再分裂成新的Region,因此需要根据实际需求进行调整。_hbase region大小
文章浏览阅读737次。可以看出,HBase作为数据仓库的一种补充,可以用于存储和管理大量数据,以便快速地分析和查询。是一种基于数据库的形式,用于存储和管理大量数据,以便快速地分析和查询。例如,可以使用HBase存储一些用户行为数据,然后进行分析,以便更好地了解用户行为和需求。其次,需要配置HBase相关的环境变量,例如JAVA_HOME、HBASE_HOME等。HBase可以用于存储结构化和非结构化数据,包括文本、图像、视频等。例如,可以使用HBase存储一些传感器数据,然后进行实时分析和处理。一、HBase集群环境搭建。_用hbase 搭建数仓
文章浏览阅读1.9k次。Data。_springboot整合hbase
文章浏览阅读880次,点赞23次,收藏20次。etc/abrt下的两个文件,分别是:abrt-action-save-package-data.conf 和 abrt.conf,修改内容如下。我们后面排查的时候去查看/run/cloudera-scm-agent/process/2325-hbase-REGIONSERVER下是否有。发现有个hs_err_pid15967.log JVM生成的错误日志,那么把这个日志下载查看,返现日志这么写的。接下来就等下一次hbase的节点挂了之后查看转储文件,转储文件在/var/sqool/abrt下。_regionserver 退出 没有错误日志
文章浏览阅读1.7k次。以下命令都需要在Hbase Shell中运行:Hbase信息status:服务器状态version:版本表操作查看所有表:list表基本信息:describe "表名称"查看表是否存在:exists '表名称'创建表:create '表名称', '列族1', '列族2', '列族3'删除表:首先禁用表:disable '表名称'然后删除表:drop '表名称'修改表:表数据操作查看所有数据:scan "表名称"..._hbase sehll怎么看登录的是哪个hbase
文章浏览阅读885次,点赞18次,收藏21次。在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行。使用编程语言API,您可以使用相应的HBase客户端库来执行查询操作。这是一个简单的Java代码示例,演示了如何使用HBase Java API进行单行查询。这些示例仅为基本查询操作,HBase Shell还提供其他高级查询功能,如按时间戳过滤,使用正则表达式进行查询等。请注意,这只是HBase查询的基本示例,您可以根据实际需求和HBase的数据模型进行更复杂的查询操作。
文章浏览阅读7.3k次,点赞7次,收藏28次。找到hbase的bin目录并进入,执行启动hbase hmaster命令。问题原因 hmaster挂了 ,需要重新启动hmaster才行。hbase shell输入命令出现如下问题。_keepererrorcode = nonode for /hbase/master
文章浏览阅读1.3k次。三次信息化浪潮。_大数据应用开发技术笔记