zoukankan      html  css  js  c++  java
  • hbase内核学习总结

    Hbase集群架构

    组件

    client

    • API:对外提供访问的API
    • 加速cache:存储从regionServer返回的信息,不过容量较小,由参数hbase.client.write.buffer控制

    HMaster

    • 负责分散读访问到不同的RegionServer
    • Balancer:负责将数据分散到不同的RegionServer上
    • 失效的RegionServer摘除
    • 提供用户的基础操作(get/put/delete/scan/update/create/drop等)

    RegionServer

    • 处理Region的I/O请求
    • 切分/合并Region

    RegionServer的结构:

     

    zookeeper

    • 选举新的HMaster
    • 存储Region寻址信息
    • RegionServer心跳检测,上下线注册通知Hmaster
    • 存储元数据

     

    Table结构

    按照如下语句建表,写入数据

    create 'sohu',{NAME => 'staffInfo', VERSIONS => 2, TTL=>'15552000'},{NAME => 'carInfo', VERSIONS => 2, TTL=>'15552000'}
    put 'sohu','rowkey001','staffInfo:name','wyett'
    put 'sohu','rowkey001','staffInfo:age','20'
    put 'sohu','rowkey001','carInfo:licence','京B8888'
    put 'sohu','rowkey001','carInfo:brand','Porsche'
     
    hbase(main):003:0> get 'sohu','rowkey001', 'staffInfo', 'carInfo'
    COLUMN                                           CELL                                                                                                                                         
     carInfo:brand                                   timestamp=1497862298400, value=Porsche                                                                                                       
     carInfo:licence                                 timestamp=1497862288122, value=xE4xBAxACB8888                                                                                             
     staffInfo:age                                   timestamp=1497862280230, value=20                                                                                                            
     staffInfo:name                                  timestamp=1497862195491, value=wyett

    rowkey为rowkey001的行数据,来解释表结构

    • rowkey:主键,唯一标识数据行
    • columnfamily:列簇,列的集合。有两个columnfamily,staffInfo和carInfo
    • column:列。第一行数据有4个列名。
    • version 和timestamp:保留的版本数,在建表时指定,当前表version为2,和timestamp共同决定版本保留
    • value:键值

    HTable中,只有一种存储类型,byte[]。

    • client咨询master,确定写入的regionServer节点;
    • client将数据写入regionServer的Region(一次只能操作一个region,至少在hbase shell看是这样)
    • 数据写入HLog,相当于关系型数据库的redo Log,结构暂不清楚,待补充;
    • 同时,数据写入某个Store,先写入memStore,当memStore写满时,将数据写入新的region,原region进入落盘队列 Flush List。
    • 有一个进程监控落盘队列,并记录已经进行持久化的memStore的信息,记录在zookeeper中
    • memStore进行持久化时,会写入一个大的Store中,当写入达到某个阈值时,会触发合并,这个过程就是major compact,这个过程将多条版本的数据进行合并,根据version,timestamp保留需要的数据。
    • 当新生成的StoreFile达到阈值(上水位线),会触发StoreFile进行split。
    • 然后会将Store的信息返回给Hmaster,并记录进zookeeper
  • 相关阅读:
    倚天
    第5課 森さんは7時に起きます。
    第1課 李さんは中国人です
    一个整体的规划
    こんにちは
    原始凭证
    第3課 ここはデパートです
    ERP术语
    第2課 これはほんです
    vc 问题总结
  • 原文地址:https://www.cnblogs.com/wyett/p/7464694.html
Copyright © 2011-2022 走看看