国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Hadoop的深入探究

2017-04-16 11:57:29山東科技大學(xué)數(shù)學(xué)與系統(tǒng)工程學(xué)院秦懷強(qiáng)
電子世界 2017年5期
關(guān)鍵詞:鍵值分片磁盤

山東科技大學(xué)數(shù)學(xué)與系統(tǒng)工程學(xué)院 秦懷強(qiáng)

Hadoop的深入探究

山東科技大學(xué)數(shù)學(xué)與系統(tǒng)工程學(xué)院 秦懷強(qiáng)

本文對Hadoop的架構(gòu)設(shè)計(jì)進(jìn)行了深入的研究,分別分析了它的兩個(gè)核心功能組件HDFS和MapReduce的系統(tǒng)架構(gòu)、實(shí)現(xiàn)原理和特點(diǎn)。

大數(shù)據(jù);Hadoop;偽分布式;HDFS

Hadoop的核心技術(shù):

對于Hadoop這一大數(shù)據(jù)處理平臺,需要了解的是它具有的兩個(gè)核心功能:分布式存儲和分布式計(jì)算。Hadoop分布式存儲是由其文件系統(tǒng)HDFS實(shí)現(xiàn)的,而其分布式計(jì)算則是由它自帶的計(jì)算框架MapReduce實(shí)現(xiàn)的[1]。

Hadoop在部署安裝時(shí)一般會由一臺服務(wù)器作為master,一臺服務(wù)器作為SecondaryNameNode,多臺服務(wù)器作為slave。

(1)Hadoop的核心之HDFS

Hadoop架構(gòu)中的master和slave在HDFS中分別扮演NameNode和DataNode的角色。一個(gè)超大文件在存儲到HDFS上時(shí)會由NameNode對其進(jìn)行分片(這里僅針對文件的內(nèi)容數(shù)據(jù)進(jìn)行分片),每一個(gè)分片是一個(gè)block,而每一個(gè)block的大小可以由用戶自己設(shè)定(一般設(shè)定為64MB)。一個(gè)文件的所有block會由NameNode決定將其存儲到哪個(gè)DataNode上。一個(gè)相同的block會存儲到不同的DataNode上(一般是3個(gè)),這種副本機(jī)制是為了保證數(shù)據(jù)的安全存儲,使其不易丟失[2]。Hadoop的HDFS由NameNode、Secondary NameNode和DataNode三部分組成,這三個(gè)部分我們都可以簡單的將其看做一臺普通的計(jì)算機(jī)。其中,在NameNode上主要存儲的數(shù)據(jù)是:文件的元數(shù)據(jù)、文件的分塊信息、文件的每個(gè)分塊與DataNode的映射信息。文件的元數(shù)據(jù)為:文件名、文件大小、文件存儲位置等除了文件內(nèi)容數(shù)據(jù)之外的所有文件數(shù)據(jù)。文件的分塊信息指的是文件被分成了多少塊。并且,這兩部分?jǐn)?shù)據(jù)是存儲在NameNode的磁盤上,文件名為fsimage,其會在HDFS啟動時(shí)被加載到NameNode的內(nèi)存中。而文件的每個(gè)分塊與DataNode的映射信息不會存儲在NameNode的磁盤上,而是在HDFS啟動時(shí)由DataNode的心跳機(jī)制上報(bào)給NameNode的內(nèi)存。在DataNode上存儲的數(shù)據(jù)是文件的內(nèi)容數(shù)據(jù),即每一個(gè)block。而且,文件的內(nèi)容數(shù)據(jù)都是存儲在DataNode的磁盤上。在啟動HDFS時(shí),DataNode會向NameNode上報(bào)它自己存儲的所有的映射信息。對于NameNode來說,用戶的每一步操作并不會立馬修改其上的fsimage文件,而是生成一個(gè)edits文件用來存儲用戶的操作信息。edits文件的大小會有相應(yīng)的上限設(shè)置制(具體的可以自己設(shè)定,但一般設(shè)定為64MB),在edits文件大小達(dá)到上限或用戶操作時(shí)間超過了3600秒時(shí),NameNode會將edits文件和fsimage文件同時(shí)傳給SecondaryNameNode,由SecondaryNameNode根據(jù)edits來修改fsimage(如果在Hadoop架構(gòu)中沒有設(shè)計(jì)SecondaryNameNode,則會由NameNode執(zhí)行這種合并機(jī)制。在架構(gòu)中設(shè)計(jì)SecondaryNameNode的原因是為了減少NameNode的負(fù)載,使其能更加高效的處理用戶的請求)。最后,再由SecondaryNameNode將修改后的fsimage回傳給NameNode。而且,在HDFS啟動期間,這些操作會依據(jù)用戶的操作和系統(tǒng)狀況不斷進(jìn)行。

