大家好,我是北山啦,好久不見,Nice to meet you,本文將記錄學(xué)習(xí)Hadoop生態(tài)圈相關(guān)知識(shí)。
大數(shù)據(jù)時(shí)代
大數(shù)據(jù)是指無法在一定時(shí)間范圍內(nèi)通過常用軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長率和多樣化的信息資產(chǎn)
大數(shù)據(jù)時(shí)代的特征5V
應(yīng)用場景,包括電商領(lǐng)域中的推薦以及金融方面中的個(gè)人信用評估,交通領(lǐng)域中擁堵預(yù)測,導(dǎo)航最優(yōu)規(guī)劃等等,https://beishan.blog.csdn.net/
大數(shù)據(jù)場景下:海量數(shù)據(jù)如何存儲(chǔ)以及海量數(shù)據(jù)如何計(jì)算?
這里涉及到分布式、集群的概念
海量數(shù)據(jù)如何存儲(chǔ)以及海量數(shù)據(jù)如何計(jì)算
Hadoop
Hadoop概述
官網(wǎng):https://hadoop.apache.org/
俠義上Hadoop指的是Apache軟件基金會(huì)的一款開源軟件
允許用戶使用簡單的編程模型實(shí)現(xiàn)跨機(jī)器集群對海量數(shù)據(jù)進(jìn)行分布式計(jì)算處理
Hadoop核心組件HDFS
:分布式文件存儲(chǔ)系統(tǒng),解決海量數(shù)據(jù)存儲(chǔ)YARN
:集群資源管理和任務(wù)調(diào)度框架,解決資源任務(wù)調(diào)度MapReduce
:分布式計(jì)算框架,解決海量計(jì)算
廣義上Hadoop指的是圍繞Hadoop打造的大數(shù)據(jù)生態(tài)圈
Hadoop特性優(yōu)點(diǎn)
Hadoop國內(nèi)外應(yīng)用
Hadoop最先應(yīng)用于國內(nèi)外的互聯(lián)網(wǎng)公司,外國的例如:Yahoo、Facebook、IBM。國內(nèi)的例如:BAT以及華為
Hadoop的成功在于它的通用性以及簡單
精確區(qū)分做說什么和怎么做,做什么屬于業(yè)務(wù)問題,怎么做屬于技術(shù)問題,用戶負(fù)責(zé)業(yè)務(wù),Hadoop負(fù)責(zé)技術(shù)
Hadoop發(fā)行版本
分為開源社區(qū)版以及商業(yè)發(fā)行版
開源社區(qū)版本:https://hadoop.apache.org/
商業(yè)發(fā)行版本:https://www.cloudera.com/products/open-source/apache-hadoop.html
截至目前,Hadoop以及發(fā)展到了3.x版本,Hadoop1.0時(shí),包括HDFS(分布式文件存儲(chǔ))和MapReduce(資源管理和分布式數(shù)據(jù)處理),到2.0,將MapReduce(分布式數(shù)據(jù)處理)進(jìn)行拆分,引入新的組件YARN(集群資源管理、任務(wù)調(diào)度)
Hadoop3.0架構(gòu)組件和Hadoop2.0類似,3.0著重于性能優(yōu)化
Hadoop集群整體概述
- Hadoop集群包括兩個(gè)集群:HDFS集群、YARN集群
- 兩個(gè)集群在邏輯上分離通常物理上在一起
- 兩個(gè)集群都是標(biāo)準(zhǔn)的主從架構(gòu)集群
MapReduce是計(jì)算框架、代碼層面的組件 沒有集群之說
兩個(gè)集群在邏輯上分離通常物理上在一起,可以從下圖中理解
HDFS集群由一主(NN即NameNode)三從(DN即DataNode)+一個(gè)秘書(SNN即Secondary NameNode)構(gòu)成
YARN集群由RM即Resource Manager和NM即Node Manager構(gòu)成
Hadoop集群 = HDFS集群 + YARN集群
- 邏輯上分離,指他們之間互相沒有依賴
- 物理上一起,指進(jìn)程部署在同一臺(tái)機(jī)器上
HDFS分布式文件系統(tǒng)
文件系統(tǒng)是一種存儲(chǔ)和組織數(shù)據(jù)的方法,實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ)、分級組織、訪問和獲取等操作,使得用戶對訪問和查找變得容易,文件系統(tǒng)使用樹形目錄
的邏輯抽象
代替了硬盤等物理設(shè)備使用數(shù)據(jù)塊的概念,用戶不需要關(guān)系數(shù)據(jù)底層存在硬盤哪里,只需記得這個(gè)文件所屬的目錄和文件名即可
傳統(tǒng)常見的文件系統(tǒng)
海量數(shù)據(jù)存儲(chǔ)遇到的困難:
- 傳統(tǒng)存儲(chǔ)硬件通用性差,設(shè)備投資加上后期維修、升級擴(kuò)容的成本非常高
- 傳統(tǒng)存儲(chǔ)方式意味著:存儲(chǔ)時(shí)存儲(chǔ),計(jì)算是計(jì)算,當(dāng)需要處理數(shù)據(jù)的時(shí)候把數(shù)據(jù)移動(dòng)過來
- 性能低,單節(jié)點(diǎn)I/O性能瓶頸無法逾越,難以支持海量數(shù)據(jù)的高并發(fā)高吞吐
- 可擴(kuò)展性差
數(shù)據(jù)和元數(shù)據(jù)
HDFS核心屬性
- 分布式存儲(chǔ)
- 元數(shù)據(jù)記錄
- 分塊存儲(chǔ)
- 副本機(jī)制
分布式存儲(chǔ)
數(shù)據(jù)量大,單機(jī)存儲(chǔ)遇到瓶頸,分布式存儲(chǔ)通過橫向擴(kuò)展來解決數(shù)據(jù)存儲(chǔ)問題
元數(shù)據(jù)記錄
針對文件分布在不同機(jī)器上不利于尋找,元數(shù)據(jù)記錄下文件機(jī)器存儲(chǔ)位置信息,快速定位文件位置
分塊存儲(chǔ)
文件過大導(dǎo)致單機(jī)存放不下,上傳下載效率低。通過文件分塊存儲(chǔ)在不同機(jī)器,針對塊并行操作提高效率
副本機(jī)制
不同機(jī)器設(shè)置備份,冗余存儲(chǔ),保障數(shù)據(jù)安全
總結(jié)如下:
HDFS簡介
- HDFS(Hadoop Distributed File System),Hadoop分布式文件系統(tǒng),是Apache Hadoop的核心組件之一,作為大數(shù)據(jù)生態(tài)圈最底層的分布式存儲(chǔ)服務(wù)而存在,也可以說大數(shù)據(jù)首要解決的我呢提就是海量數(shù)據(jù)的存儲(chǔ)問題
HDFS shell操作
HDFS Shell包含了各種的類Shell的命令,可以直接與Hadoop分布式文件系統(tǒng)以及其他文件系統(tǒng)進(jìn)行交互,常用命令如下:
這里搬運(yùn)的CSDN氣質(zhì)&末雨的總結(jié),感謝感謝
Map Reduce
hadoop主鍵之MapReduce
分而治之思想、設(shè)計(jì)構(gòu)思、官方示例、執(zhí)行流程
分而治之
MapReduce的核心思想是:分而治之
將原問題拆分位若干個(gè)子問題,并對子問題進(jìn)行求解,最后進(jìn)行合并,得到原問題的解。
將原問題拆分位若干個(gè)小問題之后,可以并行處理,同時(shí)來計(jì)算。當(dāng)然,如果無法拆分或者拆分后小問題之間存在著依賴關(guān)系,那就不能用分而治之的思想。
- 能不能拆分
- 是否存在依賴
舉例:要數(shù)停車場中的所有停放車的總數(shù)量
Map
:你數(shù)一列,我數(shù)一列…這就是Map階段,人越多,能過夠同時(shí)數(shù)車的人就越多,速度就越快。
Reudece
:數(shù)完之后,聚在一起,把所有人的統(tǒng)計(jì)數(shù)加在一起,這就是Reduce合并匯總階段
理解MapReduce思想
- MapReduce的思想很好理解,關(guān)鍵在于如何基于這個(gè)思想設(shè)計(jì)出一款分布式計(jì)算程序
- 后續(xù)講解Hadoop團(tuán)隊(duì)針對MapReduce的設(shè)計(jì)構(gòu)思
- 如何針對大數(shù)據(jù)處理場景
- 構(gòu)建抽象編程模型
MapReduce借鑒了函數(shù)式
語言中的思想,再用Map
和Reduce
兩個(gè)函數(shù)提供了高層的并行編程抽象模型。
Map
:對一組數(shù)據(jù)元素進(jìn)行某種重復(fù)式的處理
Reduce
:對Map的中間結(jié)果進(jìn)行某種進(jìn)一步的結(jié)果整理
MapReduce中定義了如下的Map和Reduce兩個(gè)抽象的編程接口,由用戶編程實(shí)現(xiàn):
通過以上兩個(gè)編程接口,大家可以看出MapReduce處理的數(shù)據(jù)類型是<key,value>鍵值對
- 統(tǒng)一架構(gòu)、隱藏底層細(xì)節(jié)
分布式計(jì)算概念
- 分布式計(jì)算是一種計(jì)算方法,和集中式計(jì)算是相對的
- 隨著計(jì)算機(jī)技術(shù)的發(fā)展,有些應(yīng)用需要非常巨大的計(jì)算能力才能完成,如果采用集中式計(jì)算,需要耗費(fèi)相當(dāng)長的時(shí)間來完成
- 分布式計(jì)算將改應(yīng)用分解成許多小的部分,分配給墮胎計(jì)算機(jī)進(jìn)行處理,這樣可以節(jié)約整體計(jì)算時(shí)間,大大提高計(jì)算效率
MapReduce介紹
- Hadoop MapReduce是一個(gè)分布式計(jì)算框架,用于輕松編寫分布式應(yīng)用程序,這些應(yīng)用程序以可靠,容錯(cuò)的方式并行處理大型硬件集群(數(shù)千個(gè)節(jié)點(diǎn))上的大量數(shù)據(jù)(多TB數(shù)據(jù)集)
- Map Reduce是一種面向海量數(shù)據(jù)處理的一種指導(dǎo)思想,也是一種用于大規(guī)模數(shù)據(jù)進(jìn)行分布式計(jì)算的編程模型
MapReduce產(chǎn)生背景
由Google于2004年的論文中《MapReduce:Simplified Data Processing on Large Cluster》中提出
MapReduce特點(diǎn)
易于編程
:MapReduce提供了用于二次開發(fā)的接口,簡單地實(shí)現(xiàn)一些接口,就可以完成一個(gè)分布式程序,任務(wù)計(jì)算交給計(jì)算框架去處理,將分布式程序部署到hadoop集群上運(yùn)行,集群節(jié)點(diǎn)可以擴(kuò)展到成百上千
良好的擴(kuò)展性
:當(dāng)計(jì)算機(jī)資源不能得到滿足的時(shí)候,可以通過增加機(jī)器來擴(kuò)展計(jì)算能力,基于MapReduce的分布式計(jì)算的特點(diǎn)可以隨節(jié)點(diǎn)數(shù)目增長保持近乎于線性的增長,這也是MapReduce處理海量數(shù)據(jù)的關(guān)鍵,通過將計(jì)算節(jié)點(diǎn)增至幾百或幾千就可以很容易地處理數(shù)TB甚至數(shù)PB的離線數(shù)據(jù)
高容錯(cuò)性
:Hadoop集群式分布式搭建和部署的,任何一個(gè)機(jī)器節(jié)點(diǎn)宕機(jī)了,它可以把上面的計(jì)算任務(wù)轉(zhuǎn)移到另一個(gè)節(jié)點(diǎn)上運(yùn)行,不影響整個(gè)作業(yè)任務(wù)的完成,過程完全是Hadoop內(nèi)部完成的
適合海量數(shù)據(jù)的離線處理
:可以處理GB、TB和PB級別的數(shù)據(jù)量
MapReduce局限性
MapReduce雖然有很多優(yōu)勢,也有相對的局限性,局限性不代表不能做,而是在某些場景下實(shí)現(xiàn)效果比較差,不適合MapReduce來處
實(shí)時(shí)計(jì)算性能差
:MapReduce主要應(yīng)用于離線作業(yè),無法做到秒級的數(shù)據(jù)相應(yīng)
不能進(jìn)行流式計(jì)算
:流式計(jì)算特點(diǎn)是數(shù)據(jù)源源不斷地計(jì)算,并且數(shù)據(jù)是動(dòng)態(tài)的,而MapReduce作為一個(gè)離線計(jì)算框架,主要是針對靜態(tài)數(shù)據(jù)集的,數(shù)據(jù)是不能動(dòng)態(tài)變化的
MapReduce實(shí)例進(jìn)程
一個(gè)完整的MapReduce程序在分布式運(yùn)行時(shí)有三類
- MRAppMaster:負(fù)責(zé)整個(gè)MR程序的過程調(diào)度以及狀態(tài)協(xié)調(diào)
- MapTask:負(fù)責(zé)map姐u單的整個(gè)數(shù)據(jù)處理流程
- ReduceTask:負(fù)責(zé)reduce階段的整個(gè)數(shù)據(jù)處理流程
MapReduce階段組成
- 一個(gè)MapReduce編程模型中只包含一個(gè)Map階段和Reduce階段,或者只有Map階段
- 不能有諸多個(gè)map階段,多個(gè)reduce階段的出現(xiàn)
- 如果用戶的業(yè)務(wù)邏輯非常復(fù)雜,那就只能多個(gè)MapReduce程序串行運(yùn)行
MapReduce數(shù)據(jù)類型
- 在整個(gè)MapReduce程序中,數(shù)據(jù)都是以
kv鍵值對
的形式流轉(zhuǎn)的 - 在實(shí)際編程解決各種業(yè)務(wù)問題中,需要考慮每個(gè)階段的輸入輸出kv是什么
- MapReduce內(nèi)置了很多默認(rèn)屬性,比如排序,分組等,都和數(shù)據(jù)的k相關(guān),所以說kv的類型數(shù)據(jù)確定是極其重要的
MapReduce官方示例
概述:
實(shí)例說明:
計(jì)算圓周率Π的值
WordCount詞頻統(tǒng)計(jì)
- WordCount算是大數(shù)據(jù)計(jì)算領(lǐng)域經(jīng)典的入門案例,相當(dāng)于hello world
- 通過WordCount,可以感受背后MapReduce的執(zhí)行流程和默認(rèn)的行為機(jī)制
WordCount編程實(shí)現(xiàn)思路
-
map階段核心:把輸入的數(shù)據(jù)進(jìn)行切割,全部標(biāo)記,因此輸出就是<單詞,1>
-
shuffle階段核心:經(jīng)過MR程序內(nèi)部自帶默認(rèn)的排序分組等功能,把key相同的單詞會(huì)作為一組數(shù)據(jù)構(gòu)成新的kv對
-
reduce階段核心:處理shuffle完成的一組數(shù)據(jù),該組數(shù)據(jù)就是該代詞所有的鍵值對,對所有的1進(jìn)行累計(jì)求和,就是單詞的總數(shù)
Word程序提交
Map階段執(zhí)行流程
依托WordCount程序
MapReduce整體執(zhí)行流程圖
Map階段執(zhí)行過程
Reduce階段執(zhí)行流程
Reduce階段執(zhí)行過程
Shuffle機(jī)制
- Shuffle的本意是洗牌的意思,把一組有規(guī)則地?cái)?shù)據(jù)盡量打亂成無規(guī)則的數(shù)據(jù)
- 在MR中,Shuffle更像是洗牌的逆過程,指的是將map端的無規(guī)則輸出按指定的規(guī)則‘打亂’成具有一定規(guī)則的數(shù)據(jù),以便reduce端接收處理
- 一般吧從Map產(chǎn)生輸出開始到Reduce得到數(shù)據(jù)作為輸入之前的操作稱作shuffle
Map端的shuffle
Reduce端的shuffle
shuffle機(jī)制弊端
- Shuffle是MapReduce程序的核心和精髓
- Shuffle也是MapReduce被詬病最多的地方,MapReduce相比較于Spark、Flink計(jì)算引擎慢的原因,根Shuffle機(jī)制有很大的關(guān)系
- Shuffle中
頻繁涉及數(shù)據(jù)在內(nèi)存,磁盤之間的多次往復(fù)
YARN
介紹、架構(gòu)組件、程序提交交互流程、調(diào)度器
YARN介紹
- Apache Hadoop Yarn(Yet Another Resource Negotiatot,另一種資源協(xié)調(diào)者)是一種新的Hadoop資源管理器
- YARN是一個(gè)通用
資源管理系統(tǒng)
和調(diào)度平臺(tái)
,可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度 - 它的引入為集群在利用率、資源同意管理和數(shù)據(jù)共享等方面帶來了巨大好處
YANR是一個(gè)通用
資源管理系統(tǒng)
和調(diào)度平臺(tái)
YARN功能說明
YARN概述
YARN架構(gòu)、組件
YARN官方架構(gòu)圖
程序提交YARN交互流程
- MR作業(yè)提交,Client → RM
- 資源的申請 MrAppMaster → RM
- MR作業(yè)狀態(tài)匯報(bào) Container(Map|Reduce task) → Container(MrAppMaster)
- 節(jié)點(diǎn)的狀態(tài)匯報(bào) NM→ RM
YARN資源調(diào)度器Scheduler
如何理解資源調(diào)度
- 在理想的情況下,應(yīng)用程序提出的請求將以及得到Y(jié)ARN的批準(zhǔn),但在實(shí)際中,資源是有限的,并且在繁忙的集群中,應(yīng)用程序通常將需要等待其后寫請求得到滿足。YARN調(diào)度程序的工作是根據(jù)一些
定義的策略為應(yīng)用程序分配資源
- 在YARN中,負(fù)責(zé)給應(yīng)用分配資源的就是
Scheduler
,他是ResourceManager的核心組件之一,Scheduler完全專用于調(diào)度作業(yè),他無法跟蹤應(yīng)用程序的狀態(tài) - 一般而言,調(diào)度是一個(gè)難題,并且沒有一個(gè)最佳的策略,為此,YARN提供了多種調(diào)度器和配置的策略供選擇
調(diào)度器策略
根據(jù)需求,選擇合適的調(diào)度器
- FIFO Schedule
- Capacity Schedule
- Fair Schedule
- FIFO Scheduler
- Capacity Schedule
文章來源:http://www.zghlxwxcb.cn/news/detail-418717.html
- Fair Schedule
https://beishan.blog.csdn.net/,我是北山啦,歡迎評論交流文章來源地址http://www.zghlxwxcb.cn/news/detail-418717.html
到了這里,關(guān)于Hadoop 生態(tài)圈及核心組件簡介Hadoop|MapRedece|Yarn的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!