• Hadoop-No.10之列簇


    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请求的高速缓存命中率

  • 相关阅读:
    ASP.Net User Controls as Static or Movable PopUps
    处理WinForm多线程程序时的陷阱(摘自网络)
    《颤抖吧,无证程序员们》只为娱乐
    Javascript和CSS浏览器兼容总结
    收藏的一个c#通讯编程的帖子很全
    WEB开发人员常用速查手册
    批量修改文件名称( 收藏的一个连接)
    SQL server常用操作
    开源网站大收藏
    pragma comment的使用
  • 原文地址:https://www.cnblogs.com/bilaisheng/p/10210995.html
Copyright © 2020-2023  润新知