离线数据系统之HBase架构

HBase架构概括

Hbase架构角色

  • hmaster的职责
  1. 管理用户对Table的增、删、改、查操作;
  2. 记录region在哪台Hregion server上
  3. 在Region Split后,负责新Region的分配;
  4. 新机器加入时,管理HRegion Server的负载均衡,调整Region分布
  5. 在HRegion Server宕机后,负责失效HRegion Server 上的Regions迁移。
  • hregionserver的职责
  1. HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBASE中最核心的模块。
  2. HRegion Server管理了很多table的分区,也就是region。
  • client职责
  1. HBASE Client使用HBASE的RPC机制与HMaster和RegionServer进行通信
  2. 管理类操作:Client与HMaster进行RPC;
  3. 数据读写类操作:Client与HRegionServer进行RPC。

  1. Client: 包含访问HBase的接口并维护cache来加快对HBase的访问
  2. Zookeeper :保证任何时候,集群中只有一个活跃master 存贮所有Region的寻址入口。 实时监控Region server的上线和下线信息。并实时通知Master 存储HBase的schema和table元数据。(实际HBASE从节点也要向Zookeeper注册)
  3. Master: 为Region server分配region; 负责Region server的负载均衡; 发现失效的Region server并重新分配其上的region ;管理用户对table的增删改操作
  4. RegionServer: Region server维护region,处理对这些region的IO请求; Region server负责切分在运行过程中变得过大的region
  5. Region: HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据 ;每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region(裂变); 当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Regionserver 上。
  6. Memstore 与 storefile: 一个region由多个store组成,一个store对应一个CF(列族); store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile; 当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile; 当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡 客户端检索数据,先在memstore找,找不到再找storefile

总结:

  1. HRegion是HBase中分布式存储和负载均衡的最小单元。
  2. 最小单元就表示不同的HRegion可以分布在不同的 HRegion server上。
  3. HRegion由一个或者多个Store组成,每个store保存一个columns family。 每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上。

Hbase读写流程

  • 写流程
  1. client向hregionserver发送写请求。
  2. hregionserver将数据写到hlog(write ahead log)。为了数据的持久化和恢复。
  3. hregionserver将数据写到内存(memstore)
  4. 反馈client写成功。
  • 数据flush过程
  1. 当memstore数据达到阈值(默认是64M),将数据刷到硬盘,将内存中的数据删除,同时删除Hlog中的历史数据。
  2. 并将数据存储到hdfs中。
  3. 在hlog中做标记点。
  • 数据合并过程
  1. 当数据块达到4块,hmaster将数据块加载到本地,进行合并
  2. 当合并的数据超过256M,进行拆分,将拆分后的region分配给不同的hregionserver管理
  3. 当hregionser宕机后,将hregionserver上的hlog拆分,然后分配给不同的hregionserver加载,修改.META.
  4. 注意:hlog会同步到hdfs
  • hbase的读流程
  1. 通过zookeeper和-ROOT- .META.表定位hregionserver。
  2. 数据从内存和硬盘合并后返回给client
  3. 数据块会缓存
发布了491 篇原创文章 · 获赞 435 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/lixinkuan328/article/details/104494196