2010-08-16 182 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