内容提要
Amazon EMR是云大数据解决方案,适用于PB级数据处理、交互分析和机器学习。EMR HBase on S3模式推出了托管的WAL workspaces功能,实现数据恢复。测试结果表明,开启WAL功能的EMR HBase on S3集群可以从托管的WAL workspace恢复数据。建议对数据一致性要求高的用户升级到高版本EMR并开启此功能。
延伸解读
WAL 机制与数据恢复风险
HBase 的 Write Ahead Log(WAL)在每次写入前记录操作,用于灾难恢复。在 EMR HBase on S3 模式中,6.15 版本之前 WAL 日志存储在 HDFS 上,而 HFile 在 S3。若集群意外终止或 WAL 被误删,未 Flush 成 HFile 的数据将无法恢复,导致数据不一致。因此,依赖 HDFS 存储 WAL 存在单点风险,尤其对数据一致性要求高的场景。
托管 WAL workspaces 的改进
EMR 6.15 版本后推出托管的 WAL workspaces 功能,允许将 WAL 日志存储到托管的工作区。这样,即使集群意外终止,用户也可以重新创建集群并恢复完整数据。测试中,开启 WAL 功能的集群在模拟故障后,恢复的数据条目数与写入总数完全一致,验证了该功能的有效性。
测试对比与数据一致性
测试使用 YCSB 向 EMR HBase on S3 写入数据,10 分钟后终止集群。关闭 WAL 功能时,写入 9,745,276 条,恢复后仅 7,964,355 条,丢失约 178 万条未 Flush 数据;开启 WAL 功能时,写入 1,030,182 条,恢复后条目数一致。这表明托管 WAL 能确保数据不丢失,尤其适合对一致性要求高的业务。
升级与配置建议
对于数据一致性要求高的用户,建议升级到 EMR 6.15 及以上版本,并开启托管 WAL workspaces 功能。开启前需确保 EMR_EC2_DefaultRole 具有必要的 emrwal 权限,并在创建集群时配置 hbase.emr.wal.enabled 为 true 及指定 emr.wal.workspace。恢复时需参考官方文档进行配置,以保障数据完整恢复。
Q&A
Amazon EMR HBase 的 WAL 功能是什么?
WAL(Write Ahead Log)是 HBase 的一种日志机制,用于高并发、持久化的日志保存与回放,主要用于灾难恢复。
EMR HBase on S3 模式在 EMR 6.15 版本之前的数据恢复有什么风险?
在 EMR 6.15 版本之前,WAL 日志存储在 HDFS 上,若用户误删除或集群意外终止,未及时 Flush 成 HFile 的数据无法恢复。
开启 WAL 功能后,数据恢复的效果如何?
开启 WAL 功能后,数据恢复一致,完整保留 WAL 日志,确保数据在集群意外终止时可以完全恢复。
为什么建议对数据一致性要求高的用户升级到高版本 EMR?
建议升级到高版本 EMR 并开启 WAL 功能,以确保在集群意外终止时数据可以从托管的 WAL workspace 完全恢复,保持数据一致性。
EMR HBase on S3 模式的优势是什么?
EMR HBase on S3 模式通过将计算与存储分离,利用 Amazon S3 作为数据存储,提供更高的灵活性和可扩展性。
如何测试 EMR HBase 的 WAL 功能?
可以通过创建 EMR 集群,分别开启和关闭 WAL 功能,使用 YCSB 向 HBase 写入数据,然后模拟集群意外终止,比较恢复后的数据一致性。