Hadoop基礎(chǔ)概念

一、基本概念與模型

達(dá)川網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,達(dá)川網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為達(dá)川超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的達(dá)川做網(wǎng)站的公司定做!

1、大數(shù)據(jù)

結(jié)構(gòu)化數(shù)據(jù):有嚴(yán)格定義

半結(jié)構(gòu)化數(shù)據(jù):html、json、xml等,有結(jié)構(gòu)但沒有約束的文檔

非結(jié)構(gòu)化數(shù)據(jù):沒有元數(shù)據(jù),比如說日志類文檔

搜索引擎:ELK,搜索組件、索引組件組成,用來搜索數(shù)據(jù),保存在分布式存儲中

爬蟲程序:搜索的是半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)

需要+高效存儲能力、高效的分析處理平臺

?

2、Hadoop

Hadoop是用Java語言開發(fā)的,是對谷歌公司這3篇論文開發(fā)出來的山寨版

2003年:The Google File System -->HDFS

2004年:MapReduce:Simplified Data Processing On Large Cluster -->MapReduce

2006年:BigTable:A Distributed Storage System for Structure Data -->Hbase

HDFS+MapReduce=Hadoop

HDFS:Hadoop的分布式文件系統(tǒng),有中心節(jié)點(diǎn)式存儲數(shù)據(jù)

MapReduce:面向大數(shù)據(jù)并行處理的計算模型、框架和平臺

HBase:Hadoop的database數(shù)據(jù)庫

官方網(wǎng)址:hadoop.apache.org

?

二、HDFS

1、HDFS問題

存在名稱節(jié)點(diǎn):NN:NameNode和第二名稱節(jié)點(diǎn)SNN:Secondary NameNode

?????? NN數(shù)據(jù)存儲在內(nèi)存中,由于數(shù)據(jù)在內(nèi)存中變化十分快,硬盤存儲跟不上內(nèi)存的變化速度,所以通過類似于數(shù)據(jù)庫事務(wù)日志的機(jī)制,向硬盤存儲映像文件,在此過程中 ,追加日志不斷被清空不斷被寫入,所以當(dāng)NN服務(wù)器掛了,至少不會丟失太多文件,但是由于文件元數(shù)據(jù)在宕機(jī)后可能有不統(tǒng)一的情況造成文件校驗,數(shù)據(jù)量過大會花費(fèi)大量時間。

?????? SNN為輔助名稱節(jié)點(diǎn),NN的追加日志放到了共享存儲上,使SNN能訪問,當(dāng)NN宕機(jī)后,SNN會可以根據(jù)追加日志及時啟動,至少優(yōu)化了只有一個NN時候的文件校驗時間。

在Hadoop2或者HBase2版本之后,可以將數(shù)據(jù)共享存放到zookeeper,幾個節(jié)點(diǎn)通過zookeeper同時獲取到視圖,很好的解決了剛才的問題,也能夠進(jìn)行高可用設(shè)置了。

2、HDFS數(shù)據(jù)節(jié)點(diǎn)工作原理:

存在數(shù)據(jù)節(jié)點(diǎn):DN:DataNode

?????? 當(dāng)有數(shù)據(jù)存儲時,HDFS文件系統(tǒng)除了存儲DN,會再尋找兩個數(shù)據(jù)節(jié)點(diǎn)進(jìn)行存儲作為副本,數(shù)據(jù)節(jié)點(diǎn)之間以鏈?zhǔn)较噙B,即有第一份才有第二份,有第二份才有第三份,每次存儲結(jié)束后節(jié)點(diǎn)會向前數(shù)據(jù)點(diǎn)報告,向元數(shù)據(jù)塊或者服務(wù)器報告自己的狀態(tài)和數(shù)據(jù)塊列表。當(dāng)某一點(diǎn)數(shù)據(jù)丟失,此時鏈?zhǔn)綌?shù)據(jù)會重新啟動,補(bǔ)足丟失的數(shù)據(jù)塊。

?

三、MapReduce

1、JobTracker:作業(yè)追蹤器

每一個負(fù)責(zé)運(yùn)行作業(yè)的節(jié)點(diǎn),在MapReduce里叫任務(wù)追蹤器,TaskTracker

2、每一個節(jié)點(diǎn)都要運(yùn)行兩類進(jìn)程:

DataNode:負(fù)責(zé)存儲或者刪除數(shù)據(jù)等數(shù)據(jù)管理操作

TaskTracker:負(fù)責(zé)完成隊列處理,屬于Hadoop集群

3、程序特點(diǎn)

傳統(tǒng)程序方案:程序在哪,數(shù)據(jù)就加載在哪

Hadoop方案:數(shù)據(jù)在哪,程序就在哪里跑

4、Hadoop分布式運(yùn)行處理框架

任務(wù)提交可能會同時由N個人提交N個作業(yè),每個人的作業(yè)不一定運(yùn)行在所有節(jié)點(diǎn)上,有可能是在一部分節(jié)點(diǎn)上,甚至可能是一個節(jié)點(diǎn)上,為了能夠限制一個節(jié)點(diǎn)上不要接入過多的任務(wù),所以我們通過task slot,任務(wù)槽,來確定一個節(jié)點(diǎn)最多只能運(yùn)行多少份任務(wù)

5、函數(shù)式編程:MapReduce參考了這種運(yùn)行機(jī)制

Lisp,ML函數(shù)式編程語言:高階函數(shù)

map,fold

map:把一個任務(wù)映射為多個任務(wù),把一個函數(shù)當(dāng)作為一個參數(shù),并將其應(yīng)用于列表中的

所有元素,會生成一個結(jié)果列表,即可映射為多個函數(shù)。

