2011-01-26 70 views
13

我們希望在我們的系統上實現Hadoop以提高其性能。Hadoop和MySQL集成

該過程如下所示: Hadoop將從MySQL數據庫收集數據,然後對其進行處理。 輸出將被導出回MySQL數據庫。

這是一個很好的實現嗎?這會提高我們系統的整體性能嗎? 有什麼要求,這之前已經完成?一個好的教程真的有幫助。

感謝

回答

1

Altough它不是一個普通的Hadoop的使用。在以下情況下它是有意義的:
a)如果您有很好的方法將數據分區到輸入(如現有分區)。
b)每個分區的處理比較重。我會給每個分區至少10秒的CPU時間。
如果兩個條件都滿足 - 您將能夠應用任何所需的CPU功率量來進行數據處理。
如果你正在做簡單的掃描或聚合 - 我認爲你不會獲得任何東西。另一方面 - 如果你要在每個分區上運行一些CPU密集型算法 - 那麼你的收益的確會很大。
我還會提到一個單獨的案例 - 如果您的處理需要大量的數據排序。我認爲MySQL不會對數十億條記錄進行排序。 Hadoop將做到這一點。

+0

這是一個常規的Hadoop用法。請參閱Lamda體系結構。使用MySQL作爲速度層是規範性的(儘管也使用其他工具)。如果這不是規範性的,SQOOP就不存在。 – nick 2014-02-21 22:01:00

2

Hadoop是用於基於批處理作業大多在這個意義上,即使最短的工作是在幾分鐘內大小的順序大型半結構化數據..批。你面臨什麼樣的性能問題?它是基於數據轉換還是報告。取決於這種架構可能會有所幫助或使事情變得更糟。

0

我同意賽。我只在需要時才使用Hadoop和MySql。我將表格導出爲CSV並將其上傳到HDFS以更快地處理數據。如果你想保存你處理過的數據,你將不得不編寫一個單reducer作業,它會做一些批處理插入來提高插入的性能。
但是這真的取決於你想要做什麼樣的事情。

+1

我相信將其導出到csv文件,然後將其加載到mysql將比從hadoop直接批量插入輸出數據庫更快。後者將是一個jdbc調用,這是比較緩慢的文件加載。 – 2011-02-24 07:59:20

2

正如Joe提到的,Sqoop是Hadoop生態系統的一個很好的工具,用於將數據導入和導出到SQL數據庫(如MySQl)。

如果您需要更復雜的MySQL集成,包括例如過濾或轉換,那麼您應該使用集成框架或集成套件來解決此問題。查看我的演示文稿「Big Data beyond Hadoop - How to integrate ALL your data」,瞭解有關如何使用Hadoop開源集成框架和集成套件的更多信息。