大數(shù)據(jù)|Hadoop簡介及兩大功能三大核心組件(二)

一、為什么需要hadoop?

在數(shù)據(jù)量很大的情況下,單機的處理能力無法勝任,必須采用分布式集群的方式進行處理,而用分布式集群的方式處理數(shù)據(jù),實現(xiàn)的復雜度呈級數(shù)增加。所以,在海量數(shù)據(jù)處理的需求下,一個通用的分布式數(shù)據(jù)處理技術(shù)框架能大大降低應用開發(fā)難點和減少工作量。

我們先來看這么一個例子:我們要從一個用戶使用app的日志數(shù)據(jù)中統(tǒng)計每個用戶搜索了哪些關(guān)鍵詞,這個日志文件有21G大,而我們的一個服務器只有8G內(nèi)存,很顯然一臺服務器無法干這活。那么我們的處理方案應該是這樣,見圖一:

圖一:自己搭建一個集群

從圖一我們知道,要順利完成這么一個集群工作,它存在幾個問題:

1)如何分發(fā)業(yè)務應用到集群的各臺服務器上

2)設置好每臺服務器的運算環(huán)境

3)業(yè)務邏輯要進行適應性的改造,需要一個專門的匯總程序來處理各臺服務器的結(jié)果

4)任務的監(jiān)控和容錯,比如B服務器掛掉了就需要重新分配一個服務器去處理B服務器中的1/3數(shù)據(jù)

5)如何處理中間結(jié)果數(shù)據(jù)的緩存、調(diào)度和傳輸

等等...

要我們自己編寫一個程序來處理以上的問題是極其復雜的,我曾經(jīng)寫過一個腳本完成“如何分發(fā)業(yè)務應用到集群的各臺服務器上”這個問題,復雜度也是不小的。

而hadoop卻可以幫助我們處理上面的所有問題,我們只需要編寫我們的業(yè)務程序即可。

二、hadoop是什么?

hadoop是用于處理(運算分析)海量數(shù)據(jù)的技術(shù)平臺,并且是采用分布式集群的方式。

圖二:功能、核心組建、使用

hadoop有兩大功能:

1)提供海量數(shù)據(jù)的存儲服務。

2)提供分析海量數(shù)據(jù)框架及運行平臺。

關(guān)鍵詞為存儲、分析海量數(shù)據(jù)和運行平臺。

hadoop三大核心組件:

1)HDFS:hadoop分布式文件系統(tǒng)海量數(shù)據(jù)存儲(集群服務)。

2)MapReduce:分布式運算框架(編程框架),海量數(shù)據(jù)運算分析。

3)Yarn:資源調(diào)度管理集群(可以理解為一個分布式的操作系統(tǒng),管理和分配集群硬件資源)。

用MapReduce編寫一個程序,到Y(jié)arn運行平臺上去運行。

hadoop兩大使用角度:

1)可以把hadoop理解為一個編程框架,類比struts、spring、mybatis,有著自己特定的api封裝和用戶編程規(guī)范,用戶可借助這些api來實現(xiàn)數(shù)據(jù)處理邏輯。

2)從另一個角度,hadoop可以理解為一個提供服務的軟件,類比數(shù)據(jù)庫服務的oracle/mysql、索引服務solr、緩存服務redis,用戶程序通過客戶端向hadoop集群請求服務來實現(xiàn)特定的功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容