首页 > 其他分享 >HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)

HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)

时间:2023-01-19 14:32:17浏览次数:34  
标签:3917ebd872c0adcb9d6c5a9cfd30 列族 region column zz table HBASE hbase

HRegionServer内部管理了一系列HRegion对象,每个HRegion对 应了table中的一个region,HRegion中由多 个HStore组成。每个HStore对应了Table中的一个column family的存储,可以看出每个columnfamily其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个column family中,这样最高效。

HStore存储是HBase存储的核心,由两部分组成,一部分是MemStore,一 部分是StoreFile。MemStore是 Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile)。

HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)_Memory

进行split的条件:该regiion下所有的storeFile中最大的storeFile大小超过阀值即进行spliet

在文件层次上,不同的列族,存储在不同的文件中。但是不同的列族,可能会共享一个region。

/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30/a

/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30/a/9210131397650425238

/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30/b

/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30/b/7083844554431109536

如上所示:两个不同的列族,共享了同一个region(3917ebd872c0adcb9d6c5a9cfd30)。

由于不同的列族会共享region,所以有可能出现,一个列族已经有1000万行,而另外一个才100行。当一个要求region分割的时候,会导致100行的列会同样分布到多个region中。

这样就出现了基数问题。(如果表存在多个列族,列族A有100万行,列族B有10亿行,那么列族A可能会被分散到很多个Region上,这会导致扫描列族A的性能低下)

(某个column family在flush的时候,它邻近的column family也会因关联效应被触发flush,最终导致系统产生更多的I/O)

所以,一般建议不要设置多个列族。

标签:3917ebd872c0adcb9d6c5a9cfd30,列族,region,column,zz,table,HBASE,hbase
From: https://blog.51cto.com/u_15130867/6020092

相关文章

  • HBase 快速入门(安装和命令操作)
    1HBase安装部署1.1Zookeeper正常部署首先保证Zookeeper集群的正常部署,并启动。bin/zkServer.shstartbin/zkServer.shstartbin/zkServer.shstart1.2Hadoop正常部......
  • HBase API
    1环境准备新建项目后在pom.xml中添加依赖:注意:会报错javax.el包不存在,是一个测试用的依赖,不影响使用<dependencies><dependency><groupId>org.apache.hbase......
  • HBase 简介
    1HBase定义ApacheHBase是以hdfs为数据存储的,一种分布式、可扩展的NoSQL数据库。2HBase数据模型HBase的设计理念依据Google的BigTable论文,论文中对于数据模型......
  • [20221227]a mutating table error without a trigger!.txt
    [20221227]amutatingtableerrorwithoutatrigger!.txt--//快放假,没什么事情,花一点点时间看了harmfultriggers.blogspot.com,关于触发器的相关危害.--//参考链接:har......
  • Linux下开启防火墙放行nfs,ssh,httpd,dns,chrony服务(iptables,firewalld),firewalld端口转发
     环境:CentOS7.9什么是防火墙防火墙:防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙又可以分为硬件防火墙与软件......
  • JDK 1.8 Hashtable的源码分析
       /**   *Hashtable特点:   * 与hashTable一样1.1效率低,线程安全,key不为null hashMap1.2 效率高,key为null长度11    */publicclassHashta......
  • HBASE架构解析
    HBase架构组成HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由一下类型节点组成:HMaster节点、HRegionServer节点、ZooKeeper集群,而在底层,它将数据存储于HDFS中,......
  • CF946D Timetable(动态规划)
    Timetable题意:给出\(n\)行\(m\)列\(01\)串,对于每一行所要花费的代价是行中第一个\(1\)和最后一个\(1\)之间的距离加一,现在你有魔法可以去除掉\(k\)个\(1\),......
  • Iptables原理介绍
    Linux防火墙——iptables原理介绍原创 liugp 大数据与云原生技术分享 2023-01-0207:30 发表于广东收录于合集#linux13个#防火墙3个#iptables2个一、......
  • 如何使用Java异步编程(多线程CompletableFuture)
    1、创建异步线程任务根据supplier创建CompletableFuture任务//使用内置线程ForkJoinPool.commonPool(),根据supplier构建执行任务publicstatic<U>CompletableFuture......