map(f())

fold:不斷地把得到的結(jié)果折疊到函數(shù)上,接收兩個參數(shù):函數(shù),初始值。

fold(g(),init):首先結(jié)合init初始值,通過函數(shù)g()得到g(init)的結(jié)果,然后將得到的結(jié)果g(init)在第二輪將作為初始值,通過函數(shù)g()得到g(g(init))的結(jié)果,以此類推最后會得到一個最終結(jié)果。

6、MapReduce過程

<1>mapper:每一個mapper就是每一個實例,每一個mapper處理完會生成一個列表,相當(dāng)于map函數(shù)的過程,mapper接收數(shù)據(jù)如果是鍵值數(shù)據(jù)則直接使用,如果不是鍵值數(shù)據(jù)會先轉(zhuǎn)換為鍵值數(shù)據(jù)

<2>reducer:當(dāng)所有mapper運(yùn)行完以后才會進(jìn)行reducer,相當(dāng)于fold函數(shù)的過程,reducer可能不止一個,reducer只處理鍵值型數(shù)據(jù),接收到的數(shù)據(jù)做折疊

<3>reducer在折疊后的數(shù)據(jù)依舊是鍵值型數(shù)據(jù),折疊過程叫做shuttle and sort,此過程十分重要

?

便于理解:同濟(jì)一本書每個單詞出現(xiàn)的次數(shù):

mapper:每100頁一個單位,比如說5 mappers,用于拆分成為單詞,比如說this 1,is 1,this 1,how 1,單詞逐個拆分,mapper處理后的為k-v型數(shù)據(jù)

reducer:reducer只處理鍵值型數(shù)據(jù),將拆分出來的單詞傳遞進(jìn)reducer中進(jìn)行統(tǒng)計處理與排序,將鍵相同的數(shù)據(jù)發(fā)往同一個reducer中,最后的結(jié)果this 500,is 200等等,結(jié)果依舊為kv型數(shù)據(jù)

shuffle and sort:接收mapper后,reducer將單詞出現(xiàn)的次數(shù)進(jìn)行鍵值數(shù)據(jù)統(tǒng)計計算的過程叫做shuffle and sort

?

7、Hadoop數(shù)據(jù)圖

Hadoop只提供了數(shù)據(jù)存儲平臺,任何作業(yè)、任何數(shù)據(jù)程序處理必須由Hadoop開發(fā)人員寫MapReduce程序調(diào)用才可供使用,mapper的具體任務(wù)是什么,reducer用什么,都取決于開發(fā)人員的定義是什么。

(1)partitioner:分區(qū)器,具備決定將mapper鍵值通過shuffle and sort過程發(fā)送給哪個reducer的功能

Hadoop基礎(chǔ)概念

(2)combiner:如果mapper產(chǎn)生的鍵值數(shù)據(jù)中的鍵相同,那么將合并鍵,否則不合并,分散發(fā)送,同樣由hadoop開發(fā)人員開發(fā)。其輸入鍵和輸出鍵必須保證一致。

Hadoop基礎(chǔ)概念

(3)多個reduce時:

Hadoop基礎(chǔ)概念

sort:每一個map在本地排序叫做sort

(4)單個reduce時:

Hadoop基礎(chǔ)概念

(5)shuffle and sort階段:

Hadoop基礎(chǔ)概念

(6)作業(yè)提交請求過程:

Hadoop基礎(chǔ)概念

(7)JobTracker內(nèi)部結(jié)構(gòu)

Hadoop基礎(chǔ)概念

作用:作業(yè)調(diào)度、管理監(jiān)控等等,所以運(yùn)行時JobTracker會非常繁忙,它由此也成為了性能瓶頸,不過在MRv2版本后,作業(yè)調(diào)度、管理和監(jiān)控功能被切割

(8)版本更迭

MRv1(Hadoop2) --> MRv2(Hadoop2)

MRv1:集群資源管理器、數(shù)據(jù)處理程序

MRv2:

YARN:集群資源管理器

MRv2:數(shù)據(jù)處理程序

Tez:執(zhí)行引擎

MR:批處理作業(yè)

RT Stream Graph:實時流式圖處理,圖狀算法數(shù)據(jù)結(jié)構(gòu)

Hadoop基礎(chǔ)概念

(9)第二代hadoop資源任務(wù)運(yùn)行流程

Hadoop基礎(chǔ)概念

mapreduce把 資源管理和任務(wù)運(yùn)行二者隔離開了,程序運(yùn)行由自己的Application Master負(fù)責(zé),而資源分配由Resource Manager進(jìn)行。所以當(dāng)一個客戶端提交一個任務(wù)時,Resource Manager會詢問每一個Node Manager有沒有空閑的容器來運(yùn)行程序。如果有,它去找有的這個節(jié)點(diǎn),來啟動這個主控進(jìn)程Application Master。然后App Mstr向Resource Manager申請資源任務(wù),Resource Manager分配好資源任務(wù)后會告訴App Mstr,之后App Mstr可以使用contrainer來運(yùn)行作業(yè)了。

每一個container在運(yùn)行過程中都會將反饋?zhàn)约旱淖鳂I(yè)任務(wù)給App Mstr,當(dāng)container中有任務(wù)結(jié)束了,App Mstr也會報告給Resource Manager,Resource Manager會將資源收回來

RM:Resource Manager

NM:Node Manager

AM:Application Manager

分享題目:Hadoop基礎(chǔ)概念
網(wǎng)頁地址:http://muchs.cn/article2/jcjsoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站企業(yè)網(wǎng)站制作、Google網(wǎng)站收錄、用戶體驗、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站