• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      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ìn)行了深入的研究,分別分析了它的兩個核心功能組件HDFS和MapReduce的系統(tǒng)架構(gòu)、實現(xiàn)原理和特點。

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

      Hadoop的核心技術(shù):

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

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

      (1)Hadoop的核心之HDFS

      Hadoop架構(gòu)中的master和slave在HDFS中分別扮演NameNode和DataNode的角色。一個超大文件在存儲到HDFS上時會由NameNode對其進(jìn)行分片(這里僅針對文件的內(nèi)容數(shù)據(jù)進(jìn)行分片),每一個分片是一個block,而每一個block的大小可以由用戶自己設(shè)定(一般設(shè)定為64MB)。一個文件的所有block會由NameNode決定將其存儲到哪個DataNode上。一個相同的block會存儲到不同的DataNode上(一般是3個),這種副本機(jī)制是為了保證數(shù)據(jù)的安全存儲,使其不易丟失[2]。Hadoop的HDFS由NameNode、Secondary NameNode和DataNode三部分組成,這三個部分我們都可以簡單的將其看做一臺普通的計算機(jī)。其中,在NameNode上主要存儲的數(shù)據(jù)是:文件的元數(shù)據(jù)、文件的分塊信息、文件的每個分塊與DataNode的映射信息。文件的元數(shù)據(jù)為:文件名、文件大小、文件存儲位置等除了文件內(nèi)容數(shù)據(jù)之外的所有文件數(shù)據(jù)。文件的分塊信息指的是文件被分成了多少塊。并且,這兩部分?jǐn)?shù)據(jù)是存儲在NameNode的磁盤上,文件名為fsimage,其會在HDFS啟動時被加載到NameNode的內(nèi)存中。而文件的每個分塊與DataNode的映射信息不會存儲在NameNode的磁盤上,而是在HDFS啟動時由DataNode的心跳機(jī)制上報給NameNode的內(nèi)存。在DataNode上存儲的數(shù)據(jù)是文件的內(nèi)容數(shù)據(jù),即每一個block。而且,文件的內(nèi)容數(shù)據(jù)都是存儲在DataNode的磁盤上。在啟動HDFS時,DataNode會向NameNode上報它自己存儲的所有的映射信息。對于NameNode來說,用戶的每一步操作并不會立馬修改其上的fsimage文件,而是生成一個edits文件用來存儲用戶的操作信息。edits文件的大小會有相應(yīng)的上限設(shè)置制(具體的可以自己設(shè)定,但一般設(shè)定為64MB),在edits文件大小達(dá)到上限或用戶操作時間超過了3600秒時,NameNode會將edits文件和fsimage文件同時傳給SecondaryNameNode,由SecondaryNameNode根據(jù)edits來修改fsimage(如果在Hadoop架構(gòu)中沒有設(shè)計SecondaryNameNode,則會由NameNode執(zhí)行這種合并機(jī)制。在架構(gòu)中設(shè)計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計算框架是移動計算而不是移動數(shù)據(jù),即將程序移動到其需要的數(shù)據(jù)所在的那臺服務(wù)器上,而不是將程序需要的數(shù)據(jù)調(diào)用到程序最初存在的那臺服務(wù)器上。然后,我們在編寫MapReduce程序時,可以將其簡單的分為Map子程序、Reduce子程序和主程序。其中,Map子程序的作用是將輸入的數(shù)據(jù)依照某種目的構(gòu)造成鍵值對(一種數(shù)據(jù)存儲形式)輸出。而Reduce子程序則是根據(jù)某種目的來處理Map子程序的輸出鍵值對,最后再以鍵值對的形式輸出結(jié)果。主程序則是對框架程序的運行進(jìn)行一些相關(guān)的配置。MapReduce程序中的Map和Reduce子程序會被ResourceManager分發(fā)到Hadoop集群中的不同服務(wù)器上,MapReduce計算框架大體可以分成5個部分:split、Map、Shuffle、Reduce和output。其中,split、Map和Shuffle的前半部分在Map端(可以簡單的理解為一臺計算機(jī))執(zhí)行。而Shuffle的后半部分、Reduce和output在Reduce端執(zhí)行。在一個Hadoop集群中會存在多個Map端和Reduce端。MapReduce框架的工作流程為:首先,split部分將輸入數(shù)據(jù)(即在Map端上的block)以某種形式進(jìn)行分片。然后,分片會被遞交給Map子程序。Map子程序?qū)⒎制瑪?shù)據(jù)以鍵值對的形式輸出。然后,就到了Shuffle階段,這一階段指的是從Map子程序輸出到Reduce子程序輸入這一過程。這一階段有兩部分構(gòu)成,一部分在Map端,一部分在Reduce端,而且其操作主要有三個部分:分區(qū)、排序和將數(shù)據(jù)溢出到磁盤。最后,再由Reduce子程序?qū)?shù)據(jù)進(jìn)行處理,并將最后的結(jié)果以鍵值對的形式輸出。

      Map子程序會在Map端擁有劃給它的一部分內(nèi)存(一般為64MB)來存儲它的輸出數(shù)據(jù)。當(dāng)這部分內(nèi)存被存滿的時候,這些數(shù)據(jù)會被轉(zhuǎn)存到Map端磁盤上。但在轉(zhuǎn)存的的過程中,partition程序(框架中自帶的,一般是執(zhí)行Hash模運算操作,當(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ū)⒁粋€分片的輸入數(shù)據(jù)處理完后,Map端磁盤上的數(shù)據(jù)會被依照分區(qū)標(biāo)簽傳送給相應(yīng)的Reduce子程序執(zhí)行(當(dāng)然若Map程序在處理完一個分片數(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)深度實踐[M].清華大學(xué)出版社,2012:135-180.

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

      猜你喜歡
      鍵值分片磁盤
      上下分片與詞的時空佈局
      詞學(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è)計與實現(xiàn)
      修改磁盤屬性
      一鍵直達(dá) Windows 10注冊表編輯高招
      電腦愛好者(2017年9期)2017-06-01 21:38:08
      磁盤組群組及iSCSI Target設(shè)置
      創(chuàng)建VSAN群集
      正定县| 洞口县| 昆山市| 临武县| 伊通| 崇左市| 从江县| 商城县| 辉县市| 聊城市| 巩义市| 泰安市| 衡水市| 太康县| 馆陶县| 诸城市| 临清市| 法库县| 昭苏县| 汝州市| 连城县| 会泽县| 阜新| 金阳县| 新疆| 东城区| 化州市| 通州区| 新田县| 玉龙| 五常市| 靖西县| 兰坪| 科技| 德州市| 石屏县| 资溪县| 咸宁市| 喀什市| 句容市| 东海县|