HBase列族不能太多的原因
来源:互联网 发布:运行java需要什么软件 编辑:程序博客网 时间:2024/05/19 13:24
原文:
http://www.cnblogs.com/nucdy/p/5965113.html
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)。
进行split的条件:该regiion下所有的storeFile中最大的storeFile大小超过阀值即进行spliet
在文件层次上,不同的列族,存储在不同的文件中。但是不同的列族,可能会共享一个region。
/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30b87f/a
/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30b87f/a/9210131397650425238
/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30b87f/b
/hbase/zz/3917ebd872c0adcb9d6c5a9cfd30b87f/b/7083844554431109536
如上所示:两个不同的列族,共享了同一个region(3917ebd872c0adcb9d6c5a9cfd30b87f)。
由于不同的列族会共享region,所以有可能出现,一个列族已经有1000万行,而另外一个才100行。当一个要求region分割的时候,会导致100行的列会同样分布到多个region中。
这样就出现了基数问题。(如果表存在多个列族,列族A有100万行,列族B有10亿行,那么列族A可能会被分散到很多个Region上,这会导致扫描列族A的性能低下)
(某个column family在flush的时候,它邻近的column family也会因关联效应被触发flush,最终导致系统产生更多的I/O)
所以,一般建议不要设置多个列族。
- HBase列族不能太多的原因
- HBASE列族不能太多的真相
- HBase 不能出现 HMaster和HQuorumPeer 原因
- HBase中不能出现 HRegionServer 原因
- HBase-2.HBase 的体系结构、行键、列族设计
- 每天学的内容不能太多
- HBase 列族数据库
- 不能上网的原因
- sql---建表 太多列
- 感性的人总有太多不舍得的原因似乎也
- HBase 列的详细解析
- Thinkphp if标签不起作用 变量嵌套层次太多的原因
- 我不能要得太多
- HBase列族高级配置
- HBase列族高级配置
- Hbase 删除某一个列族
- HBase列族设计优化
- java hbase ddl alter 添加新的列族
- 使用maven提示Could not calculate build plan: Plugin org.apache.maven.plugins:maven-war-plugin:2.2 or one
- 真Unity3d_pro 版本的目前正确通用打开方法,包含所有版本
- HttpServlet容器响应Web客户请求
- 利用ajax实现文件上传
- Redis的六种特性及使用场景
- HBase列族不能太多的原因
- Android 如何更换系统字体
- Tomcat 安装及使用
- pandas python 分组统计的方法
- C标准库和操作系统api的关系
- 数据结构--栈
- Linux下的ioctl()函数详解
- linux类似命令界面如何出来
- java的JsonObject对象提取值