偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

開(kāi)源框架Hadoop實(shí)現(xiàn)分布式計(jì)算

開(kāi)發(fā) 架構(gòu) 分布式 Hadoop
Hadoop相信大家應(yīng)該有所了解,那么Hadoop的分布式計(jì)算你知道嗎,這里就像大家簡(jiǎn)單介紹一下分布式計(jì)算開(kāi)源框架Hadoop,歡迎大家一起來(lái)學(xué)習(xí)。

本節(jié)和大家一起學(xué)習(xí)一下分布式計(jì)算開(kāi)源框架Hadoop,本節(jié)主要內(nèi)容有Hadoop概念的介紹和Hadoop相關(guān)計(jì)算方法,希望通過(guò)本節(jié)的學(xué)習(xí),大家對(duì)Hadoop的分布式計(jì)算有一定的認(rèn)識(shí)。

分布式計(jì)算開(kāi)源框架Hadoop介紹

引用
Hadoop是Apache開(kāi)源組織的一個(gè)分布式計(jì)算開(kāi)源框架,在很多大型網(wǎng)站上都已經(jīng)得到了應(yīng)用,如亞馬遜、Facebook和Yahoo等等。對(duì)于我來(lái)說(shuō),最近的一個(gè)使用點(diǎn)就是服務(wù)集成平臺(tái)的日志分析。服務(wù)集成平臺(tái)的日志量將會(huì)很大,而這也正好符合了分布式計(jì)算的適用場(chǎng)景

什么是Hadoop?
搞什么東西之前,***步是要知道What(是什么),然后是Why(為什么),***才是How(怎么做)。但很多開(kāi)發(fā)的朋友在做了多年項(xiàng)目以后,都習(xí)慣是先How,然后What,***才是Why,這樣只會(huì)讓自己變得浮躁,同時(shí)往往會(huì)將技術(shù)誤用于不適合的場(chǎng)景。

Hadoop框架中最核心的設(shè)計(jì)就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇論文所提及而被廣為流傳的,簡(jiǎn)單的一句話解釋MapReduce就是“任務(wù)的分解與結(jié)果的匯總”。HDFS是Hadoop分布式文件系統(tǒng)(HadoopDistributedFileSystem)的縮寫(xiě),為分布式計(jì)算存儲(chǔ)提供了底層支持。

MapReduce從它名字上來(lái)看就大致可以看出個(gè)緣由,兩個(gè)動(dòng)詞Map和Reduce,“Map(展開(kāi))”就是將一個(gè)任務(wù)分解成為多個(gè)任務(wù),“Reduce”就是將分解后多任務(wù)處理的結(jié)果匯總起來(lái),得出***的分析結(jié)果。這不是什么新思想,其實(shí)在前面提到的多線程,多任務(wù)的設(shè)計(jì)就可以找到這種思想的影子。不論是現(xiàn)實(shí)社會(huì),還是在程序設(shè)計(jì)中,一項(xiàng)工作往往可以被拆分成為多個(gè)任務(wù),任務(wù)之間的關(guān)系可以分為兩種:一種是不相關(guān)的任務(wù),可以并行執(zhí)行;另一種是任務(wù)之間有相互的依賴(lài),先后順序不能夠顛倒,這類(lèi)任務(wù)是無(wú)法并行處理的?;氐酱髮W(xué)時(shí)期,教授上課時(shí)讓大家去分析關(guān)鍵路徑,無(wú)非就是找最省時(shí)的任務(wù)分解執(zhí)行方式。在分布式系統(tǒng)中,機(jī)器集群就可以看作硬件資源池,將并行的任務(wù)拆分,然后交由每一個(gè)空閑機(jī)器資源去處理,能夠極大地提高計(jì)算效率,同時(shí)這種資源無(wú)關(guān)性,對(duì)于計(jì)算集群的擴(kuò)展無(wú)疑提供了***的設(shè)計(jì)保證。(其實(shí)我一直認(rèn)為Hadoop的卡通圖標(biāo)不應(yīng)該是一個(gè)小象,應(yīng)該是螞蟻,分布式計(jì)算就好比螞蟻吃大象,廉價(jià)的機(jī)器群可以匹敵任何高性能的計(jì)算機(jī),縱向擴(kuò)展的曲線始終敵不過(guò)橫向擴(kuò)展的斜線)。任務(wù)分解處理以后,那就需要將處理以后的結(jié)果再匯總起來(lái),這就是Reduce要做的工作。

MapReduce結(jié)構(gòu)示意圖

集群上的并行計(jì)算

MapReduce計(jì)算模型非常適合在大量計(jì)算機(jī)組成的大規(guī)模集群上并行運(yùn)行。圖一中的每一個(gè)Map任務(wù)和每一個(gè)Reduce任務(wù)均可以同時(shí)運(yùn)行于一個(gè)單獨(dú)的計(jì)算結(jié)點(diǎn)上,可想而知其運(yùn)算效率是很高的,那么這樣的并行計(jì)算是如何做到的呢?