(2)Hadoop的核心之MapReduce

Hadoop架構(gòu)中的master和slave在MapReduce中分別扮演ResourceManager和NodeManager的角色。其中ResourceManager會分配用戶寫好的MapReduce程序,NodeManager則會執(zhí)行MapReduce程序。

MapReduce計(jì)算框架是移動計(jì)算而不是移動數(shù)據(jù),即將程序移動到其需要的數(shù)據(jù)所在的那臺服務(wù)器上,而不是將程序需要的數(shù)據(jù)調(diào)用到程序最初存在的那臺服務(wù)器上。然后,我們在編寫MapReduce程序時(shí),可以將其簡單的分為Map子程序、Reduce子程序和主程序。其中,Map子程序的作用是將輸入的數(shù)據(jù)依照某種目的構(gòu)造成鍵值對(一種數(shù)據(jù)存儲形式)輸出。而Reduce子程序則是根據(jù)某種目的來處理Map子程序的輸出鍵值對,最后再以鍵值對的形式輸出結(jié)果。主程序則是對框架程序的運(yùn)行進(jìn)行一些相關(guān)的配置。MapReduce程序中的Map和Reduce子程序會被ResourceManager分發(fā)到Hadoop集群中的不同服務(wù)器上,MapReduce計(jì)算框架大體可以分成5個(gè)部分:split、Map、Shuffle、Reduce和output。其中,split、Map和Shuffle的前半部分在Map端(可以簡單的理解為一臺計(jì)算機(jī))執(zhí)行。而Shuffle的后半部分、Reduce和output在Reduce端執(zhí)行。在一個(gè)Hadoop集群中會存在多個(gè)Map端和Reduce端。MapReduce框架的工作流程為:首先,split部分將輸入數(shù)據(jù)(即在Map端上的block)以某種形式進(jìn)行分片。然后,分片會被遞交給Map子程序。Map子程序?qū)⒎制瑪?shù)據(jù)以鍵值對的形式輸出。然后,就到了Shuffle階段,這一階段指的是從Map子程序輸出到Reduce子程序輸入這一過程。這一階段有兩部分構(gòu)成,一部分在Map端,一部分在Reduce端,而且其操作主要有三個(gè)部分:分區(qū)、排序和將數(shù)據(jù)溢出到磁盤。最后,再由Reduce子程序?qū)?shù)據(jù)進(jìn)行處理,并將最后的結(jié)果以鍵值對的形式輸出。

Map子程序會在Map端擁有劃給它的一部分內(nèi)存(一般為64MB)來存儲它的輸出數(shù)據(jù)。當(dāng)這部分內(nèi)存被存滿的時(shí)候,這些數(shù)據(jù)會被轉(zhuǎn)存到Map端磁盤上。但在轉(zhuǎn)存的的過程中,partition程序(框架中自帶的,一般是執(zhí)行Hash模運(yùn)算操作,當(dāng)然也可以自己定義)會對這部分?jǐn)?shù)據(jù)進(jìn)行分區(qū)。即將這些數(shù)據(jù)標(biāo)識上相應(yīng)分區(qū)的標(biāo)簽,并相鄰存儲。分區(qū)的結(jié)果是不同的分區(qū)數(shù)據(jù)最終會被分配給不同的Reduce子程序執(zhí)行。并且在執(zhí)行完分區(qū)操做后還會對這部分?jǐn)?shù)據(jù)進(jìn)行排序操作(一般是依照數(shù)據(jù)ASCII碼的大小來排序)。最后,這部分?jǐn)?shù)據(jù)會存儲到Map端磁盤上。上述操作只是一次Map子程序輸出數(shù)據(jù)存滿Map端劃分內(nèi)存的操作。多次這種操作還會導(dǎo)致combiner程序(框架中自帶,當(dāng)然用戶也可以自己定義)將Map端磁盤上的數(shù)據(jù)依據(jù)某種規(guī)則合并。當(dāng)Map子程序?qū)⒁粋€(gè)分片的輸入數(shù)據(jù)處理完后,Map端磁盤上的數(shù)據(jù)會被依照分區(qū)標(biāo)簽傳送給相應(yīng)的Reduce子程序執(zhí)行(當(dāng)然若Map程序在處理完一個(gè)分片數(shù)據(jù)的操作后Map端劃分內(nèi)存沒滿,則上述的操作都只是在Map端劃分內(nèi)存中執(zhí)行)。Reduce端也會有專門的劃分內(nèi)存(一般為64MB)來存儲Map端傳過來的數(shù)據(jù)。若一次傳輸?shù)臄?shù)據(jù)沒存滿這部分內(nèi)存,則這部分?jǐn)?shù)據(jù)直接交付給Reduce子程序處理,若在一次傳輸過程中這部分內(nèi)存滿了,則這部分?jǐn)?shù)據(jù)會被轉(zhuǎn)存到Reduce端磁盤上。在轉(zhuǎn)存的過程中會依據(jù)某種規(guī)則對數(shù)據(jù)執(zhí)行合并操作,然后,在Reduce端接收完Map端一次數(shù)據(jù)傳輸后,Reduce端磁盤上的數(shù)據(jù)會被交付給Reduce子程序來處理。以上內(nèi)容即是MapReduce框架中Shuffle部分的具體操作。

[1]文艾,王磊.高可用性的HDFS-Hadoop分布式文件系統(tǒng)深度實(shí)踐[M].清華大學(xué)出版社,2012:135-180.

[2]陳全,鄧倩妮.異構(gòu)環(huán)境下自適應(yīng)的MapReduce調(diào)度[J].計(jì)算機(jī)工程與科學(xué),2009,31:169-175.

猜你喜歡
鍵值分片磁盤
上下分片與詞的時(shí)空佈局
詞學(xué)(2022年1期)2022-10-27 08:06:12
分片光滑邊值問題的再生核方法
CDN存量MP4視頻播放優(yōu)化方法
非請勿進(jìn) 為注冊表的重要鍵值上把“鎖”
解決Windows磁盤簽名沖突
電腦愛好者(2019年2期)2019-10-30 03:45:31
基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
修改磁盤屬性
一鍵直達(dá) Windows 10注冊表編輯高招
電腦愛好者(2017年9期)2017-06-01 21:38:08
磁盤組群組及iSCSI Target設(shè)置
創(chuàng)建VSAN群集
丰都县| 德清县| 江北区| 天峨县| 普陀区| 交城县| 海丰县| 巴彦淖尔市| 本溪市| 井研县| 云林县| 宁海县| 内江市| 米泉市| 临漳县| 永济市| 绥棱县| 公安县| 河南省| 茂名市| 滕州市| 淮滨县| 惠来县| 来安县| 富锦市| 辽中县| 鄯善县| 巫山县| 辽宁省| 鹤庆县| 浦江县| 邯郸县| 长岛县| 九寨沟县| 睢宁县| 宁强县| 南投市| 隆德县| 盐亭县| 双江| 吕梁市|