大數(shù)據(jù)基礎(chǔ)架構(gòu)Hadoop,終于有人講明白了
?一、Hadoop技術(shù)概述
在大數(shù)據(jù)時代,針對大數(shù)據(jù)處理的新技術(shù)也在不斷地開發(fā)和運(yùn)用中,并逐漸成為數(shù)據(jù)處理挖掘行業(yè)廣泛使用的主流技術(shù)。Hadoop作為處理大數(shù)據(jù)的分布式存儲和計(jì)算框架,已在國內(nèi)外大、中、小型企業(yè)中得到了廣泛應(yīng)用。學(xué)習(xí)Hadoop技術(shù)是從事大數(shù)據(jù)行業(yè)工作必不可少的一步。
1.Hadoop的發(fā)展歷史?
Hadoop是由Apache的Lucence項(xiàng)目創(chuàng)始人道格·卡廷創(chuàng)建的,Lucence是一個應(yīng)用廣泛的文本搜索系統(tǒng)庫。Hadoop起源于開源的網(wǎng)絡(luò)搜索引擎Nutch,Nutch本身也是Lucence項(xiàng)目的一部分。Hadoop的發(fā)展歷史如圖1所示。
▲圖1 Hadoop的發(fā)展歷史
2.Hadoop的特點(diǎn)
Hadoop是一個能夠讓用戶輕松搭建和使用的分布式計(jì)算平臺,能夠讓用戶輕松地在Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。Hadoop的主要特點(diǎn)如下。
1)高可靠性。Hadoop的數(shù)據(jù)存儲有多個備份,集群部署在不同機(jī)器上,可以防止一個節(jié)點(diǎn)宕機(jī)造成集群損壞。當(dāng)數(shù)據(jù)處理請求失敗時,Hadoop將自動重新部署計(jì)算任務(wù)。
2)高擴(kuò)展性。Hadoop是在可用的計(jì)算機(jī)集群間分配數(shù)據(jù)并完成計(jì)算任務(wù)的。為集群添加新的節(jié)點(diǎn)并不復(fù)雜,因此可以很容易地對集群進(jìn)行節(jié)點(diǎn)的擴(kuò)展。
3)高效性。Hadoop可以在節(jié)點(diǎn)之間動態(tài)地移動數(shù)據(jù),在數(shù)據(jù)所在節(jié)點(diǎn)進(jìn)行并行處理,并保證各個節(jié)點(diǎn)的動態(tài)平衡,因此處理速度非???。
4)高容錯性。Hadoop的分布式文件系統(tǒng)HDFS在存儲文件時將在多臺機(jī)器或多個節(jié)點(diǎn)上存儲文件的備份副本,當(dāng)讀取該文件出錯或某一臺機(jī)器宕機(jī)時,系統(tǒng)會調(diào)用其他節(jié)點(diǎn)上的備份文件,保證程序順利運(yùn)行。
5)低成本。Hadoop是開源的,即不需要支付任何費(fèi)用即可下載并安裝使用,節(jié)省了購買軟件的成本。
6)可構(gòu)建在廉價機(jī)器上。Hadoop不要求機(jī)器的配置達(dá)到極高的標(biāo)準(zhǔn),大部分普通商用服務(wù)器即可滿足要求,通過提供多個副本和容錯機(jī)制提高集群的可靠性。
7)Hadoop基本框架是基于Java語言編寫的。Hadoop是一個基于Java語言開發(fā)的框架,因此運(yùn)行在Linux系統(tǒng)上是非常理想的。Hadoop上的應(yīng)用程序也可以使用其他語言編寫,如C++和Python。
3.Hadoop存儲框架—HDFS?
HDFS是一種旨在普通硬件上運(yùn)行的分布式文件系統(tǒng),與現(xiàn)有的分布式文件系統(tǒng)有許多相似之處,但也存在明顯的區(qū)別。HDFS具有非常好的容錯能力,旨在部署在低成本硬件上。HDFS支持對應(yīng)用程序數(shù)據(jù)進(jìn)行高吞吐量訪問,并且適用于具有海量數(shù)據(jù)集的讀寫。HDFS是Hadoop的核心組件之一,用于存儲數(shù)據(jù)。
HDFS簡介及架構(gòu)
HDFS是以分布式進(jìn)行存儲的文件系統(tǒng),主要負(fù)責(zé)集群數(shù)據(jù)的存儲與讀取。分布式系統(tǒng)可以劃分成多個子系統(tǒng)或模塊,各自運(yùn)行在不同的機(jī)器上,子系統(tǒng)或模塊之間通過網(wǎng)絡(luò)通信進(jìn)行協(xié)作,以實(shí)現(xiàn)最終的整體功能。利用多個節(jié)點(diǎn)共同協(xié)作完成一項(xiàng)或多項(xiàng)具體業(yè)務(wù)功能的系統(tǒng)即為分布式系統(tǒng)。
HDFS作為一個分布式文件系統(tǒng),其分布式主要體現(xiàn)在如下3個方面。
1)HDFS并不是一個單機(jī)文件系統(tǒng),而是分布在多個集群節(jié)點(diǎn)上的文件系統(tǒng)。節(jié)點(diǎn)之間通過網(wǎng)絡(luò)通信進(jìn)行協(xié)作,提供多個節(jié)點(diǎn)的文件信息,使每個用戶均可以看到文件系統(tǒng)的文件,使多臺機(jī)器上的多用戶可以分享文件和存儲空間。
2)當(dāng)存儲文件時,文件的數(shù)據(jù)將分布在多個節(jié)點(diǎn)上。數(shù)據(jù)存儲不是按一個文件存儲,而是將一個文件分成一個或多個數(shù)據(jù)塊進(jìn)行存儲。數(shù)據(jù)塊在存儲時并不是都存儲在一個節(jié)點(diǎn)上,而是被分別存儲在各個節(jié)點(diǎn)中,并且數(shù)據(jù)塊會在其他節(jié)點(diǎn)存儲副本。
3)數(shù)據(jù)從多個節(jié)點(diǎn)讀取。讀取一個文件時,從多個節(jié)點(diǎn)中找到該文件的數(shù)據(jù)塊,分別讀取所有數(shù)據(jù)塊,直至最后一個數(shù)據(jù)塊讀取完畢。
HDFS是一個主/從(Master/Slave)體系架構(gòu)的分布式文件系統(tǒng)。HDFS支持傳統(tǒng)的層次型文件組織結(jié)構(gòu),使得用戶或應(yīng)用程序可以創(chuàng)建目錄,再將文件保存至目錄中。文件系統(tǒng)命名空間的層次結(jié)構(gòu)和大多數(shù)現(xiàn)有的文件系統(tǒng)類似,可以通過文件路徑對文件執(zhí)行創(chuàng)建、讀取、更新和刪除操作。HDFS的基本架構(gòu)如圖2所示。
▲圖2 HDFS基本架構(gòu)圖
HDFS文件系統(tǒng)主要包含一個NameNode、一個Secondary NameNode和多個DataNode。
(1)NameNode
NameNode用于存儲元數(shù)據(jù)以及處理客戶端發(fā)出的請求。元數(shù)據(jù)不是具體的文件內(nèi)容,它包含3類重要信息。第1類信息是文件和目錄自身的屬性信息,如文件名、目錄名、父目錄信息、文件大小、創(chuàng)建時間、修改時間等;第2類信息是記錄文件內(nèi)容存儲的相關(guān)信息,如文件分塊情況、副本個數(shù)、每個副本所在的DataNode信息等;第3類信息是用于記錄HDFS中所有DataNode的信息,用于DataNode管理。
在NameNode中存放元信息的文件是fsimage文件。在系統(tǒng)運(yùn)行期間,所有對元數(shù)據(jù)的操作均保存在內(nèi)存中,并被持久化到另一個文件edits中。當(dāng)NameNode啟動時,fsimage文件將被加載至內(nèi)存,再對內(nèi)存里的數(shù)據(jù)執(zhí)行edits文件所記錄的操作,以確保內(nèi)存所保留的數(shù)據(jù)處于最新的狀態(tài)。
(2)Secondary NameNode
Secondary NameNode用于備份NameNode的數(shù)據(jù),周期性地將edits文件合并到fsimage文件并在本地備份,然后將新的fsimage文件存儲至NameNode,覆蓋原有的fsimage文件,刪除edits文件,并創(chuàng)建一個新的edits文件繼續(xù)存儲文件當(dāng)前的修改狀態(tài)。
(3)DataNode
DataNode是真正存儲數(shù)據(jù)的地方。在DataNode中,文件以數(shù)據(jù)塊的形式進(jìn)行存儲。Hadoop 3.x默認(rèn)128 MB為一個數(shù)據(jù)塊,如果存儲一個大小為129 MB的文件,那么文件將被分為兩個數(shù)據(jù)塊進(jìn)行存儲。當(dāng)文件上傳至HDFS端時,HDFS會將文件按128MB的數(shù)據(jù)塊大小進(jìn)行切割,將每個數(shù)據(jù)塊存儲至不同的或相同的DataNode并備份副本,一般默認(rèn)備份3個副本。NameNode負(fù)責(zé)記錄文件的分塊信息,以確保在讀取該文件時可以找到并整合所有數(shù)據(jù)塊。
HDFS的特點(diǎn)?
隨著數(shù)據(jù)量越來越多,傳統(tǒng)的單機(jī)式文件存儲系統(tǒng)已經(jīng)不能滿足日益增長的數(shù)據(jù)存儲需求,分布式文件存儲系統(tǒng)—HDFS應(yīng)運(yùn)而生。作為分布式文件系統(tǒng),HDFS能夠解決海量數(shù)據(jù)的存儲問題,其優(yōu)點(diǎn)列舉如下。
1)高容錯性。HDFS上傳的數(shù)據(jù)會自動保存多個副本,通過增加副本的數(shù)量增加HDFS的容錯性。如果某一個副本丟失,那么HDFS將復(fù)制其他節(jié)點(diǎn)上的副本。
2)適合大規(guī)模數(shù)據(jù)的處理。HDFS能夠處理GB、TB甚至PB級別的數(shù)據(jù),數(shù)量級規(guī)??蛇_(dá)百萬,數(shù)量非常大。
3)流式數(shù)據(jù)訪問。HDFS以流式數(shù)據(jù)訪問模式存儲超大文件,有著“一次寫入,多次讀取”的特點(diǎn),且文件一旦寫入,不能修改,只能增加,以保證數(shù)據(jù)的一致性。
當(dāng)然HDFS也不是完美的,同樣存在局限性,如不適合低延遲數(shù)據(jù)訪問,無法高效存儲大量小文件、不支持多用戶寫入及任意修改文件。
4.Hadoop計(jì)算引擎—MapReduce
MapReduce是一個分布式運(yùn)算程序的編程框架,是基于Hadoop的數(shù)據(jù)分析應(yīng)用的核心框架。MapReduce的核心功能是將用戶編寫的業(yè)務(wù)邏輯代碼和自帶的組件整合成一個完整的分布式運(yùn)算程序,并行運(yùn)行在Hadoop集群上。認(rèn)識MapReduce分布式計(jì)算框架,并了解MapReduce的執(zhí)行流程,有利于后續(xù)的MapReduce編程學(xué)習(xí)。
MapReduce是Hadoop的核心計(jì)算框架,是用于大規(guī)模數(shù)據(jù)集(大于1TB)并行運(yùn)算的編程模型,主要包括Map(映射)和Reduce(規(guī)約)兩個階段。
1)當(dāng)啟動一個MapReduce任務(wù)時,Map端將會讀取HDFS上的數(shù)據(jù),將數(shù)據(jù)映射成所需要的鍵值對類型并傳至Reduce端。
2)Reduce端接收Map端鍵值對類型的中間數(shù)據(jù),并根據(jù)不同鍵進(jìn)行分組,對每一組鍵相同的數(shù)據(jù)進(jìn)行處理,得到新的鍵值對并輸出至HDFS。
MapReduce作業(yè)執(zhí)行流程如圖3所示。
▲圖3 MapReduce作業(yè)執(zhí)行流程圖
一個完整的MapReduce過程涉及數(shù)據(jù)的輸入與分片、Map階段數(shù)據(jù)處理、Shuffle&Sort階段數(shù)據(jù)整合、Reduce階段數(shù)據(jù)處理、數(shù)據(jù)輸出等操作。
1)數(shù)據(jù)的輸入與分片。MapReduce過程中的數(shù)據(jù)是從HDFS分布式文件系統(tǒng)中讀取的。文件上傳至HDFS時,一般按照128 MB分成若干個數(shù)據(jù)塊,所以在運(yùn)行MapReduce程序時,每個數(shù)據(jù)塊均會對應(yīng)一個Map任務(wù)。也可以通過重新設(shè)置文件分片大小調(diào)整Map的個數(shù),在運(yùn)行MapReduce程序時系統(tǒng)會根據(jù)所設(shè)置的分片大小對文件重新分片(Split)。
2)Map階段數(shù)據(jù)處理。一個程序有一個或多個Map任務(wù),具體由默認(rèn)存儲或分片個數(shù)決定。在Map階段,數(shù)據(jù)將以鍵值對的形式被讀入,鍵的值一般為每行首字符與文件最初始位置的偏移量,即中間所隔字符個數(shù),值為該行的數(shù)據(jù)記錄。根據(jù)具體的需求對鍵值對進(jìn)行處理,映射成新的鍵值對并傳輸至Reduce端。
3)Shuffle&Sort階段數(shù)據(jù)整合。此階段是指從Map端輸出開始,傳輸至Reduce端之前的過程。該過程會對同一個Map中輸出的鍵相同的數(shù)據(jù)先進(jìn)行整合,減少傳輸?shù)臄?shù)據(jù)量,并在整合后將數(shù)據(jù)按照鍵進(jìn)行排序。
4)Reduce階段數(shù)據(jù)處理。Reduce任務(wù)可以有一個或多個,具體由Map階段設(shè)置的數(shù)據(jù)分區(qū)確定,一個分區(qū)數(shù)據(jù)將被一個Reduce處理。針對每一個Reduce任務(wù),Reduce會接收到不同Map任務(wù)傳來的數(shù)據(jù),并且每個Map傳來的數(shù)據(jù)都是有序的。一個Reduce任務(wù)中的每一次處理均是針對所有鍵相同的數(shù)據(jù),對數(shù)據(jù)進(jìn)行規(guī)約,形成新的鍵值對。
5)數(shù)據(jù)輸出。Reduce階段處理完數(shù)據(jù)后即可將數(shù)據(jù)文件輸出至HDFS,輸出的文件個數(shù)和Reduce的個數(shù)一致。如果只有一個Reduce,那么輸出只有一個數(shù)據(jù)文件,默認(rèn)命名為“part-r-00000”。
5.Hadoop資源管理器—YARN
YARN是Hadoop的資源管理器,可以提高資源在集群的利用率,加快執(zhí)行速率。早期的Hadoop 1.0版本的任務(wù)執(zhí)行效率低下,Hadoop 2.x版本開始引入了YARN框架。YARN框架為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨大好處。
Hadoop YARN提供了一個更加通用的資源管理和分布式應(yīng)用框架。該框架使得用戶可以根據(jù)自己的需求實(shí)現(xiàn)定制化的數(shù)據(jù)處理應(yīng)用,既可以支持MapReduce計(jì)算,也可以很方便地管理如Hive、HBase、Pig、Spark/Shark等組件的應(yīng)用程序。YARN的架構(gòu)設(shè)計(jì)使得各類型的應(yīng)用程序可以運(yùn)行在Hadoop上,并通過YARN從系統(tǒng)層面進(jìn)行統(tǒng)一管理。擁有了YARN框架,各種應(yīng)用可以互不干擾地運(yùn)行在同一個Hadoop系統(tǒng)中,以共享整個集群資源。
YARN框架總體上仍然是主/從結(jié)構(gòu),在整個資源管理框架中,ResourceManager為Master,NodeManager為Slave,ResourceManager負(fù)責(zé)對各個NodeManager上的資源進(jìn)行統(tǒng)一管理和調(diào)度。用戶提交一個應(yīng)用程序時,需要提供一個用于跟蹤和管理這個程序的ApplicationMaster,ApplicationMaster負(fù)責(zé)向ResourceManager申請資源,并要求NodeManger啟動可以占用一定資源的任務(wù)。由于不同的ApplicationMaster被分布到不同的節(jié)點(diǎn)上,所以它們之間不會相互影響。
YARN的基本組成框架如圖4所示。
▲圖4 YARN的基本組成框架
YARN主要由ResourceManager、Node-Manager、ApplicationMaster和Client App-lication這4個部分構(gòu)成,具體說明如下。
1)ResourceManager(RM)。一個全局的資源管理器,負(fù)責(zé)整個系統(tǒng)的資源管理和分配。ResourceManager主要由兩個組件構(gòu)成,即調(diào)度器(Scheduler)和應(yīng)用程序管理器(Applications Manager,ASM)。
調(diào)度器負(fù)責(zé)將系統(tǒng)中的資源分配給各個正在運(yùn)行的應(yīng)用程序,不從事任何與具體應(yīng)用程序相關(guān)的工作,如監(jiān)控或跟蹤應(yīng)用的執(zhí)行狀態(tài)等,也不負(fù)責(zé)重新啟動因應(yīng)用執(zhí)行失敗或硬件故障而產(chǎn)生的失敗任務(wù)。
應(yīng)用程序管理器負(fù)責(zé)處理客戶端提交的Job以及協(xié)商第一個Container(包裝資源的對象)以供ApplicationMaster運(yùn)行,并且在ApplicationMaster失敗時將其重新啟動。其中,Container是YARN中的資源抽象,它封裝了某個節(jié)點(diǎn)上的多維度資源,如內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等。當(dāng)ApplicationMaster向RM申請資源時,RM為ApplicationMaster返回的資源就是使用Container表示的。YARN會為每個任務(wù)分配一個Container,且該任務(wù)只能使用該Container中描述的資源。
2)NodeManager(NM)。每個節(jié)點(diǎn)上的資源和任務(wù)管理器。一方面,NM會定時地向RM匯報本節(jié)點(diǎn)上的資源使用情況和各個Container的運(yùn)行狀態(tài);另一方面,NM會接收并處理來自ApplicationMaster的Container啟動或停止等各種請求。
3)ApplicationMaster(AM)。在用戶提交每個應(yīng)用程序時,系統(tǒng)會生成一個ApplicationMaster并保存到提交的應(yīng)用程序里。ApplicationMaster的主要功能如下。
與ResourceManager調(diào)度器協(xié)商以獲取資源(用Container表示)。
對得到的任務(wù)進(jìn)行進(jìn)一步分配。
與NodeManager通信以啟動或停止任務(wù)。
監(jiān)控所有任務(wù)運(yùn)行狀態(tài),在任務(wù)運(yùn)行失敗時重新為任務(wù)申請資源并重啟任務(wù)。
4)Client Application。Client Application是客戶端提交的應(yīng)用程序。客戶端會將應(yīng)用程序提交到RM,然后RM將創(chuàng)建一個Application上下文件對象,再設(shè)置AM必需的資源請求信息,最后提交至RM。
二、Hadoop應(yīng)用場景介紹
在大數(shù)據(jù)背景下,Apache Hadoop作為一種分布式存儲和計(jì)算框架,已經(jīng)被廣泛應(yīng)用到各行各業(yè),業(yè)界對于Hadoop這一開源分布式技術(shù)的應(yīng)用也在不斷地拓展中。了解Hadoop的應(yīng)用場景,從而可以更深刻地了解Hadoop在實(shí)際生活中的應(yīng)用。
1)在線旅游。目前全球范圍內(nèi)大多數(shù)在線旅游網(wǎng)站都使用了Cloudera公司提供的Hadoop發(fā)行版,Expedia作為全球最大的在線旅游公司也在使用Hadoop。在國內(nèi)目前比較受歡迎的一些旅游網(wǎng)站如攜程、去哪兒網(wǎng)等也采用了大數(shù)據(jù)技術(shù)對數(shù)據(jù)進(jìn)行存儲和計(jì)算。
2)移動數(shù)據(jù)。中國移動于2010年5月正式推出大云BigCloud 1.0,集群節(jié)點(diǎn)達(dá)到了1024個。華為對Hadoop的HA方案及HBase領(lǐng)域也有深入研究,并已經(jīng)向業(yè)界推出了自己的基于Hadoop的大數(shù)據(jù)解決方案。
3)電子商務(wù)。阿里巴巴的Hadoop集群擁有150個用戶組、4500個集群用戶,為淘寶、天貓、一淘、聚劃算、CBU、支付寶提供底層的基礎(chǔ)計(jì)算和存儲服務(wù)。
4)詐騙檢測。一般金融服務(wù)或政府機(jī)構(gòu)會使用Hadoop存儲所有的客戶交易數(shù)據(jù),包括一些非結(jié)構(gòu)化的數(shù)據(jù),以幫助機(jī)構(gòu)發(fā)現(xiàn)客戶的異常活動,預(yù)防欺詐行為。例如國內(nèi)支付寶、微信錢包這類龐大的互聯(lián)網(wǎng)支付平臺,對詐騙、防護(hù)都十分重視,均使用大數(shù)據(jù)技術(shù)進(jìn)行詐騙檢測,以保障線上資金的安全。
5)IT安全。除企業(yè)IT基礎(chǔ)機(jī)構(gòu)的管理外,Hadoop還可以用于處理機(jī)器生成的數(shù)據(jù)以便識別出來自惡意軟件。國內(nèi)奇虎360安全軟件在應(yīng)用方面也使用Hadoop的HBase組件進(jìn)行數(shù)據(jù)存儲,縮短了異?;謴?fù)的時間。
6)醫(yī)療保健。醫(yī)療行業(yè)也可以使用Hadoop,如IBM Watson技術(shù)平臺使用Hadoop集群作為語義分析等高級分析技術(shù)的基礎(chǔ)。醫(yī)療機(jī)構(gòu)可以利用語義分析為患者提供醫(yī)護(hù)人員,并協(xié)助醫(yī)生更好地為患者進(jìn)行診斷。
7)搜索引擎。我們在使用搜索引擎的過程中會產(chǎn)生大規(guī)模的數(shù)據(jù),此時,使用Hadoop進(jìn)行海量數(shù)據(jù)挖掘可以提高數(shù)據(jù)處理的效率。國外的雅虎已將Hadoop應(yīng)用到搜索引擎中,國內(nèi)的百度和阿里巴巴也將Hadoop應(yīng)用到搜索引擎、推薦、數(shù)據(jù)分析等多個領(lǐng)域。
8)社交平臺。目前網(wǎng)絡(luò)社交已經(jīng)成為人們?nèi)粘I畹囊徊糠?,網(wǎng)絡(luò)社交平臺每天產(chǎn)生的數(shù)據(jù)量十分龐大。騰訊和臉書作為國內(nèi)外的大型社交平臺,在數(shù)據(jù)庫存儲方面均利用了Hadoop生態(tài)系統(tǒng)中的Hive組件進(jìn)行數(shù)據(jù)存儲和處理。
三、Hadoop生態(tài)系統(tǒng)
Hadoop經(jīng)過多年的發(fā)展,已經(jīng)形成了一個相當(dāng)成熟的生態(tài)系統(tǒng)?,F(xiàn)代生活節(jié)奏快速,各行各業(yè)無時無刻產(chǎn)生著大量的數(shù)據(jù),Hadoop發(fā)揮著重要的作用。因?yàn)楦餍懈鳂I(yè)的需求不同,很多時候需要在Hadoop的基礎(chǔ)上進(jìn)行一些改進(jìn)和優(yōu)化,也因此產(chǎn)生了許多圍繞Hadoop衍生的工具,逐漸地演變成一個龐大的Hadoop生態(tài)系統(tǒng),如圖5所示。
▲圖5 Hadoop生態(tài)系統(tǒng)
Hadoop生態(tài)系統(tǒng)中常用的組件列舉如下,不同的組件分別提供特定的服務(wù)。
1)Hive。Hive是建立在Hadoop基礎(chǔ)上的數(shù)據(jù)倉庫基礎(chǔ)框架,提供了一系列工具,可存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)。Hive定義了一種類SQL語言為HQL,該語言編寫的查詢語句在Hive的底層將轉(zhuǎn)換為復(fù)雜的MapReduce程序,運(yùn)行在Hadoop大數(shù)據(jù)平臺上。
2)ZooKeeper。ZooKeeper主要用于保證集群各項(xiàng)功能的正常進(jìn)行,并能夠在功能出現(xiàn)異常時及時通知集群進(jìn)行處理,保持?jǐn)?shù)據(jù)一致性。ZooKeeper是對整個集群進(jìn)行監(jiān)控,可解決分布式環(huán)境下的數(shù)據(jù)管理問題。
3)HBase。HBase是一個針對非結(jié)構(gòu)化數(shù)據(jù)的可伸縮、高可靠、高性能、分布式和面向列的動態(tài)模式數(shù)據(jù)庫。HBase提供了對大規(guī)模數(shù)據(jù)的隨機(jī)、實(shí)時讀寫訪問。同時,HBase中保存的數(shù)據(jù)可以使用MapReduce進(jìn)行處理。HBase將數(shù)據(jù)存儲和并行計(jì)算很好地結(jié)合在一起。
4)Spark。Spark是一種快速、通用、可擴(kuò)展的大數(shù)據(jù)處理引擎,繼承了MapReduce分布式計(jì)算的優(yōu)點(diǎn)并改進(jìn)了MapReduce明顯的缺點(diǎn)。Spark的中間輸出結(jié)果可以保存在內(nèi)存中,因此能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)中迭代次數(shù)較多的算法。
5)Flume。Flume是Cloudera提供的一個高可用的、高可靠的、分布式的海量日志采集、聚合和傳輸系統(tǒng),適用于日志文件的采集。
6)Kafka。Kafka是一個分布式的基于發(fā)布/訂閱模式的消息隊(duì)列,主要應(yīng)用于大數(shù)據(jù)實(shí)時處理領(lǐng)域。Kafka是一個事件流平臺,能夠連接其他數(shù)據(jù)源進(jìn)行持續(xù)的數(shù)據(jù)導(dǎo)入或?qū)С觯⑶铱梢愿鶕?jù)需求持久可靠地存儲數(shù)據(jù)。
本文摘編于《Hadoop與大數(shù)據(jù)挖掘》,經(jīng)出版方授權(quán)發(fā)布。(書號:9787111709473)轉(zhuǎn)載請保留文章來源。?