13款開源Java大數據工具,從理論到實踐的剖析

大數據幾乎已成爲全部商業領域共有的最新趨勢,然而大數據到底是什麼?是噱頭、泡沫,又或是真如傳言同樣的重要。程序員

事實上,大數據是個很是簡單的術語——就像它所說的同樣,是很是大的數據集。那麼究竟有大多?真實的答案就是「如你所想的那麼大」!web

那麼爲何會產生如此之大的數據集?由於當今的數據已經無所不在而且存在着巨大的回報:收集通訊數據的RFID傳感器,收集天氣信息的傳感器,移動設備給社交網站發送的GPRS數據包,圖片視頻,在線購物產生的交易記錄,應有盡有!大數據是一個巨大的數據集,包含了任何數據源產生的信息,固然前提是這些信息是咱們感興趣的。數據庫

然而大數據的含義毫不只與體積相關,由於大數據還能夠用於尋找新的真知、造成新的數據和內容;咱們可使用從大數據中提取的真知、數據和內容去使商業更加靈活,以及回答那些以前被認爲遠超當前範疇的問題。這也是大數據被從如下4個方面定義的緣由:Volume(體積)、Variety(多樣)、Velocity(效率)以及Veracity(Value,價值),也就是大數據的4V。下面將簡述每一個特性以及所面臨的挑戰:編程

1. Volume緩存

Volume說的是一個業務必須捕獲、存儲及訪問的數據量,僅僅在過去兩年內就生產了世界上全部數據的90%。現今的機構已徹底被數據的體積所淹沒,輕易的就會產生TB甚至是PB級不一樣類型的數據,而且其中有些數據須要被組織、防禦(竊取)以及分析。服務器

2. Variety網絡

世界上產生的數據有80%都是半結構化的,傳感器、智能設備和社交媒體都是經過Web頁面、網絡日誌文件、社交媒體論壇、音頻、視頻、點擊流、電子郵件、文檔、傳感系統等生成這些數據。傳統的分析方案每每只適合結構化數據,舉個例子:存儲在關係型數據庫中的數據就有完整的結構模型。數據類型的多樣化一樣意味着爲支持當下的決策制定及真知處理,咱們須要在數據儲存和分析上面進行根本的改變。Variety表明了在傳統關係數據庫中沒法輕易捕獲和管理的數據類型,使用大數據技術卻能夠輕鬆的儲存和分析。app

3. Velocity框架

Velocity則須要對數據進行近實時的分析,亦稱「sometimes 2 minutes is too late!」。獲取競爭優點意味着你須要在幾分鐘,甚至是幾秒內識別一個新的趨勢或機遇,一樣還須要儘量的快於你競爭對手。另一個例子是時間敏感性數據的處理,好比說捕捉罪犯,在這裏數據必須被收集後就完成被分析,這樣才能獲取最大價值。對時間敏感的數據保質期每每都很短,這就需求組織或機構使用近實時的方式對其分析。機器學習

4. Veracity

經過分析數據咱們得出如何的抓住機遇及收穫價值,數據的重要性就在於對決策的支持;當你着眼於一個可能會對你企業產生重要影響的決策,你但願得到儘量多的信息與用例相關。單單數據的體積並不能決定其是否對決策產生幫助,數據的真實性和質量纔是得到真知和思路最重要的因素,所以這纔是制定成功決策最堅實的基礎。

然而當下現有的商業智能和數據倉庫技術並不徹底支持4V理論,大數據解決方案的開發正是針對這些挑戰。

下面將介紹大數據領域支持Java的主流開源工具:

 

1. HDFS

HDFS是Hadoop應用程序中主要的分佈式儲存系統, HDFS集羣包含了一個NameNode(主節點),這個節點負責管理全部文件系統的元數據及存儲了真實數據的DataNode(數據節點,能夠有不少)。HDFS針對海量數據所設計,因此相比傳統文件系統在大批量小文件上的優化,HDFS優化的則是對小批量大型文件的訪問和存儲。

 

2. MapReduce

Hadoop MapReduce是一個軟件框架,用以輕鬆編寫處理海量(TB級)數據的並行應用程序,以可靠和容錯的方式鏈接大型集羣中上萬個節點(商用硬件)。

 

3. HBase

