當(dāng)我們說大數(shù)據(jù)Hadoop,究竟在說什么?
?前言
提到大數(shù)據(jù),大抵逃不過兩個(gè)問題,一個(gè)是海量的數(shù)據(jù)該如何存儲(chǔ),另外一個(gè)就是那么多數(shù)據(jù)該如何進(jìn)行查詢計(jì)算呢。好在這些問題前人都有了解決方案,而Hadoop就是其中的佼佼者,是目前市面上最流行的一個(gè)大數(shù)據(jù)軟件,那它包括哪些內(nèi)容呢?有什么特點(diǎn)呢?
Hadoop介紹
提到Hadoop,大家的理解是什么?
狹義上理解,Hadoop指的是Apache軟件基金會(huì)的一款用java語言實(shí)現(xiàn),開源的軟件,允許用戶使用簡(jiǎn)單的編程模型實(shí)現(xiàn)跨機(jī)器集群對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算處理。
廣義上,Hadoop指的是圍繞Hadoop打造的大數(shù)據(jù)生態(tài)圈,如下圖所示, 其中Hadoop是整個(gè)生態(tài)圈的底座、地基,構(gòu)建出整個(gè)大數(shù)據(jù)的生態(tài)系統(tǒng)。
Hadoop怎么來的?
Hadoop之父:Doug Cutting
《The Google file system》:谷歌分布式文件系統(tǒng)GFS
《MapReduce: Simplified Data Processing on Large Clusters》:谷歌分布式計(jì)算框架MapReduce
《Bigtable: A Distributed Storage System for Structured Data》:谷歌結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)系統(tǒng)
Hadoop三大核心組件
hadoop主要由3大部分組成,俗稱Hadoop三劍客:
Hadoop HDFS(分布式文件存儲(chǔ)系統(tǒng))
全稱分布式文件系統(tǒng),本質(zhì)是一個(gè)文件系統(tǒng),由于數(shù)據(jù)量很大,總不能將將所有數(shù)據(jù)存儲(chǔ)到一臺(tái)"電腦"上,哪有那么大磁盤的電腦,那么是不是可以存儲(chǔ)到多個(gè)不同的"電腦"上,也就是分布式的,把文件存儲(chǔ)在不同的節(jié)點(diǎn)中,主要是為了解決海量數(shù)據(jù)存儲(chǔ)的問題,它處在生態(tài)圈的底層與核心地位。
Hadoop MapReduce(分布式計(jì)算框架)
MapReduce作為大數(shù)據(jù)生態(tài)圈第一代分布式計(jì)算框架,主要是解決了海量數(shù)據(jù)的計(jì)算問題。
傳統(tǒng)的計(jì)算方式一般都是將數(shù)據(jù)從各個(gè)節(jié)點(diǎn)上加載過來,然后統(tǒng)一計(jì)算。這樣有個(gè)最大的弊端就是計(jì)算十分慢,只有一個(gè)節(jié)點(diǎn)工作。而MapReduce計(jì)算框架可以分布在各個(gè)節(jié)點(diǎn)上并行計(jì)算,最后進(jìn)行歸并。
注意,MapReduce只是一個(gè)計(jì)算框架,或者說編程模型,不是一個(gè)軟件,無需部署。
Hadoop YARN(集群資源管理和任務(wù)調(diào)度平臺(tái))
YARN是分布式通用的集群資源管理系統(tǒng)和任務(wù)調(diào)度平臺(tái),怎么理解呢?
大數(shù)據(jù)的很多計(jì)算任務(wù),比如MapReduce任務(wù)、或者其他的Spark任務(wù)等等,他們?cè)谟?jì)算的時(shí)候需要CPU、內(nèi)存、磁盤等資源,那么多個(gè)任務(wù)進(jìn)行運(yùn)算的時(shí)候需要有個(gè)管理者去給他們進(jìn)行資源分配、調(diào)度等,這個(gè)管理員就是YARN。
Hadoop優(yōu)點(diǎn)
Hadoop為什么這么流行,這和它的眾多優(yōu)點(diǎn)分不開。
擴(kuò)容能力
Hadoop是在可用的計(jì)算機(jī)集群間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集群可方便靈活的方式擴(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)。
成本低
Hadoop集群允許通過部署普通廉價(jià)的機(jī)器組成集群來處理大數(shù)據(jù),以至于成本很低??粗氐氖羌赫w能力。
效率高
通過并發(fā)數(shù)據(jù),Hadoop可以在節(jié)點(diǎn)之間動(dòng)態(tài)并行的移動(dòng)數(shù)據(jù),使得速度非???。
可靠性
能自動(dòng)維護(hù)數(shù)據(jù)的多份復(fù)制,并且在任務(wù)失敗后能自動(dòng)地重新部署(redeploy)計(jì)算任務(wù)。所以Hadoop的按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。
開源
由于Hadoop開源,所以整個(gè)社區(qū)活躍度很高,很多企業(yè)都是基于Hadoop構(gòu)建他們的大數(shù)據(jù)平臺(tái)。
Hadoop架構(gòu)變遷
Hadoop也一直在迭代升級(jí),如今已經(jīng)到了3.0時(shí)代了,那么每個(gè)大版本有什么差別呢?
1.Hadoop 1.0時(shí)代
Hadoop1.0時(shí)代只有HDFS?(分布式文件存儲(chǔ))和MapReduce(資源管理和分布式數(shù)據(jù)處理)兩部分。
2.Hadoop 2.0時(shí)代
Hadoop2.0時(shí)代引入了YARN作為統(tǒng)一的集群資源管理和任務(wù)調(diào)度平臺(tái),它不僅可以提交自己的任務(wù),還可以提交其他的一些任務(wù),是一個(gè)很大的變革,也是保證Hadoop的統(tǒng)治地位的一大原因。
3.Hadoop 3.0時(shí)代
Hadoop 3.0架構(gòu)組件和Hadoop 2.0類似, 但是3.0著重于性能優(yōu)化。
Hadoop初體驗(yàn)
好了,上面基本講清楚Hadoop的基本內(nèi)容,那Hadoop究竟長(zhǎng)啥樣呢?至于安裝這邊就不介紹了。
Hadoop分布式文件系統(tǒng)
我們可以在web上看到hadoop的文件系統(tǒng),其實(shí)和我們的目錄沒啥差別。
YARN集群資源管理和任務(wù)調(diào)度平臺(tái)
我們也可以在瀏覽器輸入指定的地址看到之前都提交過上面樣的計(jì)算任務(wù)。
至于MapReduce是看不到的,它只是一個(gè)計(jì)算框架,提交到這個(gè)Yarn上。
總結(jié)
本文講解了大數(shù)據(jù)開發(fā)中最流行的軟件Hadoop, 它主要分為3部分,管理文件存儲(chǔ)的hdfs, 統(tǒng)一管理資源和任務(wù)的調(diào)度平臺(tái)Yarn,以及提供了一種計(jì)算引擎MapReduce, 基于這三個(gè)"磐石",可以構(gòu)建出整個(gè)大數(shù)據(jù)生態(tài)。