我有一个要求,我需要每天将生产HAWQ数据库刷新为QA环境。
如何从生产中将每天的三角洲转移到QA群集中。
感谢您的帮助
谢谢Veeru
无耻的自发插头 - 请查看以下开放式PR,用于使用Apache Falcon来协调博士批处理博士的工作,看看它是否适合您的需求。
https://github.com/apache/cubator-hawq/pull/940
这是该过程的概要:
- 运行
hawqsync-extract
以捕获已知的Good HDFS文件尺寸(如果同步期间故障,则防止HDFS/目录不一致( - 运行ETL批处理(如果有(
- 运行
hawqsync-falcon
,执行以下步骤:- 停止HAWQ大师(来源和目标(
- 存档源
MASTER_DATA_DIRECTORY
(MDD(TARBALL至HDFS - 重新启动源hawq master
- 启用HDFS安全模式和强制源检查点
- 禁用源和远程HDFS安全模式
- 执行基于Apache Falcon的DistCP Sync Process
- 启用HDFS安全模式并强制远程检查点
还有一个带有设计描述的JIRA:
https://issues.apache.org/jira/browse/hawq-1078
没有内置工具可以执行此操作,因此您必须编写一些代码。写作不太困难,因为HAWQ不支持更新或删除。您只需要将新数据附加到QA。
- 为将数据放入HDFS中的每个表中创建可写的外部表。您将使用PXF格式写入数据。
- 为读取此数据的每个表中的QA创建可读的外部表。
- 第1天,您将所有内容都写给HDF,然后阅读HDFS的所有内容。
- 第2天,您可以从QA找到最大(ID(。从表中删除HDF的文件。插入可写的外部表中,但要过滤查询,因此您只能从QA中获得大于最大(ID(的记录。最后,通过从外部表中选择所有数据。