zoukankan      html  css  js  c++  java
  • 2.1-2.2 HBase数据存储

    一、HBase数据检索流程

    一篇介绍HBase数据读写流程的解析的博文:http://hbasefly.com/2016/12/21/hbase-getorscan/?wsfatm=uqvhl3

    1、命名空间

    ##查看命名空间
    hbase(main):001:0> list_namespace
    NAMESPACE                                                                                                                                                                   
    2019-05-21 13:31:59,854 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    default                                                                                                                                                                     
    hbase 
    
    
    ##查看命名空间下的表
    hbase(main):003:0> list_namespace_tables 'hbase'
    TABLE                                                                                                                                                                       
    meta                                                                                                                                                                        
    namespace                                                                                                                                                                   
    2 row(s) in 0.0260 seconds
    
    
    ##查看某个命名空间下的表数据
    hbase(main):004:0> scan 'hbase:meta'


    2、数据检索流程

    image

    #####
    由图可以看出,存储模块主要包括了ZooKeeper集群、HMaster、HRegionServer。
    
    
    
    ZooKeeper:          Hbase是强依赖于ZooKeeper,我们读或写一个表的数据,都会优先访问ZooKeeper。
    
    通常是集群中单独的3/5台服务器。
    
    
    HMaster通常是Hadoop集群中的一台或两台(backup-Master)。
    
    
    HRegionServer通常是Hadoop集群中的部分或全部, HRegionServer通常和datanode部署在同一台服务器上,比如datanode是10个HRegionServer可以是10个或小于10个;
    
    
    
    ##client--->server
    1、客户端首先会根据配置文件中zookeeper地址连接zookeeper,并读取/<hbase-rootdir>/meta-region-server节点信息,该节点信息存储HBase元数据(hbase:meta)表所在的RegionServer地址以及访问端口等信息。用户可以通过zookeeper命令(get /<hbase-rootdir>/meta-region-server)查看该节点信息。
    
    2、根据hbase:meta所在RegionServer的访问信息,客户端会将该元数据表加载到本地并进行缓存。然后在表中确定待检索rowkey所在的RegionServer信息。
    
    3、根据数据所在RegionServer的访问信息,客户端会向该RegionServer发送真正的数据读取请求。服务器端接收到该请求之后需要进行复杂的处理,具体的处理流程将会是这个专题的重点。
    
    
    通过上述对客户端以及HBase系统的交互分析,可以基本明确两点:
    1、客户端只需要配置zookeeper的访问地址以及根目录,就可以进行正常的读写请求。不需要配置集群的RegionServer地址列表。
    
    2、客户端会将hbase:meta元数据表缓存在本地,因此上述步骤中前两步只会在客户端第一次请求的时候发生,之后所有请求都直接从缓存中加载元数据。如果集群发生某些变化导致hbase:meta元数据更改,客户端再根据本地元数据表请求的时候就会发生异常,此时客户端需要重新加载一份最新的元数据表到本地。
  • 相关阅读:
    内网穿透事件参考
    mysql的优化总结
    linux切换普通用户遇bash-4.1解决
    python爬虫匹配实现步骤
    restful设计参考
    php扩展安装
    python算术
    python 文件操作
    python生成器
    Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/10904161.html
Copyright © 2011-2022 走看看