常州企業(yè)網(wǎng)站建設(shè)常見(jiàn)的網(wǎng)絡(luò)營(yíng)銷工具有哪些
一、Mapreduce工作流程
(1)數(shù)據(jù)切片Split。數(shù)據(jù)切片數(shù)決定maptask并行度,默認(rèn)情況下,一個(gè)切片大小=塊大小。切片不是針對(duì)整體數(shù)據(jù)集,而是針對(duì)每一個(gè)文件單獨(dú)切片,所以會(huì)有小文件問(wèn)題(CombineTextInputFormat可用于小文件過(guò)多的場(chǎng)景,可以將多個(gè)小文件在邏輯上劃分到一個(gè)切片中)。
(2)map。每個(gè)maptask并行執(zhí)行,調(diào)用map方法對(duì)數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯處理,并輸出kv鍵值對(duì)。
(3)shuffle。shuffle過(guò)程從map方法輸出outk outv鍵值對(duì)開(kāi)始,鍵值對(duì)會(huì)被寫入到環(huán)形緩沖區(qū)中,同時(shí)記錄該條數(shù)據(jù)的分區(qū)信息(環(huán)形緩沖區(qū)一半記錄數(shù)據(jù)的元數(shù)據(jù)信息,一半記錄真實(shí)數(shù)據(jù)信息)當(dāng)環(huán)形緩沖區(qū)寫到80%的時(shí)候,環(huán)形緩沖區(qū)開(kāi)始反向?qū)懭霐?shù)據(jù),并且已寫入的80%數(shù)據(jù)開(kāi)始溢寫到磁盤(在真正寫入磁盤之前,會(huì)在內(nèi)存中首先按照key進(jìn)行快速排序),一個(gè)mapTask可能會(huì)有多個(gè)溢寫文件,這些文件在進(jìn)入reduce之前,還會(huì)進(jìn)行歸并排序成一個(gè)大的溢寫文件(如果有combiner,會(huì)在這先進(jìn)行部分聚合)。reduceTask會(huì)從不同的mapTask主動(dòng)拉取自己分區(qū)的數(shù)據(jù),并對(duì)這些來(lái)自不同mapTask的數(shù)據(jù)再次進(jìn)行歸并排序,合并成一個(gè)大的文件,到這里shuffle階段就結(jié)束了,之后就是調(diào)用reduce方法完成最終的聚合操作了。
(4)reduce。調(diào)用reduce方法,完成最后的邏輯聚合。
二、MapTask工作機(jī)制
一個(gè)MapTask總體上包含read、map、collect、溢寫、merge五個(gè)階段。
(1)read階段。讀取數(shù)據(jù)。
(2)map階段。調(diào)用map方法處理輸入的kv鍵值對(duì)。
(3)collect階段。將map計(jì)算結(jié)果進(jìn)行收集,寫入到環(huán)形緩沖區(qū)。
(4)溢寫階段。環(huán)形緩沖區(qū)達(dá)到80%時(shí)會(huì)進(jìn)行溢寫,注意溢寫前會(huì)先進(jìn)行快排。
(5)merge階段。一個(gè)maptask的多個(gè)溢寫文件進(jìn)行歸并,形成一個(gè)大的溢寫文件。
三、ReduceTask工作機(jī)制
一個(gè)ReduceTask總體上包含Copy、Sort、reduce三個(gè)階段。
(1)Copy階段。從不同的Maptask主動(dòng)拷貝自己分區(qū)的數(shù)據(jù)文件。
(2)Sort階段。對(duì)來(lái)自不同maptask的文件進(jìn)行歸并排序,整合為一個(gè)文件。
(3)reduce階段。調(diào)用reduce方法,按照聚合邏輯進(jìn)行聚合運(yùn)算。
四、Shuffle機(jī)制
map方法結(jié)束到reduce方法之前的過(guò)程都屬于shuffle過(guò)程。shuffle過(guò)程的理解主要就是三次排序過(guò)程(一次快排,兩次歸并)。
(1)一個(gè)maptask在溢寫每個(gè)文件到磁盤前,都會(huì)在內(nèi)存中對(duì)不同的分區(qū)內(nèi)部進(jìn)行快排,保證了每個(gè)溢寫文件內(nèi)部的分區(qū)內(nèi)有序
(2)一個(gè)maptask可能會(huì)有多個(gè)溢寫文件,每個(gè)溢寫文件都劃分了分區(qū)且分區(qū)內(nèi)有序,這些溢寫文件會(huì)進(jìn)行歸并排序合并成一個(gè)大的溢寫文件,保留分區(qū)且分區(qū)內(nèi)有序
(3)reduceTask會(huì)主動(dòng)從不同的maptask拉取自己分區(qū)的數(shù)據(jù),從不同maptask拷貝的文件在進(jìn)入reduce方法之前還會(huì)進(jìn)行一次歸并排序。
五、部分調(diào)優(yōu)參數(shù)
(1)shuffle中的緩沖區(qū)大小會(huì)影響溢寫次數(shù),緩沖區(qū)越大,溢寫次數(shù)越少,磁盤的io越少,執(zhí)行速度越快。緩沖區(qū)大小可以通過(guò)mapreduce.task.io.sort.mb參數(shù)進(jìn)行調(diào)整。