大數據革命正以Apache Hadoop為中心如火如荼的進行著。自從開源分布式數據處理平臺在5年前發(fā)布時討論之聲就不絕于耳。在過去的一年中,Hadoop贏得了客戶的認可,并得到眾多商業(yè)化的支持以及眾多數據庫和數據集成軟件商的整合。
Hadoop可以管理結構化數據,以及諸如服務器日志文件和Web點擊流的數據。同時還可以管理以非結構化文本為中心的數據,如Facebook和Twitter。這種處理多類型數據的能力非常重要。它催生了NoSQL平臺和產品。如Cassandra, CouchDB, MongoDB以及Oracle最新的NoSQL數據庫。
而傳統(tǒng)關系型數據庫如Oracle,IBM DB2,Microsoft SQL Server和MySQL則都不能處理混合數據類型和非結構化數據。由于事務處理靈活性的需求,Hadoop獲得大多數數據分析廠商的關注和支持。展望未來,在未來的3到5年,大數據已經成為私人和公共組織的戰(zhàn)略關鍵。事實上,在未來5年預計有50%的大數據項目會在Hadoop框架下運行。
Hadoop主要組件包含:
Hadoop:Java編寫的軟件框架,以支持數據密集型分布式應用
ZooKeeper:高可靠性分布式協調系統(tǒng)
MapReduce:針對大數據的靈活的并行數據處理框架
HDFS:Hadoop分布式文件系統(tǒng)
Oozie:負責MapReduce作業(yè)調度
HBase:Key-value數據庫
Hive:構建在MapRudece之上的數據倉庫軟件包
Pig:Pig是架構在Hadoop之上的高級數據處理層。Pig Latin語言為編程人員提供了更直觀的定制數據流的方法。
Sqoop和Flume:可改進數據的互操作性和其余部分。Sqoop功能主要是從關系數據庫導入數據到Hadoop,并可直接導入到HFDS或Hive。而Flume設計旨在直接將流數據或日志數據導入HDFS。
Mahout:Mahout提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應用程序。Mahout包含許多實現,包括集群、分類、推薦過濾、頻繁子項挖掘。
Ambari:Ambari是最新加入Hadoop的項目, Ambari可幫助系統(tǒng)管理員部署和配置Hadoop,升級集群以及監(jiān)控服務。還可通過API集成與其他的系統(tǒng)管理工具。
MapReduce
MapReduce作為Hadoop的核心是一種處理大型及超大型數據集(TB級別的數據。包括網絡點擊產生的流數據、日志文件、社交網絡等所帶來的數據)并生成相關的執(zhí)行的編程模型。其主要思想是從函數式編程語言借鑒而來的,同時也包含了從矢量編程語言借鑒的特性。
Google在2004年創(chuàng)造了MapReduce,而從MapReduce到Hadoop這其中經歷了一個有趣的轉變。MapReduce最初是幫助搜索引擎公司應對萬維網所帶來的創(chuàng)建索引時產生的大量數據。Google最初也招募了一些硅谷的精英,并雇用了大批的工程師來完善MapReduce。并快速將技術應用在相關的行業(yè)之中,如金融、零售等。Goolge曾拿出MapReduce的部分相關信息與Nutch團隊分享,以開發(fā)開源版本“Hadoop”。但Yahoo則將Nutch收入到旗下。Yahoo在2007年將其發(fā)展成Hadoop開源項目。Hadoop現在越來越多的用于大數據的大規(guī)模并行數據處理引擎。
MapReduce系統(tǒng)獲得成功的原因之一是它為編寫需要大規(guī)模并行處理的代碼提供了簡單的編程模式。它受到了Lisp的函數編程特性和其他函數式語言的啟發(fā)。MapReduce和云計算非常相配。MapReduce的關鍵特點是它能夠對開發(fā)人員隱藏操作并行語義 — 并行編程的具體工作方式。