2010-08-16 184 views
7

我正在寻找替换一堆执行夜间/小时数据汇总和大量数据统计收集的Python ETL脚本。Spring-Batch每小时一次的Hive/MySQL数据处理

我想达成什么是

  • 鲁棒性 - 一个失败的作业/步应自动重新启动。在某些情况下,我想执行恢复步骤。
  • 框架必须能够从崩溃中恢复。我想这里需要一些持久性。
  • 监控 - 我需要能够监控作业/步骤的进度,并且最好查看关于性能的历史和统计数据。
  • 可追溯性 - 我必须能够理解执行的状态
  • 手动干预 - 很高兴能...能够从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的整合​​,这很麻烦。

+0

这些剧本出生于罪恶之中。我知道,我写了他们:) – Yossale 2010-09-23 14:29:24

+0

为你的遗留@yossale打个招呼 – 2010-09-23 18:19:55

+0

只要我不是那个必须修复它的人.. :) – Yossale 2010-09-24 14:36:14

回答

3

如果您希望保留在Hadoop生态系统中,我强烈建议您检查Oozie以使您的工作流程自动化。我们(Cloudera)提供了一个packaged version of Oozie,您可以使用它来开始。请参阅我们最近的blog post了解更多详情。

+0

谢谢杰夫。 Oozie与Hive和MySql集成吗? – 2010-10-04 13:43:09

+1

是的。在与CDH打包的Oozie版本中有Hive和Sqoop操作。 Sqoop将允许您使用MySQL执行导入和导出。要对存储在MySQL中的数据运行查询,可以使用Java操作(http://yahoo.github.com/oozie/releases/2.2.0/WorkflowFunctionalSpec.html#a3.2.7_Java_Action)和JDBC驱动程序来提交查询。 – 2010-10-05 09:24:02

+0

再次10X,我会考虑它 – 2010-10-05 12:19:14

1

为什么不使用JasperETLTalend?似乎是正确的工具。

+0

这些工具是有效的,但我正在研究更多的程序化解。我们之前实际上使用过Talend,并遇到了一些规模问题。另一个问题是,开发人员不太喜欢图形工具 - 图标隐藏了太多的复杂性,对大多数开发人员来说,了解ETL流程已被证明是一项巨大的努力。 – 2010-09-28 13:40:03

1

我用层叠相当多,发现它是相当令人印象深刻:

Cascading

这是一个M/R抽象层,并运行在Hadoop。

+0

感谢参考@sethcall。我们最终使用比Oozie更灵活的弹簧批次。 – 2012-04-22 10:25:03

+1

两个垒球问题:你觉得学习曲线可以接受吗?你使用它有什么成效吗? (我问,因为级联+ hadoop,对于新手来说,没有经过认真考虑就没有什么可跳跃的,这是坚实的技术,很好地解决了一个非常复杂的问题,但带着一些包袱) – sethcall 2012-04-22 18:38:29

+0

我一直在使用Spring很长一段时间,所以学习曲线不成问题。我们更关心Spring与现有系统和代码库的集成,Spring很容易解决这个问题。我真的很感激这个参考。我甚至不知道它:) – 2012-04-23 18:38:10