高容錯(cuò)分布式計(jì)算系統(tǒng),,就是要讓系統(tǒng)高可用。您的問(wèn)題可以理解為如何設(shè)計(jì)高可用的分布式計(jì)算系統(tǒng),。 高可用的分布式計(jì)算系統(tǒng)的設(shè)計(jì)通常需要做到:冗余,,故障自動(dòng)轉(zhuǎn)移,狀態(tài)同步,,資源調(diào)度,,系統(tǒng)自檢,故障恢復(fù),,伸縮方便等,。。,。 我們可以參考當(dāng)下比較流行的分布式計(jì)算框架,,看看別人如何設(shè)計(jì)的。例如:MapReduce,Spark,,Storm等,。 MapReduce:分布式離線(xiàn)計(jì)算框架。在運(yùn)行的時(shí)候根據(jù)文件塊自動(dòng)分配計(jì)算節(jié)點(diǎn),,和線(xiàn)程,,在運(yùn)行的過(guò)程中如果某個(gè)節(jié)點(diǎn)失敗,則會(huì)嘗試在別的節(jié)點(diǎn)去執(zhí)行,。 適合數(shù)據(jù)復(fù)雜度運(yùn)算 不適合算法復(fù)雜度的運(yùn)算 不適合實(shí)時(shí)計(jì)算,、流式計(jì)算、DAG有向圖計(jì)算 綜上,,要求算法足夠簡(jiǎn)單,,數(shù)據(jù)可以足夠大! MapReduce包含四個(gè)組成部分 Client, JobTracker,, TaskTracker ,,Task。
hadoop-MapReduce模型實(shí)現(xiàn)圖 Map流程: 1,,Inputformat:首先將 HDFS 中的數(shù)據(jù)以 Split 方式作為 MapReduce 的輸入,。Mapper:每個(gè)Mapper 將輸入(key,value)數(shù)據(jù)解析成輸出(key,value)。 2,,Partition:根據(jù)key或value及reduce的數(shù)量來(lái)決定當(dāng)前的這對(duì)輸出數(shù)據(jù)最終應(yīng)該交由哪個(gè)reduce task處理( Partitioner接口,,默認(rèn)自動(dòng)完成,可定制),。 3,,Combine:緩存溢寫(xiě)時(shí)完成,如果有很多個(gè)相同key/value對(duì)需要發(fā)送到某個(gè)reduce端去,,那么需要將這些key/value值拼接到一塊,,減少與partition相關(guān)的索引記錄(reducer接口,默認(rèn)自動(dòng)完成,,可定制) ,。 4,Merge:溢寫(xiě)文件合并,,同時(shí)再次執(zhí)行Combiner(默認(rèn)自動(dòng)完成),。 Map 流程 Reduce流程 1,Copy:簡(jiǎn)單地拉取數(shù)據(jù) Merge:同map 2,,Merge,文件合并 3,,Reducer:每個(gè)Reducer將輸入(key,value)數(shù)據(jù)解析成輸出(key,value) 把結(jié)果放到HDFS上 Reduce流程 spark:分布式在線(xiàn)批量計(jì)算框架,。可以實(shí)時(shí)執(zhí)行批量計(jì)算命令。依賴(lài)內(nèi)存資源,。將RDD存放于內(nèi)存,,方面后續(xù)計(jì)算能夠持續(xù)復(fù)用。 spark工作示意圖 Storm是實(shí)時(shí)流式計(jì)算框架,。主要是無(wú)法忍受MapReduce的高延遲,。Storm的核心組件有Nimbus、Supervisor,、Worker,、Task、Topology,、Stream,、Spout、Bolt,、Stream grouping,、Reliability。 |
|
來(lái)自: 昵稱(chēng)63557093 > 《待分類(lèi)》