前段时间总结了一篇关于HBase由于分区过多导致集群宕机的文章,感兴趣的同学可以点击原文《HBase案例 | 20000个分区导致HBase集群宕机事故处理》阅读参考。...本文重点参考HBase官网,从分区过多这个角度出发,进一步聊一聊HBase分区过多的影响以及单节点合理分区数量等。...HBase 分区概念 接触过HBase的同学都知道,HBase每张表在底层存储上是由至少一个Region组成,Region实际上就是HBase表的分区。...一个分区在达到一定大小时会自动Split,一分为二。...切入主题:HBase分区过多有哪些影响? 分区过多会带来很多不好的影响,主要体现在以下几个方面。
事故现场 项目上大数据平台拥有一个10个节点的HBase集群,主要业务表有十几张,每张表创建的时候做了包含10个region的预分区,并使这些分区均匀分布在了不同regionserver上。...经过一段时间的运行,由于业务量比较大,集群region分区数量已经达到23000之多了,平均每个regionserver节点分区数量在2300个左右。...检查HBase正常日志可以确认,HBase flush操作非常频繁。...这里主要是考虑到region分区数量比较多,业务TPS比较高,需要更多的写缓存即memstore空间。...业务数据量比较大导致HBase分区过多,实时数据的高频写入使得HBase做频繁的刷写与合并操作,给hdfs造成非常大的压力,datanode线程池被打满,写hdfs失败造成了HBase集群宕机。
HBase应用场景非常广泛;社区前面有一系列文章。大家可以到社区看看看;张少华同学本篇主要讲HBase的MOB压缩分区策略介绍,非常赞!大力推荐!...社区系列文章: 新数仓系列:HBase关键能力和特性梳理 HBase 和 Cassandra的浅谈 新数仓系列:Hbase周边生态梳理(1) HBase设计之rowkey设计 ---- 介绍 HBase...对应分区r2中startkey的散列值 在MOB区域中,从2016.1.1-2016.1.2,r1分区中每天有两个MOB文件,2016.1.1当天,分区r2中有三个MOB文件 通过MOB压缩后,r1、r2...从HBASE-16981引入按周和月的MOB压缩分区策略,对此MOB文件存放比例相应提高了7%和30%。 HBASE-16981基本思路是将一周或者一个月的MOB文件压缩合并为更大的文件。...乘以分区数和12乘以分区数。
本篇博客小菌为大家带来关于HBase的预分区的内容分享! 在正式开始介绍之前,我们先联系一下之前所学的内容 , 想想原本数据分区(分region)的过程是怎样的?...3.如何设定预分区?...手动指定预分区 hbase(main):001:0> create 'staff','info','partition1',SPLITS => ['1000','2000','3000','4000...'] 完成后我们可以通过HBase的UI界面进行查看 如图: 使用16进制算法生成预分区 hbase(main):003:0> create 'staff2','info','partition2...=> '/export/servers/splits.txt' 成功后如图: 使用JavaAPI创建预分区 Java代码如下: /** * 通过javaAPI进行HBase的表的创建以及预分区操作
分5个区(GPT分区表) (默认逻辑分区、空间起始位置、ext4) / 100G 主分区(主分区、逻辑分区都可以,不影响) efi 512-1024M swap 32G 物理内存大小的2倍 /usr...安装ubuntu系统的时候,分区完成后,修改引导所在位置为:ubuntu的efi所在分区。
1.1HBase 的 split 机制 通常 HBase 会自动处理 Region 的拆分操作,当 Region 的大小到达一定阈值后,会把过大的 Region 一分为二,之后在两个 Region 中都能继续增长数据...对于拆分合并风暴,通常需要关闭 HBase 的自动管理拆分,然后手动调用 HBase 的 split 和 major_compact,来分散 I/O 负载。...1.2 预分区的意义 为了解决这些问题,预分区就是一种很好的方法,通常预分区可以和 rowkey 的设计结合起来使用。 所谓预分区,就是预先创建 HBase 的表分区。...这里需要注意的是,HBase 会自动对文件中的序列按字典序进行排序,再生成预分区,因此,文件中设置的序列规则对排序没有讲究。 1.3.4....新建 Maven 项目,在 pom.xml 文件中配置 HBase 的 JAR 包依赖,项目会自动下载所需的依赖包,并自动实现依赖导入:
parted自动分区,仅供参考#!...p"existing_partitions=$(lsblk -n -o NAME "$disk" | wc -l)if [ "$existing_partitions" -gt 1 ]; then read -p "该磁盘已经存在分区...mkpart primary ext4 $((($i-1)*10))G $((($i)*10))G name $disk_part 2>/dev/nullsleep 6doneecho "磁盘分区已完成
Spark SQL中的Parquet数据源,支持自动根据目录名推断出分区信息。例如,如果将人口数据存储在分区表中,并且使用性别和国家作为分区列。...这就是自动分区推断的功能。 此外,分区列的数据类型,也是自动被推断出来的。目前,Spark SQL仅支持自动推断出数字类型和字符串类型。...有时,用户也许不希望Spark SQL自动推断分区列的数据类型。...此时只要设置一个配置即可, spark.sql.sources.partitionColumnTypeInference.enabled,默认为true,即自动推断分区列的类型,设置为false,即不会自动推断类型...禁止自动推断分区列的类型时,所有分区列的类型,就统一默认都是String。
如果想关闭自动拆分改为手动拆分,建议同时修改hbase.hregion.max.filesize和hbase.regionserver.region.split.policy值。...也就是说分区文件中填的都是key取值范围的分隔点,如下图所示: ? 2.hbase shell中建分区表,指定分区文件 在hbase shell中直接输入create,会看到如下的提示: ?...三、hbase预分区方案 在HBase中,表会被划分为1...n个Region,被托管在RegionServer中。...如果数据装不住了,对于partition方式预分区的话,如果让它自然分裂的话,情况分严重一点。...因为分裂出来的分区号会是一样的,所以计算到partitionId的话,其实还是回到了顺序写年代,会有部分热点写问题出现,如果使用partition方式生成主键的话,数据增长后就要不断地调整分区了,比如增多预分区
前一篇Recovery打开adb shell里提到system目录是用来挂载系统/system分区的,所以是一个空目录。这一点是通过打开adb shell后,查看文件目录知道的。
分裂 当Region的大小超过配置的阈值时,它会自动分裂成两个较小的Region。...分裂后的Region可能会被转移到不同的Region Server上。 Region合并 当数据被删除或压缩后,某些Region可能会变得很小,HBase会自动进行合并以节省资源。...-- 5GB --> 自动分裂Region:当Region文件大小达到阈值时,HBase会自动进行分裂。...可以通过hbase.hregion.precreate.flushthreshold配置来调整分裂的策略。...-- 单个Region Server最大允许超载的Region数量 --> 3 预分区和手动分区 预分区可以避免在数据写入初期时,所有数据都集中在少数Region Server
起源: 准备测试tfs分布式存储,发现一台服务器24块大盘,还有好几台服务器, 想想那么碰分区格式化,UUID自动挂载,还好有自动脚本。...1,yes能在你需要输入y时帮你操作,要不一台服务器不间断24次y还不知道什么时候敲击 2,UUID也能自动获取,这样才能自动挂载且盘符能固定 #!
Region自动切分是HBase能够拥有良好扩张性的最重要因素之一,也必然是所有分布式系统追求无限扩展性的一副良药。...HBase系统中Region自动切分是如何实现的,这里面涉及很多知识点,比如Region切分的触发条件是什么、Region切分的切分点在哪里、如何切分才能最大的保证Region的可用性、如何做好切分过程中的异常处理...、切分过程中要不要将数据移动等,这篇文章将会对这些细节进行基本的说明,一方面可以让大家对HBase中Region自动切分有更加深入的理解,另一方面如果想实现类似的功能也可以参考HBase的实现方案。...阈值(hbase.hregion.max.filesize)设置较大对大表比较友好,但是小表就有可能不会触发分裂,极端情况下可能就1个,这对业务来说并不是什么好事。...父region分裂为两个子region后,将daughter A、daughter B拷贝到HBase根目录下,形成两个新的region。
HBase-2.x支持7种Region自动拆分Region的策略,类图如下: ?...设置自动拆分策略的关键配置如下: hbase.regionserver.region.split.policy description: Region自动拆分的策略 default: HBase...接下来将详细介绍这7种Region自动拆分的策略。 1....的自动拆分策略去拆分Region。...在使用禁止自动拆分策略的诸多条件中,数据量大是很重要的一点,因为当使用自动拆分时,无论你设置了哪种拆分策略,一开始数据进入HBase的时候都只会往一个Region塞数据。
Region Split Region的大小超出了预设的阈值,则需要将该Region自动分裂成为两个Region 分裂过程中,被分裂的Region会暂停读写服务。...父Region的数据文件并不会真正的分裂,而是仅仅通过更改引用方式,来实现快速分裂,即通过新的访问方式访问源文件,HBase后台会自己进行分裂操作 客户端册所缓存的父Region的路由信息需要被更新 2.4...预分区 默认情况下,创建一个表,hbase会为其自动分区,即Region Server会不断工作,导致Region Server负载过大,所以比较好的办法是根据业务提前对表进行分区,例如有5个region...被多个Region Server管理,在插入数据的时候,会向5个region中分别插入,负载均衡 创建分区的方法: hbase> create ‘ns1:t1’, ‘f1’, SPLITS =>...20181020’,’20181030’] 2.指定分隔文件 create ‘logs’,’info’,SPLITS => ‘opt/datas/logs_split.txt’ 3.指定多少分区
预分区 在表创建时,根据预期的行键范围进行分区,减少数据热点 适用于数据访问较为均匀的场景,避免单一Region的过度负载 Region自动分裂 当Region的大小超过阈值时...,自动将其分裂成两个Region 适用于数据量持续增长的场景,避免单个Region过大导致性能问题 手动Region分裂 手动根据业务需求分裂Region,精确控制数据分布 适用于需要精确控制数据分布的场景...列族级别的Bloom过滤器 根据列族的需求启用Bloom过滤器,可以进一步优化查询效率 适用于需要精确查询的列族,减少无效的数据扫描 存储优化策略的配置与实现 1 配置预分区...在创建表时,可以通过配置预分区来优化数据的存储和访问。...以下是一个预分区的示例代码: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration
区域分裂不及时:当数据过于集中时,HBase 没有及时分裂区域,导致热点区域持续承受大量请求。写操作频繁:同一行或区域上的写操作频繁,导致该区域的 I/O 压力增加。...区域分裂不均衡:热点区域没有及时分裂或分裂后仍然集中访问。热点数据的监控方法通过 HBase 的监控工具可以帮助发现热点问题。...2 使用预分区(Pre-splitting)预分区是另一种有效避免热点问题的方法。在创建表时,HBase 支持手动设置预分区。预分区可以将数据均匀分布到多个区域,避免数据过度集中在一个区域内。...可以通过增大写缓存、调整区域分裂策略等方式来提升 HBase 的性能。...2 及时监控与调优定期监控 HBase 的运行状态,及时发现热点区域并采取优化措施。根据实际的业务需求调整 HBase 的配置,如增大写缓存、调整区域分裂策略等。
在HBase的表设计中,默认情况下,表在创建时只有一个Region,随着数据的不断写入,Region会达到一个设定的大小上限,然后通过自动分裂(auto-split),将数据分片为新的Region。...优点 描述 优化负载均衡 预分区使Region均匀分布,减少自动分裂的开销...创建带预分区的表HBase提供了多种方式在创建表时预先分区,最常见的方式是基于行键范围或自定义分区键进行预分区。...监控与调优在HBase集群运行时,监控各个Region的负载情况非常重要。如果发现某些Region的负载过高或过低,可以通过调整分区策略或手动分裂/合并Region进行优化。...表创建 使用HBase API或HBase Shell创建带预分区的表。 监控调优 通过监控工具定期检查Region负载,必要时调整分区策略。
负责过大 region 的切分 Region HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据每个表一开始只有一个region,随着数据不断插入表,region...当一个reion达到一定的大小,为了负载均衡,我们需要分裂成两个region,这个过程就是 split。 hbase是如何处理 split 的?...当某个store(对应一个column family)的大小大于配置值 hbase.hregion.max.filesize的时候(默认10G)region就会自动分裂。...我们可以通过配置 hbase.regionserver.region.split.policy 来指定split策略,我们也可以写我们自己的split策略。 什么是预分区?...,也就达到了我们的需求,但是需要注意的是,随着数据越来越大,超出我们预估的 50G 那么这个时候,我们也需要重新对分区进行调整了 Hbase 数据查询方式 HBase的查询实现只提供两种方式: 按指定RowKey
3)面向列:面向列(族)的存储和权限控制,列(族)独立检索; 4)稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏; 5)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配...那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高 HBase 性能 . (3)RowKey 设计 一条数据的唯一标识就是 rowkey,那么这条数据存储于哪个分区,取决于 rowkey...预分区的目的主要是在创建表的时候指定分区数,提前规划表有多个分区,以及每个分区的区间范围,这样在存储的时候 rowkey 按照分区的区间存储,可以避免 region 热点问题。...会进行分裂,这将增加I/O开销,所以解决方法就是根据你的RowKey设计来进行预建分区,减少region的动态分裂。...18、为什么不建议在 HBase 中使用过多的列族 在 Hbase 的表中,每个列族对应 Region 中的一个Store,Region的大小达到阈值时会分裂,因此如果表中有多个列族,则可能出现以下现象
领取专属 10元无门槛券
手把手带您无忧上云