HBase工作原理最全详解(图文)

版权声明:本博客都是作者10多年工作总结 https://blog.csdn.net/Peter_Changyb/article/details/81280201

HBase集群是由HMaster和HRegionServer等服务组成的。HMaster是HBase集群的管理者,负责管理多个HRegionServer,以及对其上的表和区域Region的管理、对用户数据请求的响应。集群工作主要是客户端和集群交互进行数据文件的读写,由客户端直接和HRegionServer通信,当出现故障后HMaster负责集群的故障切换、HRegion拆分、管理操作接口,因此HMaster出现问题后需要尽快恢复来。HBase集群可以实现高可用,至少两个HMaster节点,最多10个HMaster节点,可以避免HMaster发生单点故障。通过ZooKeeper的Master Election选举机制来保证任何时刻集群内只有一个HMaster在运行。HMaster的具体任务包括:

 

  1. 负责将分区Region分配给HRegionServer。
  2. 负责HRegionServer的负载均衡。
  3. 负责监控集群的从节点状态,发现失效的HRegionServer并重新分配其上的Region。
  4. 负责维护表和Region的元数据。
  5. 负责管理用户对表的增、删、改、查操作。
  6. 处理Schema更新请求,GFS上的垃圾文件回收。
  • HRegion和HRegionServer原理介绍

在存储表数据时,有唯一行键rowkey将表分成很多块进行存储,每一块称为一个HRegion。每个HRegion由一个或多个Store组成,每个Store保存表中一个列族的数据,每个Store由一个MemStore和若干个StoreFile组成,MemStore保存在内存中,默认配置是128M,StoreFile的底层实现则是以HFile的形式存储在HDFS上。

  1. HRegionServer对HRegion的管理:负责管理本服务器上的HRegion,处理对HRegion的I/O请求。一台服务器上一般只运行一个HRegionServer,每个HRegionServer管理多个HRegion。每台HRegionServer上有一个HLog文件,记录该HRegionServer上所有HRegion的数据更新备份。
  2. Table的HRegion存储机制:每个table先只有一个HRegion,HRegion是HBase表数据存储分配的最小单位,一张table的所有HRegion会分布在不同的HRegionServer上,但一个HRegion内的数据只会存储在一个HRegionServer上。当客户端进行数据更新操作时,先连接有关的HRegionServer,由其向HRegion提交变更,提交的数据会首先写入HLog和MemStore中的数据累计到设定的阈值时,HRegionServer会启动一个单独的线程,将MemStore中的内容保存到磁盘上,生成一个新的StoreFile。当StoreFile文件的数量增长到设定值后,就会将多个StoreFile合并成一个StoreFile,合并时会进行版本合并和数据删除。说明一下,HBase平时一直在增加数据,所有的更新和删除操作都是在后续的合并过程中进行的。当HRegion中单个StoreFile大小超过设定的阈值,HRegionServer会将该HRegion拆分为两个新的HRegion,并且报告给主服务器,由HMaster来分配由哪些HRegionServer来存放新产生的两个HRgion,最后旧的HRegion不再需要时会被删除。反过来,当两个HRegion足够小时,HBase也会将他们合并。
  3. Client端有访问HBase的接口,并通过缓存来加快对HBase的访问。它使用HBase的RPC机制与HMaster和HRegionServer进行通信:对于管理类操作,Client与HMaster进行通信;对于数据读写类操作,Client与HRegionServer进行通信。

作者常耀斌的最新力作《大数据架构之道和项目实战》2018年底上市全网

京东:https://item.jd.com/39986964895.html,

当当:http://product.dangdang.com/1421904515.html

  1.  

    51CTP视频学习:     http://edu.51cto.com/course/16713.html?source=so
    --------------------- 
     

展开阅读全文

没有更多推荐了,返回首页