Apache HBase是Hadoop數據庫,一個分佈式、可擴展的大數據存儲。它提供了大數據集上隨機和實時的讀/寫訪問,並針對了商用服務器集羣上的大型表格作出優化——上百億行,上千萬列。其核心是Google Bigtable論文的開源實現,分佈式列式存儲。就像Bigtable利用GFS(Google File System)提供的分佈式數據存儲同樣,它是Apache Hadoop在HDFS基礎上提供的一個類Bigatable。

 

4. Cassandra

Apache Cassandra是一個高性能、可線性擴展、高有效性數據庫,能夠運行在商用硬件或雲基礎設施上打造完美的任務關鍵性數據平臺。在橫跨數據中心的複製中,Cassandra同類最佳,爲用戶提供更低的延時以及更可靠的災難備份。經過log-structured update、反規範化和物化視圖的強支持以及強大的內置緩存,Cassandra的數據模型提供了方便的二級索引(column indexe)。

 

5. Hive

Apache Hive是Hadoop的一個數據倉庫系統,促進了數據的綜述(將結構化的數據文件映射爲一張數據庫表)、即席查詢以及存儲在Hadoop兼容系統中的大型數據集分析。Hive提供完整的SQL查詢功能——HiveQL語言,同時當使用這個語言表達一個邏輯變得低效和繁瑣時,HiveQL還容許傳統的Map/Reduce程序員使用本身定製的Mapper和Reducer。

 

6. Pig

Apache Pig是一個用於大型數據集分析的平臺,它包含了一個用於數據分析應用的高級語言以及評估這些應用的基礎設施。Pig應用的閃光特性在於它們的結構經得起大量的並行,也就是說讓它們支撐起很是大的數據集。Pig的基礎設施層包含了產生Map-Reduce任務的編譯器。Pig的語言層當前包含了一個原生語言——Pig Latin,開發的初衷是易於編程和保證可擴展性。

 

7. Chukwa

Apache Chukwa是個開源的數據收集系統,用以監視大型分佈系統。創建於HDFS和Map/Reduce框架之上,繼承了Hadoop的可擴展性和穩定性。Chukwa一樣包含了一個靈活和強大的工具包,用以顯示、監視和分析結果,以保證數據的使用達到最佳效果。

 

8. Ambari

Apache Ambari是一個基於web的工具,用於配置、管理和監視Apache Hadoop集羣,支持Hadoop HDFS,、Hadoop MapReduce、Hive、HCatalog,、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari一樣還提供了集羣情況儀表盤,好比heatmaps和查看MapReduce、Pig、Hive應用程序的能力,以友好的用戶界面對它們的性能特性進行診斷。

 

9. ZooKeeper

Apache ZooKeeper是一個針對大型分佈式系統的可靠協調系統,提供的功能包括:配置維護、命名服務、分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

 

10. Sqoop

Sqoop是一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具,能夠將一個關係型數據庫中數據導入Hadoop的HDFS中,也能夠將HDFS中數據導入關係型數據庫中。

 

11. Oozie

Apache Oozie是一個可擴展、可靠及可擴充的工做流調度系統,用以管理Hadoop做業。Oozie Workflow做業是活動的Directed Acyclical Graphs(DAGs)。Oozie Coordinator做業是由週期性的Oozie Workflow做業觸發,週期通常決定於時間(頻率)和數據可用性。Oozie與餘下的Hadoop堆棧結合使用,開箱即用的支持多種類型Hadoop做業(好比:Java map-reduce、Streaming map-reduce、Pig、 Hive、Sqoop和Distcp)以及其它系統做業(好比Java程序和Shell腳本)。

 

12. Mahout

Apache Mahout是個可擴展的機器學習和數據挖掘庫,當前Mahout支持主要的4個用例:

推薦挖掘:蒐集用戶動做並以此給用戶推薦可能喜歡的事物。
彙集:收集文件並進行相關文件分組。
分類:從現有的分類文檔中學習,尋找文檔中的類似特徵,併爲無標籤的文檔進行正確的歸類。
頻繁項集挖掘:將一組項分組,並識別哪些個別項會常常一塊兒出現。


13. HCatalog

Apache HCatalog是Hadoop創建數據的映射表和存儲管理服務,它包括:

提供一個共享模式和數據類型機制。提供一個抽象表,這樣用戶就不須要關注數據存儲的方式和地址。爲相似Pig、MapReduce及Hive這些數據處理工具提供互操做性。

相關文章
相關標籤/搜索