大數據幾乎已成為所有商業領域共有的最新趨勢,然而大數據究竟是什麼?是噱頭、泡沫,又或是真如傳言一樣的重要。
事實上,大數據是個非常簡單的術語——就像它所說的一樣,是非常大的數據集。那麼究竟有大多?真實的答案就是“如你所想的那麼大”!
那麼為什麼會產生如此之大的數據集?因為當今的數據已經無所不在並且存在著巨大的回報:收集通信數據的RFID傳感器,收集天氣信息的傳感器,移動 設備給社交網站發送的GPRS數據包,圖片視頻,在線購物產生的交易記錄,應有盡有!大數據是一個巨大的數據集,包含了任何數據源產生的信息,當然前提是 這些信息是我們感興趣的。
然而大數據的含義絕不只與體積相關,因為大數據還可以用於尋找新的真知、形成新的數據和內容;我們可以使用從大數據中提取的真知、數據和內容去使商業更加靈活,以及回答那些之前被認為遠超當前范疇的問題。這也是大數據被從以下4個方面定義的原因:Volume(體積)、Variety(多樣)、Velocity(效率)以及Veracity(Value,價值),也就是大數據的4V。下面將簡述每個特性以及所面臨的挑戰:
1. Volume
Volume說的是一個業務必須捕獲、存儲及訪問的數據量,僅僅在過去兩年內就生產了世界上所有數據的90%。現今的機構已完全被數據的體積所淹沒,輕易的就會產生TB甚至是PB級不同類型的數據,並且其中有些數據需要被組織、防護(竊取)以及分析。
2. Variety
世界上產生的數據有80%都是半結構化的,傳感器、智能設備和社交媒體都是通過Web頁面、網絡日志文件、社交媒體論壇、音頻、視頻、點擊流、電子 郵件、文檔、傳感系統等生成這些數據。傳統的分析方案往往只適合結構化數據,舉個例子:存儲在關系型數據庫中的數據就有完整的結構模型。數據類型的多樣化 同樣意味著為支持當下的決策制定及真知處理,我們需要在數據儲存和分析上面進行根本的改變。Variety代表了在傳統關系數據庫中無法輕易捕獲和管理的 數據類型,使用大數據技術卻可以輕松的儲存和分析。
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建立數據的映射表和存儲管理服務,它包括: