HBase架构

作者: Real_man | 来源:发表于2019-01-28 08:14 被阅读23次
image
  • Zookeeper,作为分布式的协调。RegionServer也会把自己的信息写到ZooKeeper中。

  • HDFS是Hbase运行的底层文件系统

  • RegionServer,理解为数据节点,存储数据的。

  • Master RegionServer要实时的向Master报告信息。Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移和Region的切分。

架构细化

image.png
  • HMaster是Master Server的实现,负责监控集群中的RegionServer实例,同时是所有metadata改变的接口,在集群中,通常运行在NameNode上面,这里有一篇更细的HMaster介绍

    • HMasterInterface暴露的接口,Table(createTable, modifyTable, removeTable, enable, disable),ColumnFamily (addColumn, modifyColumn, removeColumn),Region (move, assign, unassign)

    • Master运行的后台线程:LoadBalancer线程,控制region来平衡集群的负载。CatalogJanitor线程,周期性的检查hbase:meta表。

  • HRegionServer是RegionServer的实现,服务和管理Regions,集群中RegionServer运行在DataNode

    • HRegionRegionInterface暴露接口:Data (get, put, delete, next, etc.),Region (splitRegion, compactRegion, etc.)

    • RegionServer后台线程:CompactSplitThread,MajorCompactionChecker,MemStoreFlusher,LogRoller

  • Regions,代表table,Region有多个Store(列簇),Store有一个Memstore和多个StoreFiles(HFiles),StoreFiles的底层是Block。

存储设计

在Hbase中,表被分割成多个更小的块然后分散的存储在不同的服务器上,这些小块叫做Regions,存放Regions的地方叫做RegionServer。Master进程负责处理不同的RegionServer之间的Region的分发。在Hbase实现中HRegionServer和HRegion类代表RegionServer和Region。HRegionServer除了包含一些HRegions之外,还处理两种类型的文件用于数据存储

  • HLog, 预写日志文件,也叫做WAL(write-ahead log)

  • HFile 真实的数据存储文件

HLog
  • MasterProcWAL:HMaster记录管理操作,比如解决冲突的服务器,表创建和其它DDLs等操作到它的WAL文件中,这个WALs存储在MasterProcWALs目录下,它不像RegionServer的WALs,HMaster的WAL也支持弹性操作,就是如果Master服务器挂了,其它的Master接管的时候继续操作这个文件。

  • WAL记录所有的Hbase数据改变,如果一个RegionServer在MemStore进行FLush的时候挂掉了,WAL可以保证数据的改变被应用到。如果写WAL失败了,那么修改数据的完整操作就是失败的。

    • 通常情况,每个RegionServer只有一个WAL实例。在2.0之前,WAL的实现叫做HLog

    • WAL位于/hbase/WALs/目录下

    • MultiWAL: 如果每个RegionServer只有一个WAL,由于HDFS必须是连续的,导致必须写WAL连续的,然后出现性能问题。MultiWAL可以让RegionServer同时写多个WAL并行的,通过HDFS底层的多管道,最终提升总的吞吐量,但是不会提升单个Region的吞吐量。

  • WAL的配置:

// 启用multiwal
<property>
  <name>hbase.wal.provider</name>
  <value>multiwal</value>
</property>

Wiki百科关于WAL

HFile

HFile是Hbase在HDFS中存储数据的格式,它包含多层的索引,这样在Hbase检索数据的时候就不用完全的加载整个文件。索引的大小(keys的大小,数据量的大小)影响block的大小,在大数据集的情况下,block的大小设置为每个RegionServer 1GB也是常见的。

探讨数据库的数据存储方式,其实就是探讨数据如何在磁盘上进行有效的组织。因为我们通常以如何高效读取和消费数据为目的,而不是数据存储本身。

Hfile生成方式

起初,HFile中并没有任何Block,数据还存在于MemStore中。

Flush发生时,创建HFile Writer,第一个空的Data Block出现,初始化后的Data Block中为Header部分预留了空间,Header部分用来存放一个Data Block的元数据信息。

而后,位于MemStore中的KeyValues被一个个append到位于内存中的第一个Data Block中:

:如果配置了Data Block Encoding,则会在Append KeyValue的时候进行同步编码,编码后的数据不再是单纯的KeyValue模式。Data Block Encoding是HBase为了降低KeyValue结构性膨胀而提供的内部编码机制。

image.png
读写简流程
image.png

最后

整理了一些Hbase架构方面的内容

参考:

相关文章

  • HBase学习笔记(二)HBase架构

    HBase Architectural Components(HBase架构组件) HBase架构也是主从架构,由...

  • HBase

    简述 1 HBase的应用场景 2 HBase的概念与定位 3 HBase架构体系与设计模型 HBase架构体系 ...

  • Hbase运行机制

    本文思路 Hbase是什么 Hbase的优劣 Hbase架构 Hbase容错 Hbase使用总结 HBase是什么...

  • (转) 深入HBase架构解析

    title: (转)HBase架构深入解析 tags: hbase categories: Hbase comme...

  • 数据存储-Hbase基础

    Outline 什么是Hbase 为什么需要Hbase Hbase的基础概念 Hbase的架构 Hbase的读写操...

  • code搬运工_HBaseClientAPI和架构

    HBaseClientAPI和架构 HBase架构HBase Master是服务器负责管理所有的HRegion服务...

  • Hbase架构和设计

    Hbase架构和设计

  • Hbase

    Hbase的架构:主从的架构方案 逻辑架构: region:逻辑的划分,一个region对hbase表的行级的划分...

  • HBase知识点

    深度分析HBase架构 HBase技术简介 Hbase 技术细节笔记(上) Hbase 技术细节笔记(下) 回答思...

  • HBase 对比 Kudu

    架构 HBase Master:管理与监控的RegionServer,管理HBase元数据; Zookeeper:...

网友评论

    本文标题:HBase架构

    本文链接:https://www.haomeiwen.com/subject/ypmojqtx.html