前段时间总结了一篇关于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的预分区的内容分享! 在正式开始介绍之前,我们先联系一下之前所学的内容 , 想想原本数据分区(分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所在分区。
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乘以分区数。
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 包依赖,项目会自动下载所需的依赖包,并自动实现依赖导入:
Spark SQL中的Parquet数据源,支持自动根据目录名推断出分区信息。例如,如果将人口数据存储在分区表中,并且使用性别和国家作为分区列。...这就是自动分区推断的功能。 此外,分区列的数据类型,也是自动被推断出来的。目前,Spark SQL仅支持自动推断出数字类型和字符串类型。...有时,用户也许不希望Spark SQL自动推断分区列的数据类型。...此时只要设置一个配置即可, spark.sql.sources.partitionColumnTypeInference.enabled,默认为true,即自动推断分区列的类型,设置为false,即不会自动推断类型...禁止自动推断分区列的类型时,所有分区列的类型,就统一默认都是String。
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 "磁盘分区已完成
如果想关闭自动拆分改为手动拆分,建议同时修改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
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塞数据。
起源: 准备测试tfs分布式存储,发现一台服务器24块大盘,还有好几台服务器, 想想那么碰分区格式化,UUID自动挂载,还好有自动脚本。...1,yes能在你需要输入y时帮你操作,要不一台服务器不间断24次y还不知道什么时候敲击 2,UUID也能自动获取,这样才能自动挂载且盘符能固定 #!
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
负责过大 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的大小达到阈值时会分裂,因此如果表中有多个列族,则可能出现以下现象
平时在ubuntu里安装软件,把安装位置选在windows分区或者网盘同步位置选在windows分区的情况也不少吧,但是windows分区在ubuntu启动时是默认不挂载的,因此在启动网盘时总需要先挂载...windows分区,太麻烦了,不如让ubuntu开机时自动挂载windows分区。...步骤如下: 1.找出windows分区的uuid,使用blikd命令 ? 如上图,找出ntfs文件系统的分区对应的uuid。...注意挂载的位置,应该是/media/+分区的label。 大功告成,重启看看是否自动挂载windows分区。
通常在制作云上使用的虚拟机时,如果不进行任何干预,安装出来的虚拟机默认是带有swap分区的,同时采用lvm来管理磁盘,通过这种方式制作出来的虚拟机镜像,直接在云上使用会有很多问题,其中一个就是根分区无法实现自动扩容...本文的目的是实现在Linux虚拟机(本文采用centos7.6)中自动完成根分区的扩容,而无需人工介入。 1....MBR分区与GPT分区: MBR分区仅支持最大2T的磁盘,每个磁盘最多4个主分区或3个主分区加1个扩展分区; GPT分区支持大于2T的磁盘,最大可支持18EB磁盘,每个磁盘最多128个分区; 3....验证磁盘自动扩容 在前面创建的centos7.6虚拟机镜像中,虚拟机系统盘只有20GB。接下来在openstack环境中,利用该镜像创建一个拥有400GB系统盘的虚拟机。...虚拟机创建并启动完成后,通过下面的命令可以看出,cloudinit自动完成了根分区的扩容: [root@centos ~]# parted /dev/vda print Model: Virtio Block
领取专属 10元无门槛券
手把手带您无忧上云