一說到開源大數(shù)據(jù)處理平臺,就不得不說此領(lǐng)域的開山鼻祖Hadoop,它是GFS和MapReduce的開源實現(xiàn)。雖然在此之前有很多類似的分布式存儲和計算平臺,但真正能實現(xiàn)工業(yè)級應(yīng)用、降低使用門檻、帶動業(yè)界大規(guī)模部署的就是Hadoop。得益于MapReduce框架的易用性和容錯性,以及同時包含存儲系統(tǒng)和計算系統(tǒng),使得Hadoop成為大數(shù)據(jù)處理平臺的基石之一。Hadoop能夠滿足大部分的離線存儲和離線計算需求,且性能表現(xiàn)不俗;小部分離線存儲和計算需求,在對性能要求不高的情況下,也可以使用Hadoop實現(xiàn)。因此,在搭建大數(shù)據(jù)處理平臺的初期,Hadoop能滿足90%以上的離線存儲和離線計算需求,成為了各大公司初期平臺的首選。
一共81個,開源大數(shù)據(jù)處理工具匯總(下),包括日志收集系統(tǒng)/集群管理/RPC等
隨著Hadoop集群越來越大,單點的namenode漸漸成為了問題:第一個問題是單機內(nèi)存有限,承載不了越來越多的文件數(shù)目;第二個問題是單點故障,嚴重影響集群的高可用性。因此業(yè)界出現(xiàn)了幾種分布式namenode的方案,用以解決單點問題。此外,為了實現(xiàn)多種計算框架可以運行在同一個集群中,充分復(fù)用機器資源,Hadoop引進了YARN。YARN是一個通用資源管理器,負責資源調(diào)度和資源隔離。它試圖成為各個計算框架的統(tǒng)一資源管理中心,使得同一個集群可以同時跑MapReduce、storm、Tez等實例。
Hadoop解決了大數(shù)據(jù)平臺的有無問題,隨著業(yè)務(wù)和需求的精細化發(fā)展,在一些細分領(lǐng)域人們對大數(shù)據(jù)平臺提出了更高的期望和要求,因此誕生了一批在不同領(lǐng)域下的更高效更有針對性的平臺。首先基于對Hadoop框架自身的改良,出現(xiàn)了haloop和dryad等變種平臺,不過這些平臺后來基本上都沒有被大規(guī)模部署,其原因要么是改良效果不明顯,要么是被跳出Hadoop框架重新設(shè)計的新平臺所取代了。
為了解決在hadoop平臺上更好地進行海量網(wǎng)頁分析,進而實現(xiàn)通用的分布式NoSQL數(shù)據(jù)庫的問題,HBase誕生了。Hadoop參照了Google的GFS和MapReduce的設(shè)計。而Google的BigTable在Hadoop的生態(tài)圈里對應(yīng)的則是HBase。HBase豐富了Hadoop的存儲方式,在hdfs的文件式存儲的基礎(chǔ)上,提供了表格式存儲,使得可以將網(wǎng)頁的眾多屬性提取出來按字段存放,提升網(wǎng)頁查詢分析的效率。同時,HBase也廣泛被用作通用的NoSQL存儲系統(tǒng),它是基于列存儲的非關(guān)系型數(shù)據(jù)庫,彌補了hdfs在隨機讀寫方面的不足,提供低延時的數(shù)據(jù)訪問能力。但HBase本身沒有提供腳本語言式(如SQL)的數(shù)據(jù)訪問方式,為了克服數(shù)據(jù)訪問的不便捷問題,最開始用于Hadoop的PIG語言開始支持HBase。PIG是一種操作Hadoop和Hbase的輕量級腳本語言,不想編寫MapReduce作業(yè)的人員可以用PIG方便地訪問數(shù)據(jù)。
跟HBase類似的另一個較為有名的系統(tǒng)是C++編寫的Hypertable,也是BigTable的開源實現(xiàn),不過由于后來維護的人員越來越少,以及Hadoop生態(tài)系統(tǒng)越來越活躍,漸漸地Hypertable被人們遺忘了。還有一個不得不提的系統(tǒng)是Cassandra,它最初由Facebook開發(fā),也是一個分布式的NoSQL數(shù)據(jù)庫。但與HBase和Hypertable是Bigtable的復(fù)制者不同,Cassandra結(jié)合了Amazon的Dynamo的存儲模型和Bigtable的數(shù)據(jù)模型。它的一大特點是使用Gossip協(xié)議實現(xiàn)了去中心化的P2P存儲方式,所有服務(wù)器都是等價的,不存在任何一個單點問題。Cassandra與HBase的區(qū)別在于:Cassandra配置簡單,平臺組件少,集群化部署和運維較容易,CAP定理側(cè)重于Availability和Partition tolerance,不提供行鎖,不適合存儲超大文件;HBase配置相對復(fù)雜,平臺組件多,集群化部署和運維稍微麻煩,CAP定理側(cè)重于Consistency和Availability,提供行鎖,可處理超大文件。
雖然Hadoop的MapReduce框架足夠易用,但是對于傳統(tǒng)使用SQL操作的數(shù)據(jù)倉庫類需求時,直接調(diào)用Map和Reduce接口來達到類似效果,還是相對繁瑣,而且對不熟悉MapReduce框架的使用者來說是一個門檻,因此hive就是為了解決此問題而誕生。它在Hadoop上建立了一個數(shù)據(jù)倉庫框架,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射成一張數(shù)據(jù)庫表,并提供類似SQL的查詢接口,彌補了Hadoop和數(shù)據(jù)倉庫操作的鴻溝,大大提高了數(shù)據(jù)查詢和展示類業(yè)務(wù)的生產(chǎn)效率。一方面,熟悉SQL的使用者只需要很小的成本就可以遷移至hive平臺,另一方面,由于量級大而在傳統(tǒng)數(shù)據(jù)倉庫架構(gòu)下已無法存放的數(shù)據(jù),也可以較為容易地遷移到hive平臺。因此hive平臺已經(jīng)成為了很多公司的大數(shù)據(jù)倉庫的核心方案。