數(shù)據(jù)分布存儲(chǔ)

Hadoop中的分布式文件系統(tǒng)HDFS由一個(gè)管理結(jié)點(diǎn)(NameNode)和N個(gè)數(shù)據(jù)結(jié)點(diǎn)(DataNode)組成,每個(gè)結(jié)點(diǎn)均是一臺(tái)普通的計(jì)算機(jī)。在使用上同我們熟悉的單機(jī)上的文件系統(tǒng)非常類(lèi)似,一樣可以建目錄,創(chuàng)建,復(fù)制,刪除文件,查看文件內(nèi)容等。但其底層實(shí)現(xiàn)上是把文件切割成Block,然后這些Block分散地存儲(chǔ)于不同的DataNode上,每個(gè)Block還可以復(fù)制數(shù)份存儲(chǔ)于不同的DataNode上,達(dá)到容錯(cuò)容災(zāi)之目的。NameNode則是整個(gè)HDFS的核心,它通過(guò)維護(hù)一些數(shù)據(jù)結(jié)構(gòu),記錄了每一個(gè)文件被切割成了多少個(gè)Block,這些Block可以從哪些DataNode中獲得,各個(gè)DataNode的狀態(tài)等重要信息。如果你想了解更多的關(guān)于HDFS的信息,可進(jìn)一步閱讀參考資料:TheHadoopDistributedFileSystem:ArchitectureandDesign

分布式并行計(jì)算

Hadoop中有一個(gè)作為主控的JobTracker,用于調(diào)度和管理其它的TaskTracker,JobTracker可以運(yùn)行于集群中任一臺(tái)計(jì)算機(jī)上。TaskTracker負(fù)責(zé)執(zhí)行任務(wù),必須運(yùn)行于DataNode上,即DataNode既是數(shù)據(jù)存儲(chǔ)結(jié)點(diǎn),也是計(jì)算結(jié)點(diǎn)。JobTracker將Map任務(wù)和Reduce任務(wù)分發(fā)給空閑的TaskTracker,讓這些任務(wù)并行運(yùn)行,并負(fù)責(zé)監(jiān)控任務(wù)的運(yùn)行情況。如果某一個(gè)TaskTracker出故障了,JobTracker會(huì)將其負(fù)責(zé)的任務(wù)轉(zhuǎn)交給另一個(gè)空閑的TaskTracker重新運(yùn)行。

本地計(jì)算

數(shù)據(jù)存儲(chǔ)在哪一臺(tái)計(jì)算機(jī)上,就由這臺(tái)計(jì)算機(jī)進(jìn)行這部分?jǐn)?shù)據(jù)的計(jì)算,這樣可以減少數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸,降低對(duì)網(wǎng)絡(luò)帶寬的需求。在Hadoop這樣的基于集群的分布式并行系統(tǒng)中,計(jì)算結(jié)點(diǎn)可以很方便地?cái)U(kuò)充,而因它所能夠提供的計(jì)算能力近乎是無(wú)限的,但是由是數(shù)據(jù)需要在不同的計(jì)算機(jī)之間流動(dòng),故網(wǎng)絡(luò)帶寬變成了瓶頸,是非常寶貴的,“本地計(jì)算”是最有效的一種節(jié)約網(wǎng)絡(luò)帶寬的手段,業(yè)界把這形容為“移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更經(jīng)濟(jì)”。

Hadoop分布存儲(chǔ)與并行計(jì)算

任務(wù)粒度
把原始大數(shù)據(jù)集切割成小數(shù)據(jù)集時(shí),通常讓小數(shù)據(jù)集小于或等于HDFS中一個(gè)Block的大小(缺省是64M),這樣能夠保證一個(gè)小數(shù)據(jù)集位于一臺(tái)計(jì)算機(jī)上,便于本地計(jì)算。有M個(gè)小數(shù)據(jù)集待處理,就啟動(dòng)M個(gè)Map任務(wù),注意這M個(gè)Map任務(wù)分布于N臺(tái)計(jì)算機(jī)上并行運(yùn)行,Reduce任務(wù)的數(shù)量R則可由用戶(hù)指定。

Partition

把Map任務(wù)輸出的中間結(jié)果按key的范圍劃分成R份(R是預(yù)先定義的Reduce任務(wù)的個(gè)數(shù)),劃分時(shí)通常使用hash函數(shù)如:hash(key)modR,這樣可以保證某一段范圍內(nèi)的key,一定是由一個(gè)Reduce任務(wù)來(lái)處理,可以簡(jiǎn)化Reduce的過(guò)程。

Combine

在partition之前,還可以對(duì)中間結(jié)果先做combine,即將中間結(jié)果中有相同key的<key,value>對(duì)合并成一對(duì)。combine的過(guò)程與Reduce的過(guò)程類(lèi)似,很多情況下就可以直接使用Reduce函數(shù),但combine是作為Map任務(wù)的一部分,在執(zhí)行完Map函數(shù)后緊接著執(zhí)行的。Combine能夠減少中間結(jié)果中<key,value>對(duì)的數(shù)目,從而減少網(wǎng)絡(luò)流量。

