Spring-Batch用于大规模的夜间/小时Hive / MySQL数据处理

时间:2010-08-16 16:18:23

标签: mysql hadoop etl hive spring-batch

我正在考虑更换一堆Python ETL脚本,这些脚本执行每晚/每小时的数据汇总和大量数据的统计数据收集。

我想要实现的是

  • 健壮性 - 应该自动重启失败的作业/步骤。在某些情况下,我想改为执行恢复步骤。
  • 框架必须能够从崩溃中恢复。我想这里需要一些持久性。
  • 监控 - 我需要能够监控工作/步骤的进度,并最好查看有关绩效的历史和统计数据。
  • 可追溯性 - 我必须能够理解执行的状态
  • 手动干预 - 很高兴能够从API / UI /命令行启动/停止/暂停作业。
  • 简单 - 当我介绍替代品时,我不希望自己的同事生气。有一个简单易懂的API是必需的。

当前脚本执行以下操作:

  • 从许多计算机收集文本日志,并将其推送到Hadoop DFS。我们将来可能会将Flume用于此步骤(请参阅http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/)。
  • 对数据执行Hive摘要查询,并插入(覆盖)到新的Hive表/分区。
  • 将新摘要数据提取到文件中,然后加载(合并)到MySql表中。这是以后在线报告所需的数据。
  • 对新添加的MySql数据(来自MySql表)执行其他连接,并更新数据。

我的想法是用spring-batch替换脚本。我也研究了Scriptella,但我认为这种情况太简单了。

因为我在Spring-Batch上看到了一些不好的共鸣(大多是老帖子),我希望在这里得到一些输入。我也没有太多关于spring-batch和Hive集成的看法,这很麻烦。

3 个答案:

答案 0 :(得分:3)

如果您想留在Hadoop生态系统中,我强烈建议您查看Oozie以自动化您的工作流程。我们(Cloudera)提供了一个packaged version of Oozie,您可以使用它来开始。有关详细信息,请参阅我们最近的blog post

答案 1 :(得分:1)

为什么不使用JasperETLTalend?看起来像是工作的正确工具。

答案 2 :(得分:1)

我使用Cascading相当多,发现它非常令人印象深刻:

Cascading

它是一个M / R抽象层,在Hadoop上运行。