IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 二 HBase 架构进阶 -> 正文阅读

[大数据]二 HBase 架构进阶

二, HBase 进阶

2.1 Hbase 的物理架构

请添加图片描述

物理上, HBase是由三种类型的Server组成的主从式(master-slave)架构:

1. RegionServer (HRigionServer)

[概述]

在HDFS中, DataNode负责存储实际数据, RegionServer主要负责响应用户的请求, 向HDFS读写数据; 所以在分布式集群中, RegionServer一般运行在DataNode服务器上, 实现数据的本地性; 

[功能总结]

  • RegionServer 维护Master分配给它的Region:

1.直接处理Client对这些Region的IO请求;
2.刷写MemStore到HDFS中;
3.同时对在运行过程中变得很大的Region进行split操作;
4.负责对超过文件个数阈值的store文件进行Compact 操作;

2. HBase Mater(HMaster)

[概述]

在分布式集群中, HMaster服务器通常运行在 HDFS的NameNode上, HMaster 通过Zookeeper 来避免单点故障, 在集群中可以启动多个HMaster, 但Zookeeper的选举机制能够保证同时只有一个HMaster处于Active状态, 其他的HMaster处于热备份状态;

[功能总结]

  • HMaster 主要负责表和Region的管理工作
  1. 管理用户对表的增删改查操作****(DDL);
  2. 管理RegionServer的负载均衡, 平衡Region在分布式系统中的分布, 包括对Region的切片分配和移除;
  3. 处理RegionServer的故障转移;

扩展:

请添加图片描述

3. Zookeeper

[概述]

请添加图片描述

[功能总结]

  • HBase利用ZooKeeper维护集群中服务器的状态并协调分布式系统的工作
  1. Master选举:
    • 同HDFS的HA机制一样, HBase集群中也有多个HMaster共存, 通过竞争选举机制保证统一时刻只有一个HMaster 处于活跃状态, 一旦这个 HMaster无法使用, 则从备用master节点中选出一个顶上, 保证集群的高可用性(HA-hign avbility)
    • 在第一个HMaster连接到ZooKeeper时会创建Ephemeral节点(默认:/hbasae/master)来表示Active的HMaster,其后加进来的HMaster则监听该Ephemeral节点
  2. 容错机制:
    • 在HBase启动时, 每个RegionServer在加入集群时都需要在Zookeeper中进行注册, 创建一个状态节点, Zookeeper会时时监控每个RegionServer的状态, 同时HMaster 会监听这些注册的RegionServer;
    • 当某个RegionServer 挂掉的时候, Zookeeper 会因为一段时间接收不到它的信条信息而删除该RegionServer 对应的状态节点, 并且会给HMaster 发送节点删除的通知, 这时HMaster获知集群中某个节点断开, 会立即调度其他节点开启容错机制;
  3. Region 状态管理:
    • HBase 集群中 Region 会经常发生变动, 原因可能是系统故障转移, 配置修改, 或者是Region的切分和合并, 只要Region发生变化, 就需要让集群的所有节点知晓, 否则会出现某些事务性的异常; 对于HBase集群, 相当多的Region 如果都交给HMaster做状态管理的话, HMaster 的负担会很重, 所以只有依靠Zookeeper集群来完成;
  4. Region 元数据的管理:
    • 在HBase集群中, Region 元数据被存储在Mete表中, 每次客户端发起新的请求时, 需要查询Meta表来获取Region的位置;
    • 当 Region 发生变化时,例如,Region 的手工移动、进行负载均衡的移动或 Region 所在的 RegionServer 出现故障等,就能够通过 ZooKeeper 来感知到这一变化,保证客户端能够获得正确的 Region 元数据信息。
  5. 提供Meta表的存储位置:
    • 在HBase集群中, 数据库的表信息, 列族信息及列族存储信息都属于元数据, 这些原数据存储在Meta表中, 而Meta表的位置入口由Zookeeper来提供;

扩展: 什么是Meta Table?

Meta Table(hbase:meta),它存储了集群中所有用户HRegion的位置信息,而ZooKeeper的节点中(/hbase/meta-region-server)存储的则直接是这个Meta Table的位置,并且这个Meta Table如以前的-ROOT- Table一样是不可split的。这样,客户端在第一次访问用户Table的流程就变成了

1. 客户端从zk中获取保存meta table的位置信息,知道meta table保存在了哪个region server,并在客户端缓存这个位置信息;
2. client会查询这个保存meta table的特定的region server,查询meta table信息,在table中获取自己想要访问的row key所在的region在哪个region server上。
3. 客户端直接访问目标region server,获取对应的row

