2016-11-29 47 views
-2

我對數據科學相當陌生,現在剛開始開發一個系統,需要我分析大數據(例如,每個數據庫中有5-6百萬條記錄)。如何使用Java框架處理大數據?

大圖:我有多個數據庫包含需要集成的各種數據。整合數據後,我還需要執行一些數據分析。最後,我需要將數據可視化到許多客戶端。

總體來說,我想知道什麼是處理大數據目前的技術/趨勢(即與Java框架)

+0

所以你基本上是問「怎麼辦大數據」?這是一個完整的研究領域,在我看來,對於SO來說太廣泛了。 – marstran

+0

任何嘗試呢?提示:搜索常見和常用的查詢,對其進行優化,認爲團體如何將這些數據創建索引(集成快速讀取數據)讓你的分析和顯示結果..... –

+0

http://stackoverflow.com/questions/ 7984740/java-handling-billions-bytes?rq = 1 –

回答

2

答案是:你的非功能性需求依賴。您的使用案例對於決定使用哪種技術至關重要。 讓我分享一下我的經驗,以便明確我的意思:

2012年,我需要每月處理200萬個非結構化記錄,並執行熵(信息論)算法和相似度〜每分鐘600個請求。 我們的場景由:

  • 記錄非結構化,但已經在JSON格式。
  • 熵和相似性算法基於數據庫的所有內容與待匹配的記錄(查看[香農熵公式] [1],並且您將瞭解我所談論的複雜性)
  • 更多他們100個不同的Web應用程序作爲此解決方案的客戶端。

鑑於這些要求(和許多其他的),並與執行的PoC後[卡桑德拉] [2],[Hadoop的] [3],[Voldmort] [4],[Neo4j的] [5],並且還應力,彈性,可擴展性和穩健性的測試中,我們抵達的那一刻(2012年)的最佳解決方案:

  • 的Java EE 7(激活了新的垃圾首先(G1)集電極)
    • JBoss AS 7([wildfly] [6])+ [Infinispan] [7]針對MapReduce競爭條件以及其他集羣的控制和分佈式緩存需求。
  • 的Servlet 3.0(因爲它是非阻塞I/O)
  • [Nginx的] [8](在此時間的β,但httpd2的不同,它已經在一個非阻塞的方式多個連接)
  • [MongoDB中] [9](由於原始內容以JSON文檔樣式已經被)
  • [阿帕奇亨利馬烏] [10]所有算法的實現,包括MapReduce的戰略
  • 其他的東西之一。

所以,一切都取決於您的要求。沒有銀彈。每種情況都需要進行架構分析。

我記得當時美國航空航天局正在使用Hadoop的AWS每小時處理約1TB,因爲[火星項目與好奇心] [11]。

在你的情況,我建議你要求關注的是,也許是Java框架這不是你所需要的(或者不是你需要的東西):

  • 如果你打算只是實施算法數據分析,統計學家和數據挖掘者(例如),可能[R編程語言] [12]將是最好的選擇。
  • 如果你需要一個非常快速的I/O(例如飛機的東西):像Go Lang [13],[C++] [14]等任何本機編譯語言。
  • 但是,如果你真的要創建一個實際上只是一個客戶端或提供大數據解決方案的Web應用程序,我會推薦像[nodeJS] [15]那樣更加柔和和可伸縮的東西,甚至是像JVM那樣的即時編譯技術([Scala] [16],[Jython] [17],Java)[dockerized] [18] [microservices] [19] ...

祝你好運! (對不起,堆棧溢出不允許我添加引用鏈接 - 但我在這裏提到的所有內容都可以很容易地被Google搜索到)。

+0

感謝這個 –