Amazon EMR 的预写日志(WAL)
在 Amazon EMR 6.15 及更高版本中,您可以将 Apache HBase 预写日志(WAL)写入 Amazon EMR WAL。对于较低的 Amazon EMR 发行版,当您使用 HBase on Amazon S3 选项创建集群时,WAL 是存储在集群本地磁盘中的唯一 Apache HBase 组件,您可以在 Amazon S3 上存储其他组件,例如根目录、存储文件(HFile)、表元数据和数据。
您可以使用 Amazon EMR WAL 恢复未刷新到 Amazon S3 的数据。要完全备份 HBase 集群,请选择使用 Amazon EMR WAL 服务。在后台,RegionServer 将 HBase 预写日志(WAL)写入 Amazon EMR 的 WAL。
如果您的集群或可用区运行状况不佳或不可用,您可以创建一个新集群,将其指向相同的 S3 根目录和 Amazon EMR WAL Workspace,在几分钟内自动恢复 WAL 中的数据。有关更多信息,请参阅 从 Amazon EMR WAL 还原。
从 Amazon EMR 版本 7.3.0 及更高版本开始,Amazon EMR 会为每个服务器创建多个 EMR WAL,将多个 HBase 区域分组到一个 Amazon EMR WAL 中。这样做可以增强 Apache HBase WAL,以提高日志利用率并优化成本。要配置每个 HBase RegionServer 的 Amazon EMR WAL 实例数量,请使用参数 hbase.wal.regiongrouping.numgroups。默认情况下,此参数设置为 2。有两个系统表未包含在任何 WALS 组中:meta 和 masterstore。这些表始终使用自己的单个 WAL。
如果您运行的版本低于 Amazon EMR 7.3.0,建议您手动禁用旧 HBase 集群中的表,以确保 Amazon EMR WAL 中的所有数据都刷新到 Amazon S3。然后,删除旧的 Amazon EMR WAL,终止旧集群,并设置一个运行最新版本的新集群。如果遇到问题,无法禁用旧集群上的表,可以直接终止旧群集,在新集群上将 emr.wal.multiplex.migrate 设置为 true。如果设置为 true,HBase 将尝试在 HBase 区域初始化期间重放旧 Amazon EMR WAL 实例中的数据,在重放后删除旧的 WAL。此重放过程会产生额外的读取费用。迁移后,建议您配置集群,并将 emr.wal.multiplex.migrate 设置为 false。或者,也可以删除该参数,以加快 HBase 区域的初始化。
注意
在 HBase 刷新数据后,Amazon EMR WAL 会将其删除。如果 HBase 不刷新数据,Amazon EMR WAL 最多将数据保留 30 天。30 天后,Amazon EMR WAL 会自动删除数据。自终止 EMR 集群后,Amazon EMR 会将 WAL 实例最多保留 30 天。但如果您在这 30 天内从同一 S3 根目录启动启用了 WAL 的新集群,则 Amazon EMR 不会从之前的集群中删除任何 WAL 实例。有关更多信息,请参阅 从 Amazon EMR WAL 还原。
以下部分介绍了如何设置 Amazon EMR WAL,并将其与启用了 HBase 的 EMR 集群结合使用。