Reduce任務(wù)從Map任務(wù)結(jié)點(diǎn)取中間結(jié)果
Map任務(wù)的中間結(jié)果在做完Combine和Partition之后,以文件形式存于本地磁盤(pán)。中間結(jié)果文件的位置會(huì)通知主控JobTracker,JobTracker再通知Reduce任務(wù)到哪一個(gè)DataNode上去取中間結(jié)果。注意所有的Map任務(wù)產(chǎn)生中間結(jié)果均按其Key用同一個(gè)Hash函數(shù)劃分成了R份,R個(gè)Reduce任務(wù)各自負(fù)責(zé)一段Key區(qū)間。每個(gè)Reduce需要向許多個(gè)Map任務(wù)結(jié)點(diǎn)取得落在其負(fù)責(zé)的Key區(qū)間內(nèi)的中間結(jié)果,然后執(zhí)行Reduce函數(shù),形成一個(gè)最終的結(jié)果文件。

任務(wù)管道

有R個(gè)Reduce任務(wù),就會(huì)有R個(gè)最終結(jié)果,很多情況下這R個(gè)最終結(jié)果并不需要合并成一個(gè)最終結(jié)果。因?yàn)檫@R個(gè)最終結(jié)果又可以做為另一個(gè)計(jì)算任務(wù)的輸入,開(kāi)始另一個(gè)并行計(jì)算任務(wù)。就是MapReduce大致的結(jié)構(gòu)圖,在Map前還可能會(huì)對(duì)輸入的數(shù)據(jù)有Split(分割)的過(guò)程,保證任務(wù)并行效率,在Map之后還會(huì)有Shuffle(混合)的過(guò)程,對(duì)于提高Reduce的效率以及減小數(shù)據(jù)傳輸?shù)膲毫τ泻艽蟮膸椭?。后面?huì)具體提及這些部分的細(xì)節(jié)。

HDFS是分布式計(jì)算的存儲(chǔ)基石,Hadoop的分布式文件系統(tǒng)和其他分布式文件系統(tǒng)有很多類(lèi)似的特質(zhì)。分布式文件系統(tǒng)基本的幾個(gè)特點(diǎn):
對(duì)于整個(gè)集群有單一的命名空間。
數(shù)據(jù)一致性。適合一次寫(xiě)入多次讀取的模型,客戶(hù)端在文件沒(méi)有被成功創(chuàng)建之前無(wú)法看到文件存在。
文件會(huì)被分割成多個(gè)文件塊,每個(gè)文件塊被分配存儲(chǔ)到數(shù)據(jù)節(jié)點(diǎn)上,而且根據(jù)配置會(huì)由復(fù)制文件塊來(lái)保證數(shù)據(jù)的安全性。本節(jié)關(guān)于分布式計(jì)算開(kāi)源框架Hadoop方面的內(nèi)容介紹完畢。

【編輯推薦】

  1. Hadoop概念及其用法專(zhuān)家講解
  2. 專(zhuān)家指導(dǎo) 如何進(jìn)行Hadoop分布式集群配置
  3. Hadoop集群與Hadoop性能優(yōu)化
  4. HadoopHBase實(shí)現(xiàn)配置簡(jiǎn)單的單機(jī)環(huán)境
  5. Hadoop配置指導(dǎo)手冊(cè)

 

責(zé)任編輯:佚名 來(lái)源: it168.com
相關(guān)推薦

2012-09-19 14:09:20

Hadoop開(kāi)源

2015-10-15 14:05:51

StormSparkMapReduce

2012-05-21 16:28:29

LinuxHadoop

2024-03-01 09:53:34

2017-09-01 05:35:58

分布式計(jì)算存儲(chǔ)

2015-06-01 10:31:43

微軟開(kāi)源rDSN

2015-05-12 13:03:54

開(kāi)源分布式存儲(chǔ)HDFS

2011-12-22 09:21:04

云計(jì)算Hadoop大數(shù)據(jù)

2023-04-19 16:51:54

分布式Primus開(kāi)源

2014-07-15 11:15:44

hadoop分布式部署

2017-08-10 10:17:32

Hadoop分布式搭建

2019-09-26 15:43:52

Hadoop集群防火墻

2016-01-06 10:22:18

開(kāi)源eBayHadoop

2019-11-15 10:16:27

分布式任務(wù)框架

2021-12-09 10:45:19

分布式事務(wù)框架

2013-03-26 13:43:08

Java分布式計(jì)算

2022-06-27 08:21:05

Seata分布式事務(wù)微服務(wù)

2021-09-09 15:45:17

機(jī)器學(xué)習(xí)人工智能Ray

2023-06-26 00:14:28

Openjob分布式任務(wù)

2009-06-19 14:23:41

RMIJava分布式計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)