区域的每个区域分配或取消分配现在都是一个过程。移动(区域)程序是程序的复合;它是运行 Unassign Procedure 然后是 Assign Procedure。移动过程产生系列中的分配和取消分配,然后等待它们的完成。
等等。 ServerCrashProcedure 生成 WAL 拆分任务,然后将作为子过程托管在崩溃服务器上的所有区域重新分配。
AMv2 过程由 Master 在 ProcedureExecutor 实例中运行。所有程序都使用 Pv2 框架提供的实用程序。
例如,Procedures 将每个状态转换持久保存到框架的 Procedure Store。默认实现是在 HDFS 上保留的 WAL。在崩溃时,我们重新打开 Store 并重新运行 Procedure 过程的所有 WAL,以使 Assignment State Machine 恢复到崩溃前的状态。然后我们继续执行程序。
在新系统中,Master 是所有事物分配的权威。以前我们很暧昧;例如 RegionServer 负责拆分业务。 Master 保留 Region 状态和服务器的内存映像。如果分歧,师父总是占上风;在极端情况下,它会杀死存在分歧的 RegionServer。
新的 RegionStateStore 类负责将终端 Region 状态(无论是 OPEN 还是 CLOSED)发布到 hbase:meta _ 表 _ .
RegionServers 现在在 Connection 上报告其运行版本。此版本在 AM 中可用,用于运行迁移滚动重新启动。