• Hbase架构,组件分析 ,Hbase集群搭建


    1.hbase的架构

    Hbase主要由master,regionserver,zookeeper,client,hdfs文件系统构成.

     

    Zk:记录hbase的表的元数据信息

    hamster:进行region的分配,发出操作指令

    Hlog:记录HregionServer的操作日志,保证数据的可靠性

    HRegion:存储Hbase表的信息

    store:Hbase表的不同列族的存储

    DataNode:存储Hbase的Hlog及Hbase表的Hfile的文件持久化存储

     

    2.hbase的组件及作用

    1)Client

    访问Hbase的接口, Client中具有 cache来加速Hbase的访问,比如cache的.META.元数据的信息。

    2)Zookeeper

    HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。

    通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务

    通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下线的信息

    通过Zoopkeeper存储元数据的统一入口地址

    3)Hmaster

    master节点的主要职责如下:

    为RegionServer分配Region

    维护整个集群的负载均衡

    维护集群的元数据信息

    发现失效的Region,并将失效的Region分配到正常的RegionServer上

    当RegionSever失效的时候,协调对应Hlog的拆分

    4)HregionServer

    HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:

    管理master为其分配的Region

    处理来自客户端的读写请求

    负责和底层HDFS的交互,存储数据到HDFS

    负责Region变大以后的拆分

    负责Storefile的合并工作

    5)HDFS

    HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:

    提供元数据和表数据的底层分布式存储服务

    数据多副本,保证的高可靠和高可用性

     

    3.hbase的读写流程

    HBase读数据流程:

    1)Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息;

    2)根据namespace、表名和rowkey在meta表中找到对应的region信息;

    3)找到这个region对应的regionserver;

    4)查找对应的region;

    5)先从MemStore找数据,如果没有,再到BlockCache里面读;

    6)BlockCache还没有,再到StoreFile上读(为了读取的效率);

    7)如果是从StoreFile里面读取的数据,不是直接返回给客户端,而是先写入BlockCache,再返回给客户端。

    写入数据流程:

    1)Client向HregionServer发送写请求;

    2)HregionServer将数据写到HLog(write ahead log)。为了数据的持久化和恢复;

    3)HregionServer将数据写到内存(MemStore);

    4)反馈Client写成功。

     

     

    4.hbase集群搭建

    伪分布式 :

    1.hbase-env.sh中配置JAVA_HOME

    2.配置hbase-site.xml如下

    <property>

    <name>hbase.rootdir</name>

    <value>file:///root/hbaserootdir</value>

    </property>

    <property>

    <name>hbase.zookeeper.property.dataDir</name>

    <value>/root/zookeeper/data</value>

    </property>

    完全分布式搭建:

    设置使用自定义的zookeeper:

             需要在hbase-env.sh中设置HBASE_MANAGES_ZK为false

    backup-masters配置:

      node2

      hbase-env.sh配置:

    export JAVA_HOME=/usr/java/jdk1.7.0_80  

    export HBASE_MANAGES_ZK=false  

      hbase-site.xml配置:

       <configuration>

          <property>

            <name>hbase.rootdir</name>

            <value>hdfs://mycluster/hbase</value>

          </property>

          <property>

            <name>hbase.zookeeper.quorum</name>

            <value>node2,node3,node4</value>

          </property>

          <property>

            <name>hbase.zookeeper.property.dataDir</name>

            <value>/var/hbase/zookeeper</value>

          </property>

          <property>

            <name>hbase.cluster.distributed</name>

            <value>true</value>

          </property>

      </configuration>  

      regionservers配置:

    node2

    node3  

    node4  

      将hdfs-site.xml拷贝到hbase的conf目录

    或者使用软链接,将Hadoop的配置文件软连接到hbase的配置目录

    bin/start-hbase.sh     bin/stop-hbase.sh   bin/hbase shell

    HBase的WEB UI访问:

    HMaster:http://node1:60010

  • 相关阅读:
    echarts —— 绘制横向柱状图(圆角、无坐标轴)
    浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户
    浅析微信支付:支付验收示例和验收指引
    浅析微信支付:如何使用沙箱环境测试
    linux内存源码分析
    linux内存源码分析
    linux内存管理源码分析
    linux源码分析
    移植python笔记
    linux中断源码分析
  • 原文地址:https://www.cnblogs.com/eric666666/p/11118197.html
Copyright © 2020-2023  润新知