2017-08-16 111 views
0

我在應用程序中有一個場景;長時間運行ETL過程 - 後臺作業,Spark,Hadoop

  1. 必須加載多個來源的數據(超過10個)
  2. 晴來源是HTTP/JSON Web服務和一些FTP
  3. 必須處理這些數據,並把到一箇中央數據庫(PostgreSQL系統)

當前實現是在Ruby中使用後臺作業完成的。但我看到以下問題;

  1. 非常高的內存使用情況
  2. 喬布斯有時會卡住沒有任何錯誤報告
  3. 水平擴展是棘手的設置

不會在這種情況下,任何方式Spark或Hadoop的幫助或更好選項。

請詳細說明一下好的推理。

更新: 根據評論,我需要進一步闡述它。以下是我爲什麼認爲Spark或Hadoop的要點。

  1. 如果我們擴展運行作業的併發性,那也會增加數據庫服務器的負擔。我曾讀過,即使在數據庫方面,Spark和Hadoop也面臨如此沉重的負載。
  2. 我們不能運行更多的後臺進程,然後CPU的物理內核(由ruby和sidekiq社區推薦)
  3. Ruby中的併發實際上依賴於GIL,實際上並不支持實際的併發。因此,每個作業都可以獲取單箇中央數據源,如果該數據源陷入IO調用中,則源將被鎖定。

以上所有內容均被認爲是Hadoop內置體系結構的一部分& Spark。所以我在考慮採用這些工具。

+1

這是一個奇怪的問題。我在一個使用Ruby,Spark和Hadoop的地方工作,我可以告訴你他們在架構上不可以這樣互換。無論基於hadoop的解決方案是否總體上適合您的情況,您提到的問題都可以通過適當架構的Ruby系統來解決。提供更多關於它架構如何和人們可以幫助你的細節。 –

+0

@MarkThomas你基於應用場景的主要觀點來對待這個問題。讓我編輯這個問題來添加更多的想法。 –

+0

您可能需要使用resque-retry插件嘗試Resque。如果他們是小型工作,您可能還需要resque-multi-job-forks插件。 (如果真的需要,可以使用resque-kubernetes進行縮放) –

回答

0

在我看來,我會嘗試Pentaho Data Integrator(PDI)(或Talend)。

他們在那裏設計可視化工具來解決像你這樣的問題。並有一個免費的版本下載形式SourceForge(只需解壓並按下spoon.bat按鈕)。

他們可以從FTP和HTTP(等)中獲取數據,解碼JSON並編寫像Postgres這樣的數據庫。 PDI有一個免費插件,可以開箱即用地運行Ruby代碼,因此您可以節省啓動開發時間。

PDI還有現成的Spark和Hadoop接口,所以如果你需要更多的解決方案,你可以在後期透明地實現你的hadoop/sparkle服務器。

PDI是爲大量數據加載而構建的,可讓您控制併發和遠程服務器。