设为首页 - 加入收藏 临汾站长网 (http://www.0357zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: vivo 2015 steam javascript
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

比较容易理解的Hbase架构全解,10分钟学会,建议收藏

发布时间:2019-11-12 11:08 所属栏目:[优化] 来源:IT技术管理那些事儿
导读:依然是Hadoop组件的讲解,今天说到HBase 架构,都是一字一句打出来的,希望各位转发加关注,会一直给大家写优质的内容。 物理上,Hbase 是由三种类型的 server 组成的的主从式(master-slave)架构: Region Server,负责处理数据的读写请求,客户端请求数据

依然是Hadoop组件的讲解,今天说到HBase 架构,都是一字一句打出来的,希望各位转发加关注,会一直给大家写优质的内容。

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

  • Region Server,负责处理数据的读写请求,客户端请求数据时直接和 Region Server 交互。
  • HBase Master,负责 Region 的分配,DDL(创建,删除 table)等操作。
  • Zookeeper,作为 HDFS 的一部分,负责维护集群状态。

当然底层的存储都是基于 Hadoop HDFS 的:

  • Hadoop DataNode 负责存储 Region Server 所管理的数据。所有的 HBase 数据都存储在 HDFS 文件中。Region Server 和 HDFS DataNode 往往是分布在一起的,这样 Region Server 就能够实现数据本地化(data locality,即将数据放在离需要者尽可能近的地方)。HBase 的数据在写的时候是本地的,但是当 region 被迁移的时候,数据就可能不再满足本地性了,直到完成 compaction,才能又恢复到本地。

Hadoop NameNode 维护了所有 HDFS 物理 data block 的元信息。

这可能是最容易理解的Hbase架构全解,10分钟学会,建议收藏

Regions

HBase 表(Table)根据 rowkey 的范围被水平拆分成若干个 region。每个 region 都包含了这个region 的 start key 和 end key 之间的所有行(row)。Regions 被分配给集群中的某些节点来管理,即 Region Server,由它们来负责处理数据的读写请求。每个 Region Server 大约可以管理 1000 个 regions。

这可能是最容易理解的Hbase架构全解,10分钟学会,建议收藏

HBase Master

也叫 HMaster,负责 Region 的分配,DDL(创建,删除表)等操作:

统筹协调所有 region server:

  • 启动时分配 regions,在故障恢复和负载均衡时重分配 regions
  • 监控集群中所有 Region Server 实例(从 Zookeeper 获取通知信息)

管理员功能:

  • 提供创建,删除和更新 HBase Table 的接口 
这可能是最容易理解的Hbase架构全解,10分钟学会,建议收藏

Zookeeper

HBase 使用 Zookeeper 做分布式管理服务,来维护集群中所有服务的状态。Zookeeper 维护了哪些 servers 是健康可用的,并且在 server 故障时做出通知。Zookeeper 使用一致性协议来保证分布式状态的一致性。注意这需要三台或者五台机器来做一致性协议。

这可能是最容易理解的Hbase架构全解,10分钟学会,建议收藏

这些组件是如何一起工作的

Zookeeper 用来协调分布式系统中集群状态信息的共享。Region Servers 和 在线 HMaster(active HMaster)和 Zookeeper 保持会话(session)。Zookeeper 通过心跳检测来维护所有临时节点(ephemeral nodes)。

这可能是最容易理解的Hbase架构全解,10分钟学会,建议收藏

每个 Region Server 都会创建一个 ephemeral 节点。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。

点评:这一段非常重要,涉及到分布式系统设计中的一些核心概念,包括集群状态、一致性等。可以看到 Zookeeper 是沟通一切的桥梁,所有的参与者都和 Zookeeper 保持心跳会话,并从 Zookeeper 获取它们需要的集群状态信息,来管理其它节点,转换角色,这也是分布式系统设计中很重要的思想,由专门的服务来维护分布式集群状态信息。

第一次读和写操作

有一个特殊的 HBase Catalog 表叫 Meta table(它其实是一张特殊的 HBase 表),包含了集群中所有 regions 的位置信息。Zookeeper 保存了这个 Meta table 的位置。

当 HBase 第一次读或者写操作到来时:

  • 客户端从 Zookeeper 那里获取是哪一台 Region Server 负责管理 Meta table。
  • 客户端会查询那台管理 Meta table 的 Region Server,进而获知是哪一台 Region Server 负责管理本次数据请求所需要的 rowkey。客户端会缓存这个信息,以及 Meta table 的位置信息本身。
  • 然后客户端回去访问那台 Region Server,获取数据。

对于以后的的读请求,客户端可以从缓存中直接获取 Meta table 的位置信息(在哪一台 Region Server 上),以及之前访问过的 rowkey 的位置信息(哪一台 Region Server 上),除非因为 Region 被迁移了导致缓存失效。这时客户端会重复上面的步骤,重新获取相关位置信息并更新缓存。

这可能是最容易理解的Hbase架构全解,10分钟学会,建议收藏

点评:客户端读写数据,实际上分了两步:第一步是定位,从 Meta table 获取 rowkey 属于哪个 Region Server 管理;第二步再去相应的 Region Server 读写数据。这里涉及到了两个 Region Server,要理解它们各自的角色功能。关于 Meta table 下面会详细介绍。

HBase Meta Table

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章