1國(guó)內(nèi)外大數(shù)據(jù)軟件應(yīng)用研究 1.1Hadoop 2004年,Google發(fā)布了關(guān)于分布式計(jì)算框架MapReduce的大規(guī)模數(shù)據(jù)并行處理技術(shù)的論文。Doug Cutting根據(jù)Google提出的設(shè)計(jì)思想,用Java設(shè)計(jì)出一套與Nutch分布式文件系統(tǒng)(Nutch Distributed File System,NDFS)相結(jié)合且支持Nutch搜索引擎的并行處理軟件系統(tǒng)。該系統(tǒng)從Nutch中分離出來(lái)并被命名為“Hadoop”。Hadoop作為Apache最大的一個(gè)開(kāi)源項(xiàng)目,是以Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)和MapReduce為核心的大數(shù)據(jù)處理平臺(tái)和生態(tài)系統(tǒng),該系統(tǒng)包含了HBase、Hive、Zookeeper等一系列相關(guān)子項(xiàng)目。Hadoop的技術(shù)架構(gòu)如圖1所示。 分布式文件系統(tǒng)HDSF作為Hadoop最核心的設(shè)計(jì)之一,為Hadoop分布式計(jì)算框架提供高性能、高可靠、高可擴(kuò)展的存儲(chǔ)服務(wù)。HDFS是一個(gè)典型的主從架構(gòu),其主要包含一個(gè)名字節(jié)點(diǎn)NameNode(主節(jié)點(diǎn))和多個(gè)數(shù)據(jù)節(jié)點(diǎn)DataNode(從節(jié)點(diǎn)),并提供應(yīng)用程序訪問(wèn)接口。NameNode是整個(gè)文件系統(tǒng)的管理節(jié)點(diǎn),負(fù)責(zé)文件系統(tǒng)名字空間的管理與維護(hù),同時(shí)負(fù)責(zé)客戶端文件操作的控制以及具體存儲(chǔ)任務(wù)的管理和分配;DataNode提供真實(shí)文件數(shù)據(jù)的存儲(chǔ)服務(wù),啟動(dòng)DataNode線程同時(shí)向NameNode匯報(bào)數(shù)據(jù)塊的情況,系統(tǒng)架構(gòu)如圖2所示。
在分布式文件系統(tǒng)HDFS中,可能會(huì)有多個(gè)機(jī)架Rack,每個(gè)機(jī)架上管理多個(gè)DataNode。為防災(zāi)容錯(cuò),一個(gè)數(shù)據(jù)塊Block(數(shù)據(jù)塊大小默認(rèn)64M)的三個(gè)副本通常會(huì)保存到兩個(gè)或兩個(gè)以上的機(jī)架中,例如,一個(gè)放在機(jī)架Rack1中的DataNode1中,一個(gè)放在不同機(jī)架Rack2的DataNode1中,另一個(gè)則放在Rack1的DataNode2中,此分配方法確保系統(tǒng)中的機(jī)架掉電或者機(jī)架的交換機(jī)發(fā)生錯(cuò)誤時(shí),系統(tǒng)的運(yùn)行不受到影響,以及數(shù)據(jù)不會(huì)遺失。DataNode通過(guò)每3秒向NameNode發(fā)送心跳來(lái)保持通信的,一旦心跳停止,將會(huì)認(rèn)為DataNode錯(cuò)誤,NameNode會(huì)將其上的數(shù)據(jù)塊復(fù)制到其他的DataNode上。
分布式計(jì)算框架MapReduce作為Hadoop另一最核心的設(shè)計(jì),是一個(gè)針對(duì)大規(guī)模群組中的海量數(shù)據(jù)處理的分布式編程模型。MapReduce實(shí)現(xiàn)兩個(gè)功能。其一,Map把一個(gè)函數(shù)應(yīng)用于集合中的所有成員,返回一個(gè)基于這個(gè)處理的結(jié)果集。其二,Reduce把通過(guò)多個(gè)線程、進(jìn)程或者獨(dú)立系統(tǒng)并行執(zhí)行處理的結(jié)果集進(jìn)行分類和歸納。Map和Reduce兩個(gè)函數(shù)可并行運(yùn)行。MapReduce程序的第一步叫做mapping,將數(shù)據(jù)元素作為Mapper函數(shù)的輸入數(shù)據(jù),每次一個(gè),Mapper把每次mapping得到的結(jié)果單獨(dú)傳輸?shù)捷敵鰯?shù)據(jù)元素里。Mapper模型如圖3所示。Mapping對(duì)輸入數(shù)據(jù)列表中的每一個(gè)元素應(yīng)用一個(gè)函數(shù)創(chuàng)建一個(gè)新的輸出數(shù)據(jù)列表,即鍵值對(duì)。Reducing具有聚集數(shù)據(jù)功能,Reducer函數(shù)接收來(lái)自輸入列表的迭代器,將數(shù)據(jù)聚集在一起,返回一個(gè)值。Reducer模型如圖4所示。 ![]() ![]()
Reducing一般用來(lái)生成匯總數(shù)據(jù),將大規(guī)模的數(shù)據(jù)轉(zhuǎn)變成更小的總結(jié)數(shù)據(jù)。數(shù)據(jù)通過(guò)Reducer的分析處理,最終將結(jié)果輸出。通常作業(yè)的輸入和輸出都存儲(chǔ)在文件系統(tǒng)中,MapReduce框架和分布式文件系統(tǒng)運(yùn)行在一組相同的節(jié)點(diǎn)上。MapReduce框架可在已經(jīng)存好數(shù)據(jù)的節(jié)點(diǎn)上高效運(yùn)行,使整個(gè)集群的網(wǎng)絡(luò)帶寬高效利用。Hadoop具有高可靠性,高擴(kuò)展性,高容錯(cuò)性,高效性等特點(diǎn)。這些特點(diǎn)符合農(nóng)業(yè)數(shù)據(jù)處理的要求,可將Hadoop用于農(nóng)業(yè)數(shù)據(jù)的處理中,分布式文件系統(tǒng)HDFS可存儲(chǔ)農(nóng)業(yè)數(shù)據(jù),結(jié)合MapReduce將數(shù)據(jù)處理,輸出處理結(jié)果,為用戶提供技術(shù)支持。Hadoop將海量農(nóng)業(yè)數(shù)據(jù)分割于多個(gè)節(jié)點(diǎn),由每一個(gè)節(jié)點(diǎn)并行計(jì)算,將得出的結(jié)果歸并到輸出。運(yùn)用迭代算法的思想,構(gòu)建樹(shù)狀結(jié)構(gòu)的分布式計(jì)算圖,并行、串行結(jié)合的計(jì)算在分布式集群的資源下高效處理。Hadoop數(shù)據(jù)處理方法相對(duì)傳統(tǒng)數(shù)據(jù)分析方法不僅快速,而且在處理農(nóng)業(yè)數(shù)據(jù)時(shí)將多元化的農(nóng)業(yè)數(shù)據(jù)融合分析,分析出數(shù)據(jù)的相關(guān)性。
Hadoop在農(nóng)業(yè)數(shù)據(jù)的分析處理中具有很多的優(yōu)勢(shì),但是仍存在不足。第一,Hadoop的高可用性。HDFS與MapReduce都采用單主機(jī)(master)的處理方式,集群中的其他機(jī)器都與中心機(jī)器進(jìn)行通信,一旦中心機(jī)器損壞,集群停止工作,可用性降低,即單點(diǎn)失敗。目前,針對(duì)這個(gè)已研究出初步解決方案,即對(duì)master節(jié)點(diǎn)進(jìn)行鏡像備份,一旦master出現(xiàn)錯(cuò)誤,即刻換上鏡像備份的機(jī)器,提高可用性,但這是基于內(nèi)置的解決方案,不能從根本上解決問(wèn)題。第二,Hadoop不適用迭代次數(shù)過(guò)多的算法(比如:矩陣的奇異值分解)。MapReduce每次迭代都需將數(shù)據(jù)往文件里面讀寫一遍,浪費(fèi)大量的時(shí)間。第三,不能實(shí)現(xiàn)實(shí)時(shí)性,不能響應(yīng)毫秒級(jí)響應(yīng),事物型查詢用時(shí)較長(zhǎng)。農(nóng)業(yè)數(shù)據(jù)中含有海量的非結(jié)構(gòu)數(shù)據(jù),Hadoop處理起來(lái)十分的復(fù)雜,處理速度緩慢,一旦發(fā)生單點(diǎn)失敗,機(jī)器需重啟重新處理,會(huì)導(dǎo)致處理時(shí)間過(guò)長(zhǎng)。而且Hadoop不能實(shí)現(xiàn)實(shí)時(shí)性,導(dǎo)致很多的數(shù)據(jù)不能及時(shí)處理,對(duì)于需要實(shí)時(shí)分析數(shù)據(jù)輸出結(jié)果以便作出調(diào)整的指標(biāo)沒(méi)有作用。
相對(duì)于Hadoop,Storm主要采用全內(nèi)存計(jì)算,Storm接收到數(shù)據(jù)就實(shí)時(shí)處理并分發(fā),因而Storm處理速度快,被廣泛應(yīng)用于實(shí)時(shí)日志處理、實(shí)時(shí)統(tǒng)計(jì)、實(shí)時(shí)風(fēng)控、實(shí)時(shí)推薦等場(chǎng)景中。
|