一個(gè)可以做行程的網(wǎng)站最新新聞熱點(diǎn)事件
一、概念
1.MapReduce 設(shè)計(jì)就是“計(jì)算向數(shù)據(jù)靠攏”,而不是“數(shù)據(jù)向計(jì)算靠攏”,因?yàn)橐苿?dòng),數(shù)據(jù)需要大量的網(wǎng)絡(luò)傳輸開銷。
2.Hadoop MapReduce是分布式并行編程模型MapReduce的開源實(shí)現(xiàn)。
3.特點(diǎn)
(1)非共享式,容錯(cuò)性好。
(2)普通PC機(jī),便宜,擴(kuò)展性好。
(3)只有what,沒有how,簡(jiǎn)單。
(4)使用場(chǎng)景:批處理、非實(shí)時(shí)、數(shù)據(jù)密集型。
4.MapReduce ?采用“分而治之”策略
一個(gè)存儲(chǔ)在分布式文件系統(tǒng)中的 大規(guī)模數(shù)據(jù)集,會(huì)被切分成許多獨(dú)立的分片 (split), ?這些分片可以被多個(gè)Map 任務(wù)并行處理。
5.MapReduce 1.0體系結(jié)構(gòu)
(1)Hadoop MapReduce采用Master/Slave結(jié)構(gòu)。
Master:是整個(gè)集群的唯一的全局管理者,功能是作業(yè)管理、狀態(tài)監(jiān)控和任務(wù)調(diào)度等,即MapReduce中的JobTracker。
Slave:負(fù)責(zé)任務(wù)的執(zhí)行和任務(wù)狀態(tài)的報(bào)告,即MapReduce中的TaskTracker。
(2)MapReduce體系結(jié)構(gòu)主要由四個(gè)部分組成,分別是: Client 、JobTracker 、TaskTracker 以及Task。
(3)TaskTracker是JobTracker和Task之間的橋梁:
(4)JobTracker負(fù)責(zé)很多任務(wù):
a.負(fù)責(zé)資源監(jiān)控和作業(yè)調(diào)度
b.監(jiān)控所有TaskTracker與Job的健康狀況
c.跟蹤任務(wù)的執(zhí)行進(jìn)度、資源使用量等信息,并將這些信息告訴任務(wù)調(diào)度(TaskScheduler)。 ???
![]()
6.map函數(shù)和reduce函數(shù):
(1)map接收原始的鍵值對(duì)進(jìn)行一層處理,然后reduce只接受處理過的鍵值對(duì),進(jìn)行二次處理,大致流程如下:
(2)可以連著使用:
Map是映射,負(fù)責(zé)數(shù)據(jù)的過濾分法,將原始數(shù)據(jù)轉(zhuǎn)化為鍵值對(duì);
Reduce是合并,將具有相同key值的value進(jìn)行處理后再輸出新的鍵值對(duì)作為最終結(jié)果。
(3)Map 和Reduce操作需要我們自己定義相應(yīng)Map 類和Reduce 類,而shuffle則是系統(tǒng)自動(dòng)幫我們實(shí)現(xiàn)的。
(4)shuffle可以簡(jiǎn)單的理解為map的售后,但是同樣是reduce的“售前”。
在map端主要是寫入緩存,溢寫操作,合并操作。
在reduce端主要是詢問“前輩”map任務(wù)完成了嗎,如果溢寫了就幫reduce提前歸并好然后發(fā)給reduce。
7.slot
(1)是執(zhí)行 Map 或 Reduce 任務(wù)的計(jì)算資源單位。
(2)Map slot 用于處理輸入數(shù)據(jù)的切片并生成中間結(jié)果,而 Reduce slot 則用于處理中間結(jié)果并生成最終輸出。
(3)每個(gè)節(jié)點(diǎn)都有一定數(shù)量的 Map slot 和 Reduce slot,它們的數(shù)量可以根據(jù)集群配置和需求動(dòng)態(tài)分配。
(4)有效地利用這些 slot 可以提升 MapReduce 作業(yè)的執(zhí)行效率和性能。
二、習(xí)題
主觀題
1. 試畫出使用MapReduce對(duì)英語段落 ”Whatever is worth doing best Whatever is worth doing well”進(jìn)行單詞統(tǒng)計(jì)過程
答:
(1)Map階段:
Mapper將輸入的英語段落按照空格分割為單詞,并對(duì)每個(gè)單詞生成一個(gè)鍵值對(duì),其中鍵為單詞,值為1。
輸入: "Whatever is worth doing best Whatever is worth doing well"
輸出中間鍵值對(duì):
(Whatever, 1), (is, 1), (worth, 1), (doing, 1), (best, 1), (Whatever, 1), (is, 1), (worth, 1), (doing, 1), (well, 1)
(2)Shuffle階段:
對(duì)中間鍵值對(duì)按照鍵進(jìn)行排序和分組,以便后續(xù)Reduce階段對(duì)同一個(gè)鍵的值進(jìn)行聚合處理。此處不需要額外的操作,因?yàn)镸apper已經(jīng)按照單詞生成了鍵值對(duì)。
(3) Reduce階段:
Reducer對(duì)每個(gè)單詞的鍵值對(duì)進(jìn)行聚合,計(jì)算每個(gè)單詞出現(xiàn)的總次數(shù)。
輸入中間鍵值對(duì):
(Whatever, [1, 1]), (best, [1]), (doing, [1, 1]), (is, [1, 1]), (well, [1]), (worth, [1, 1])
輸出最終結(jié)果:
(Whatever, 2), (best, 1), (doing, 2), (is, 2), (well, 1), (worth, 2)
4. 使用MapReduce完成對(duì)下表中及格同學(xué)的篩選,描述編程設(shè)計(jì)實(shí)現(xiàn)過程(文字描述即可,不用寫代碼)。
答:
(1)Map階段:
Mapper函數(shù)讀取每一行學(xué)生記錄,將學(xué)號(hào)和成績(jī)作為輸入。
對(duì)于每個(gè)學(xué)生記錄,Mapper檢查成績(jī)是否及格(大于等于60分)。
如果成績(jī)及格,Mapper輸出鍵值對(duì)(學(xué)號(hào),成績(jī))。
(2)Shuffle階段
中間結(jié)果根據(jù)學(xué)號(hào)進(jìn)行排序和分組,以便后續(xù)Reduce階段對(duì)每個(gè)學(xué)生的成績(jī)進(jìn)行聚合處理。
(3)Reduce階段:
Reducer函數(shù)接收每個(gè)學(xué)生的學(xué)號(hào)和成績(jī)列表作為輸入。
對(duì)于每個(gè)學(xué)生,Reducer檢查其成績(jī)列表中是否有成績(jī)及格。
如果成績(jī)列表中有成績(jī)及格,Reducer輸出該學(xué)生的學(xué)號(hào)和成績(jī)。
總感覺reduce啥也沒干。。。。。
7.分析描述Shuffle的執(zhí)行過程。
答:
(1)Map任務(wù)輸出:Map任務(wù)生成鍵值對(duì),并根據(jù)鍵的哈希值將其分區(qū)。
(2)本地排序:每個(gè)分區(qū)的鍵值對(duì)在本地磁盤上按鍵排序。
(3)數(shù)據(jù)傳輸:Reduce任務(wù)從各個(gè)Map任務(wù)所在的節(jié)點(diǎn)上拉取(pull)屬于自己的分區(qū)數(shù)據(jù)。
(4) 數(shù)據(jù)合并:Reduce任務(wù)將拉取到的數(shù)據(jù)進(jìn)行合并,準(zhǔn)備進(jìn)行Reduce處理。
單選題
2. Shuffle過程不包括下列哪個(gè)過程?()
A. 分區(qū)
B. 排序
C. 合并歸并
D. 切分
正確答案:D
切分應(yīng)該是map干的吧,雖然沒說
3. Map和Reduce函數(shù)都是以( )作為輸入。
A. Key
B. Text
C. 鍵值對(duì)
D. 文件塊
正確答案:C
5. Reduce函數(shù)的任務(wù)是()
A. 通過Hash函數(shù)對(duì)數(shù)據(jù)進(jìn)行排序
B. 對(duì)數(shù)據(jù)進(jìn)行分區(qū)
C. 將輸入的一系列具有相同Key的鍵值對(duì)以某種方式組合起來,輸出處理后的鍵值對(duì)
D. 對(duì)數(shù)據(jù)進(jìn)行解析得到鍵值對(duì)
正確答案:C
1.MapReduce的核心思想是?( )
A. 分而治之
B. 流計(jì)算
C. 分布式存儲(chǔ)
D. 批處理
正確答案: A
2.MapReduce處理海量數(shù)據(jù)的時(shí)候,中間數(shù)據(jù)存儲(chǔ)在()
A. 內(nèi)存
B. 磁盤
C. ResourceManager
D. Container
正確答案: B
3.屬于MapReduce的設(shè)計(jì)理念的是。()
A. 數(shù)據(jù)向計(jì)算靠攏
B. 自行進(jìn)行工作調(diào)度
C. 計(jì)算向數(shù)據(jù)靠攏
D. 無需負(fù)載均衡
正確答案: C
4.Map函數(shù)將輸入的元素轉(zhuǎn)換成鍵值對(duì),下列說法不正確的是( )
A. 一個(gè)Map函數(shù)只能轉(zhuǎn)換出一個(gè)鍵值對(duì)
B. Map轉(zhuǎn)換出的鍵沒有唯一性
C. 同一輸入元素,可以通過一個(gè)Map任務(wù)生成具有相同鍵的多個(gè)鍵值對(duì)
D. 鍵不可以作為輸出的身份標(biāo)識(shí)
正確答案: A
5.每個(gè)MapReduce程序都需要一個(gè)()
A. Task
B. Partitioner
C. Job
D. Combiner
正確答案: C
多選題
6. 編寫MapReduce程序時(shí),()。
A. 編寫Map處理邏輯
B. 編寫Reduce處理邏輯
C. 編寫main方法
D. 提前生成輸出文件夾
正確答案:A,B,C