HMaster是主服务器的实现。主服务器负责监视集群中的所有 RegionServer 实例,并且是所有元数据更改的接口。在分布式群集中,Master 通常在 NameNode 上运行。 J Mohamed Zahoor 在博客中发表了关于 Master Architecture 的更多细节, HBase HMaster Architecture

70.1。启动行为

如果在多主机环境中运行,则所有主机竞争以运行集群。如果活跃的 Master 在 ZooKeeper 中丢失了它的租约(或者 Master 关闭了),那么剩下的 Masters 会争先恐后地接管 Master 角色。

70.2。运行时影响

一个常见的 dist-list 问题涉及当 Master 关闭时 HBase 集群会发生什么。由于 HBase 客户端直接与 RegionServers 通信,因此群集仍然可以在“稳定状态”下运行。此外,根据目录表hbase:meta作为 HBase 表存在,并且不驻留在主服务器中。但是,Master 控制关键功能,例如 RegionServer 故障转移和完成区域拆分。因此,虽然群集仍然可以在没有 Master 的情况下短时间运行,但 Master 应该尽快重启。

70.3。接口

HMasterInterface公开的方法主要是面向元数据的方法:

  • 表(createTable,modifyTable,removeTable,enable,disable)

  • ColumnFamily(addColumn,modifyColumn,removeColumn)

  • 区域(移动,分配,取消分配)例如,当调用Admin方法disableTable时,它由主服务器提供服务。

70.4。流程

Master 运行几个后台线程:

70.4.1。负载平衡器

定期地,当没有转换区域时,负载均衡器将运行并移动区域以平衡群集的负载。请参阅 Balancer 以配置此属性。

有关区域分配的更多信息,请参见 Region-RegionServer Assignment

70.4.2。 CatalogJanitor

定期检查并清理hbase:meta表。有关元表的更多信息,请参见 hbase:meta

70.5。 MasterProcWAL

HMaster 将管理操作及其运行状态(例如崩溃的服务器,表创建和其他 DDL 的处理)记录到其自己的 WAL 文件中。 WAL 存储在 MasterProcWALs 目录下。 Master WALs 与 RegionServer WALs 不同。保持 Master WAL 允许我们运行一个在 Master 故障中具有弹性的状态机。例如,如果 HMaster 正在创建表遇到问题并且失败,则下一个活动 HMaster 可以占用前一个停止的位置并执行操作。从 hbase-2.0.0 开始,引入了新的 AssignmentManager(AKA AMv2),HMaster 处理区域分配操作,服务器崩溃处理,平衡等,所有这些都通过 AMv2 持久化所有状态并转换为 MasterProcWAL 而不是流入 ZooKeeper,如我们在 hbase-1.x 中做。

如果您想了解有关新 AssignmentManager 的更多信息,请参阅 AMv2 描述 Devs (和程序框架(Pv2): HBASE-12439 )。

70.5.1。 MasterProcWAL 的配置

以下是影响 MasterProcWAL 操作的配置列表。您不必更改默认值。

hbase.procedure.store.wal.periodic.roll.msec

描述

生成新 WAL 的频率

默认

1h (3600000 in msec)

hbase.procedure.store.wal.roll.threshold

Description

WAL 滚动前的大小阈值。每次 WAL 达到此大小或上述时间段,1 小时后,自上次滚动后经过,HMaster 将生成一个新的 WAL。

Default

32MB (33554432 in byte)

hbase.procedure.store.wal.warn.threshold

Description

如果 WAL 的数量超过此阈值,则在滚动时,以下消息应出现在具有 WARN 级别的 HMaster 日志中。

procedure WALs count=xx above the warning threshold 64\. check running procedures to see if something is stuck. 

Default

64

hbase.procedure.store.wal.max.retries.before.roll

Description

将插槽(记录)同步到其底层存储(例如 HDFS)时的最大重试次数。每次尝试,以下消息都应出现在 HMaster 日志中。

unable to sync slots, retry=xx 

Default

3

hbase.procedure.store.wal.sync.failure.roll.max

Description

在上述 3 次重试之后,日志被滚动并且重试计数被重置为 0,其上开始一组新的重试。此配置控制同步失败时日志滚动的最大尝试次数。也就是说,HMaster 总共无法同步 9 次。一旦超过,HMaster 日志中就会出现以下日志。

Sync slots after log roll failed, abort. 

Default

3