Hadoop-No.10之列簇
2024-10-11 03:47:18
HBase中包含列簇(column family)的概念.列簇本质上是列的存储容器.一张表可以有一个或多个列簇.每个列簇都有自己的HFile结婚,而且在执行合并操作时,同一个表的其他列簇不受影响
在很多实用案例中,一张表不需要多个列簇.如果一张标中国的一部分列操作完成,或者变化频率与其他列存在显著不同,则可以使用一个以上的列簇.
比如,HBase 表包含两列:列1每行包含400字节,而列2每行包含20个字节.现在我们假设列1的值只设置一次,,不会改变,但是列2的值要经常改变.另外,从访问模式上看,对列2调用的get请求远多于针对列1 的get函数.
这种情况下,使用两个列簇更好,原因如下 :
降低合并成本
如果有两个独立的列簇,那么包含列2的列簇会经常刷新memstore,所以会产生较小的合并.因为列2在其自身的列簇中,所以HBase只需要合并总记录数中的5%的数据,因此合并对性能的影响更小
更好的使用数据块存储
从HBase中检索数据时,附近(位于同一个HBase缓存中)的记录会拉入数据块缓存中.如果列1和列2在同一个列簇中,每次对列2调用get请求时都会把两列数据拉倒缓存中.缓存包含了列1 的数据,而列1中的数据接受的get请求非常少,使用的频率也非常低,这就导致了不理想的缓存分布.使用列1和列2位于不同列簇,会导致缓存中填充的数据仅来自于列2,因此增加了随后对列2调用get请求的高速缓存命中率
最新文章
- python案例-用户登录
- Complete the Sequence[HDU1121]
- 在Apache下发布ASP.NET程序
- 浅谈Bootstrap自适应功能在Web开发中的应用
- AIX 第3章 指令记录
- <;转+改>;Web测试中关于登录的测试
- java集合 collection-list-vector
- Using FireMonkey Layouts
- ☀【CSS3】icon
- 构建WDK驱动出现fatal error U1087: cannot have : and :: dependents for same target
- Vuex随笔
- 给指针malloc分配空间后就等于数组吗?【转】
- 团队作业8——Beta 阶段冲刺5th day
- 微信小程序生成带参数的二维码 小程序二维码
- C# Quartz定时任务corn时间设置详解
- JQ attr prop 区别
- neo4j的配置文件(图文详解)
- ubuntu 设置静态ip地址不生效问题
- MySQL数据类型和运算符
- 2018-2019 2 20165210 《网络对抗技术》Exp5 MSF基础
热门文章
- udb主从不同步排错
- 简单的GCC语法: 弄清gcc test.c 与 gcc -c test.c 的差别
- SQLSERVER2008 内存占用高的处理方式
- MySql查看时间
- 并不对劲的bzoj4001:loj2105:p3978:[TJOI2015]概率论
- centos7 追加python3 + 使用pip + virtualenv
- 【spring Boot】spring boot获取资源文件的三种方式【两种情况下】
- 深入理解计算机系统 第十章 系统级I/O 第二遍
- js获取图片信息
- ES6基础之——get 与 set