Amazon EMR 的预写日志(WAL) - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon EMR 的预写日志(WAL)

使用亚马逊 EMR 6.15 及更高版本,你可以将 Apache HBase 预写日志 (WAL) 写入亚马逊 EMR WAL。在 Amazon EMR 版本较低的情况下,当您使用 “on Amaz HBase on S3” 选项创建集群时,WAL 是集群中唯一存储在本地磁盘中的 Apache 组 HBase 件,您可以在 Amazon S3 上存储其他组件,例如根目录、存储文件 (HFiles)、表元数据和数据。

您可以使用 Amazon EMR WAL 恢复未刷新到 Amazon S3 的数据。要完全备份您的 HBase 集群,请选择使用 Amazon EMR WAL 服务。在幕后,RegionServer将你的 HBase 预写日志 (WAL) 写入 Amazon EMR 的 WAL。

如果您的集群或可用区运行状况不佳或不可用,您可以创建一个新集群,将其指向相同的 S3 根目录和 Amazon EMR WAL Workspace,在几分钟内自动恢复 WAL 中的数据。有关更多信息,请参阅 从 Amazon EMR WAL 还原

从亚马逊 EMR 7.3.0 及更高版本开始,亚马逊 EMR 为每台服务器创建多个 EMR,并将多个区域 HBase 分组为一个 Amazon WALs EMR WAL。这样做可以增强 Apache HBase WAL,从而提高日志利用率并优化成本。要配置每个 Amazon EMR WAL 实例的数量 HBase RegionServer,请使用参数。hbase.wal.regiongrouping.numgroups默认情况下,此参数设置为 2。

如果您运行的版本低于 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 实例的数据,并在重播 WALs 后删除旧的 Amazon EMR WAL 实例。此重放过程会产生额外的读取费用。迁移后,建议您配置集群,并将 emr.wal.multiplex.migrate 设置为 false。或者,您可以删除该参数以加快 HBase 区域初始化的速度。

注意

Amazon EMR WAL 在 HBase 刷新数据后将其删除。如果 HBase 没有刷新数据,Amazon EMR WAL 将数据最多保留 30 天。30 天后,Amazon EMR WAL 会自动删除数据。自终止 EMR 集群后,Amazon EMR 会将 WAL 实例最多保留 30 天。但如果您在这 30 天内从同一 S3 根目录启动启用了 WAL 的新集群,则 Amazon EMR 不会从之前的集群中删除任何 WAL 实例。有关更多信息,请参阅 从 Amazon EMR WAL 还原

以下各节介绍如何在 HBase已启用的 EMR 集群中设置和使用 Amazon EMR WAL。