注:客户会缓存这些位置信息,然而第二步它只是缓存当前RowKey对应的HRegion的位置,因而如果下一个要查的RowKey不在同一个HRegion中,则需要继续查询hbase:meta所在的HRegion,然而随着时间的推移,客户端缓存的位置信息越来越多,以至于不需要再次查找hbase:meta Table的信息,除非某个HRegion因为宕机或Split被移动,此时需要重新查询并且更新缓存。

请添加图片描述

参考文章:

  1. https://blog.csdn.net/weixin_33964094/article/details/92441365
  2. http://c.biancheng.net/view/6510.html
  3. https://segmentfault.com/a/1190000019959411

4. Q: 上面的三种组件是如何一起工作的?

每个Region Server 都会创建一个ephmeral 节点, HMaster 会监控这些节点来发现可用的Region Servers, 同时他也会监控这些节点是否出现故障;

HMaster 们会竞争创建 ephemeral 节点,而 Zookeeper 决定谁是第一个作为在线 HMaster,保证线上只有一个 HMaster。活动HMaster(active HMaster) 会给 Zookeeper 发送心跳,非活动HMaster (inactive HMaster) 会监听 active HMaster 可能出现的故障并随时准备上位。

如果有一个 Region Server 或者 HMaster 出现故障或各种原因导致发送心跳失败,它们与 Zookeeper 的 session 就会过期,这个 ephemeral 节点就会被删除下线,监听者们就会收到这个消息。Active HMaster 监听的是 region servers 下线的消息,然后会恢复故障的 region server 以及它所负责的 region 数据。而 Inactive HMaster 关心的则是 active HMaster 下线的消息,然后竞争上线变成 active HMaster

2.2 RegionServer的组成

  • HRegionServer包含多个HRegion,由WAL(HLog)、BlockCache、MemStore、HFile组成。

请添加图片描述

  1. WAL

HBase的Write Ahead Log (WAL)提供了一种高并发、持久化的日志保存与回放机制。每一个业务数据的写入操作(PUT / DELETE)执行前,都会记账在WAL中。

由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据保存在内存中会有很高的
概率导致数据丢失,为了解决这个问题,操作记录会先写到一个叫做 Write-Ahead logfile 的文件
中,然后再写入 MemStore 中。所以在系统出现故障的时候,数据可以通过这个日志文件重
建。 (HBase中WAL的实现类是HLog)

  • 具体操作:

    首先,客户端初始化一个可能对数据改动的操作,如put(Put),delete(Delete) 和 incrementColumnValue()。这些操作都将被封装在一个KeyValue对象实例中,通过RPC 调用发送给HRegionServer(最好是批量操作)。 一旦达到一定大小,HRegionServer 将其发送给HRegion。这个过程中,数据会首先会被写入WAL,之后将被写到实际存放数据的MemStore中。当MemStore到达一定大小,或者经过一段时间后,数据将被异步地写入文件系统中

  1. MemStroe
  • 写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机(memStore的大小达到一个阀值(默认128MB))才会刷写到 HFile,每次刷写都会形成一个新的 HFile。
  1. StoreFile
  • memStore内存中的数据写到文件后就是StoreFile,保存实际数据的物理文件,
  • StoreFile 以 HFile 的形式存储在 HDFS 上。每个 Store 会有一个或多个 StoreFile(HFile),
  • 数据在每个 StoreFile 中都是有序的。
  1. HFile

HBase中KeyValue数据的存储格式,HFile是Hadoop的 二进制格式文件,实际上StoreFile就是对Hfile做了轻量级包装,即StoreFile底层就是HFile

Store: 每个Region的每个列簇在底层存储为一个Hfile。

补充文章:
https://www.cnblogs.com/qingyunzong/p/8692430.html

2.3 HBase 的 写流程

请添加图片描述
请添加图片描述

client–>zk–>regionserver–>region–>追加到wal–>memstore–>ack–>flush

2.3.1 MemStore Flush 过程

2.4 HBase 的读流程

请添加图片描述

请添加图片描述

2.4.1 StoreFile Compaction

  • 由于memstore 每次刷写都会生成一个新的HFile, 且同一个字段的不同版本(timestamp)和不同类型(put/delete) 有可能会分布在不同的HFile中, 因此查询时需要遍历所有的HFile.
  • 为了减少HFile 的个数, 以及清理掉过期和删除的数据, 会进行StoreFile Compaction;

HFile 的compaction 分为两种, 分别是 Minor CompactiomnMajor Compaction,

  1. Minor Compaction (较小–> 较大, 不删除), 会将临近的若干个较小的HFile 合并成一个较大的HFile, 但不会清理过期和删除的数据;
  2. Major Compaction (所有–>大, 会删除)会将一个Store 下的所有的HFile 合并成一个大HFile, 并且会清理掉过期和删除的数据;

请添加图片描述

2.4.2 Region Split

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:27:52  更:2021-11-20 18:28:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:33:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码