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

?

淺析基于HDFS的分布式Namenode模型

2016-06-06 22:52:38司雅楠阮寧
電腦知識(shí)與技術(shù) 2016年6期

司雅楠++阮寧

摘要:大量的信息以數(shù)據(jù)的形式進(jìn)行存儲(chǔ)和處理,如果能夠以最佳的方式存儲(chǔ)、訪問(wèn)和分析所有產(chǎn)生的數(shù)據(jù),就可以創(chuàng)造出價(jià)值。面對(duì)如此海量的數(shù)據(jù),Hadoop文件系統(tǒng)(HDFS,Hadoop Distributed File System)展現(xiàn)出了它的優(yōu)越性。但是基于單一NameNode節(jié)點(diǎn)的HDFS文件系統(tǒng)表現(xiàn)出了單點(diǎn)失效、單點(diǎn)瓶頸和擴(kuò)展性差幾個(gè)問(wèn)題。為了解決單一NameNode成為整個(gè)集群性能瓶頸的問(wèn)題,本文提出一種基于HDFS的分布式NameNode模型,并對(duì)分布式NameNode結(jié)構(gòu)的總體設(shè)計(jì)進(jìn)行介紹。

關(guān)鍵詞:HDFS;單一NameNode;分布式NameNode

中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)06-0239-03

信息的數(shù)據(jù)化使得每天都有大量的數(shù)據(jù)產(chǎn)生,據(jù)統(tǒng)計(jì)現(xiàn)在人們創(chuàng)造與復(fù)制的數(shù)據(jù)量每?jī)赡昃蜁?huì)增加一倍。這種增長(zhǎng)趨勢(shì)仍在加速,接下來(lái)幾年中,數(shù)據(jù)始終保持每年50%的增長(zhǎng)速度。這些數(shù)據(jù)的數(shù)量之大種類(lèi)之多,已經(jīng)無(wú)法用傳統(tǒng)的數(shù)據(jù)處理工具加以分析,這也促進(jìn)了新的數(shù)據(jù)處理技術(shù)應(yīng)運(yùn)而生。以云計(jì)算[1]為基礎(chǔ)的信息數(shù)據(jù)挖掘技術(shù),可低成本、高效率地將這些數(shù)量巨大、結(jié)構(gòu)多樣的終端數(shù)據(jù)存儲(chǔ)下來(lái),實(shí)時(shí)地進(jìn)行分析和計(jì)算。

大數(shù)據(jù)[2]和云計(jì)算兩個(gè)概念相輔相成,大數(shù)據(jù)中蘊(yùn)含了豐富的信息和潛在價(jià)值,而云計(jì)算的出現(xiàn),幫助我們更好的對(duì)大數(shù)據(jù)中的價(jià)值進(jìn)行分析,獲得新的認(rèn)知、創(chuàng)造新的價(jià)值。Hadoop作為基礎(chǔ)云計(jì)算平臺(tái)已經(jīng)得到了廣泛的應(yīng)用。Hadoop[3]的兩大核心模塊是HDFS[4]和MapReduce[5],其中HDFS是Hadoop體系結(jié)構(gòu)中的底層支持。

1 HDFS的基礎(chǔ)構(gòu)架[6]

Hadoop的分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)作為Hadoop云平臺(tái)的核心組件,其主要負(fù)責(zé)海量數(shù)據(jù)的存儲(chǔ)工作。HDFS具有高容錯(cuò)性,可以部署在廉價(jià)的機(jī)器之上,它允許自定義數(shù)據(jù)塊備份的數(shù)目,并且將同一數(shù)據(jù)塊的備份存放在不同機(jī)架中,以提高文件系統(tǒng)的可靠性。

HDFS文件系統(tǒng)采用了主/從(master/slave)結(jié)構(gòu),在集群中NameNode作為主節(jié)點(diǎn),多個(gè)DataNode作為從節(jié)點(diǎn)。客戶(hù)端(client)發(fā)起的讀寫(xiě)請(qǐng)求會(huì)直接傳送給NameNode,由NameNode對(duì)數(shù)據(jù)文件進(jìn)行重命名、打開(kāi)、刪除等操作。NameNode還要實(shí)時(shí)的與DataNode進(jìn)行數(shù)據(jù)交互。此外NameNode管理并維護(hù)上傳數(shù)據(jù)到HDFS中時(shí)產(chǎn)生的EditLog日志文件和FsImage文件系統(tǒng)映射表等元數(shù)據(jù)信息。大數(shù)據(jù)文件傳入文件系統(tǒng)后,首先進(jìn)行預(yù)處理,被分割成固定大小的數(shù)據(jù)塊(默認(rèn)為64M),然后這些數(shù)據(jù)塊存放在各個(gè)DataNode中。HDFS的體系結(jié)構(gòu)如圖1所示。

1.1 NameNode

NameNode主要有四大功能。首先,它対元數(shù)據(jù)(連線1)和數(shù)據(jù)塊進(jìn)行管理。其次, NameNode還可以將存儲(chǔ)在內(nèi)存中的元數(shù)據(jù)持久化到硬盤(pán)中去,以提高安全性。再次,NameNode負(fù)責(zé)處理客戶(hù)端和DataNode的所提出的請(qǐng)求。最后,DataNode要向NameNode發(fā)送的心跳信息,NameNode通過(guò)心態(tài)信息對(duì)DataNode進(jìn)行管理。

1.2 Secondary NameNode

Secondary NameNode并不是NameNode的備份,而是按照一定時(shí)間間隔保持文件系統(tǒng)元數(shù)據(jù)的快照。Secondary NameNode與NameNode保持通信(連線2),定時(shí)的到NameNode上獲取edit logs,并更新到自己的fsimage上,一旦它有了新的fsimage文件,它就會(huì)將其拷貝到NameNode中。待NameNode重啟時(shí)會(huì)就會(huì)使用這個(gè)新的fsimage文件,從而減少其重啟的時(shí)間。

1.3 DataNode

DataNode最主要的工作就是存儲(chǔ)數(shù)據(jù)塊。其次DataNode會(huì)執(zhí)行數(shù)據(jù)的流水線復(fù)制任務(wù),數(shù)據(jù)存入文件系統(tǒng)內(nèi)部后,默認(rèn)被分成64M大的數(shù)據(jù)塊,數(shù)據(jù)塊以冗余存儲(chǔ)的形式備份在多個(gè)DataNode中(連線3),默認(rèn)備份數(shù)為3。最后DataNode還會(huì)定期的向NameNode報(bào)告其存儲(chǔ)的數(shù)據(jù)塊列表(連線4)和發(fā)送心跳信息。

1.4 Client

Client作為HDSF的使用者,它可以對(duì)系統(tǒng)中的文件進(jìn)行讀寫(xiě)操作。Client不能直接與DataNode通信,需要先從NameNode中獲取文件對(duì)應(yīng)數(shù)據(jù)塊的位置信息(連線5),通過(guò)位置信息找到相應(yīng)的DataNode并進(jìn)行數(shù)據(jù)的讀寫(xiě)操作(連線6,7)。

2 基于單一NameNode的分布式文件系統(tǒng)

2.1 單一NameNode節(jié)點(diǎn)設(shè)計(jì)原則

HDFS采用主/從(master/slave)結(jié)構(gòu),一個(gè)HDFS集群中由一個(gè)NameNode和若干個(gè)DataNode組成。NameNode作為HDFS的主服務(wù)器部署在性能相對(duì)較高的機(jī)器上,主要負(fù)責(zé)管理文件系統(tǒng)中的元數(shù)據(jù),這消耗其大量的內(nèi)存和I/O資源。所以NameNode上不存儲(chǔ)用戶(hù)的數(shù)據(jù),也不執(zhí)行計(jì)算任務(wù)。

2.2 單一NameNode模型的不足[7]

單一NameNode節(jié)點(diǎn)的構(gòu)架避免了復(fù)雜的一致性問(wèn)題,簡(jiǎn)化了系統(tǒng)的結(jié)構(gòu)。但隨著數(shù)據(jù)規(guī)模的發(fā)展,HDFS單一NameNode節(jié)點(diǎn)的構(gòu)架在現(xiàn)如今的數(shù)據(jù)應(yīng)用場(chǎng)景中,也表現(xiàn)出了一些不足之處,主要表現(xiàn)在以下幾個(gè)方面.

(1) 單點(diǎn)性能瓶頸問(wèn)題

由于HDFS上所運(yùn)行的MapReduce任務(wù)和其他應(yīng)用不斷地增多,若在同一時(shí)間內(nèi)對(duì)NameNode發(fā)出訪問(wèn)請(qǐng)求的Client數(shù)量較大時(shí),NameNode所承受的壓力也越來(lái)越大。另外,存小文件的數(shù)據(jù)不斷增多,小文件的數(shù)目增多不可避免的會(huì)引起元數(shù)據(jù)的膨脹,NameNode的內(nèi)存大小成為制約文件系統(tǒng)整體性能的瓶頸。

(2) 單點(diǎn)失效問(wèn)題

由于NameNode節(jié)點(diǎn)在整個(gè)hadoop集群中僅有一個(gè),一旦該節(jié)點(diǎn)發(fā)生故障就會(huì)造成客戶(hù)端對(duì)文件進(jìn)行操作時(shí)無(wú)法獲取到元數(shù)據(jù)信息,文件到數(shù)據(jù)塊的映射無(wú)法找到,整個(gè)HDFS集群無(wú)法正常工作,單一的NameNode節(jié)點(diǎn)就成為了HDFS集群的單一失效點(diǎn)(SPOF,Single Point of Failure)。為了解決單點(diǎn)失效的問(wèn)題,HDFS的Secondary NameNode作為NameNode元數(shù)據(jù)信息的快照,待NameNode重啟后會(huì)就會(huì)使用Secondary NameNode中fsimage文件里的快照,將元數(shù)據(jù)信息恢復(fù)到NameNode故障前的狀態(tài)。但是NameNode重啟和元數(shù)據(jù)的恢復(fù)都需要一定的時(shí)間,影響了這個(gè)系統(tǒng)的實(shí)時(shí)性。

(3) 擴(kuò)展性問(wèn)題

單一NameNode存在擴(kuò)展性方面的問(wèn)題。首先NameNode節(jié)點(diǎn)內(nèi)存的大小成為整個(gè)文件系統(tǒng)存儲(chǔ)規(guī)模的限制。元數(shù)據(jù)都存在放NameNode中,這樣做雖然加快了元數(shù)據(jù)的訪問(wèn)效率,但是隨著HDFS系統(tǒng)規(guī)模的增大,數(shù)據(jù)塊的數(shù)量急劇增加,NameNode節(jié)點(diǎn)中元數(shù)據(jù)數(shù)量也相應(yīng)的變大,當(dāng)達(dá)到NameNode內(nèi)存上限時(shí)NameNode節(jié)點(diǎn)內(nèi)存的大小就制約了HDFS文件系統(tǒng)的規(guī)模。若只是通過(guò)簡(jiǎn)單的增大數(shù)據(jù)塊大小來(lái)減小元數(shù)據(jù)的數(shù)量會(huì)增加文件系統(tǒng)的磁盤(pán)碎片。此外,隨著文件系統(tǒng)存儲(chǔ)文件數(shù)目的增加,元數(shù)據(jù)的數(shù)量也增大,單一NameNode節(jié)點(diǎn)的內(nèi)存無(wú)法存放數(shù)量巨大的元數(shù)據(jù)信息。我們可以通過(guò)合并文件的方法來(lái)減少文件的數(shù)目從而減少元數(shù)據(jù)的數(shù)據(jù)量,但合并后文件的原始結(jié)構(gòu)遭到了破壞。綜上所述,單一NameNode節(jié)點(diǎn)也對(duì)文件系統(tǒng)所存放文件數(shù)量的擴(kuò)展產(chǎn)生了制約。

3 基于分布式NameNode的分布式文件系統(tǒng)

為了減輕NameNode的壓力,避免單一NameNode節(jié)點(diǎn)變成制約整個(gè)HDFS集群性能的瓶頸,本文提出基于分布式NameNode的HDFS文件系統(tǒng),集群里所有的NameNode節(jié)點(diǎn)共同完成元數(shù)據(jù)的存儲(chǔ)。

3.1 總體結(jié)構(gòu)設(shè)計(jì)

在基于分布式NameNode節(jié)點(diǎn)的HDFS文件系統(tǒng)中,多個(gè)NameNode節(jié)點(diǎn)組成一個(gè)小型的分布式集群,各個(gè)NameNode對(duì)外提供一致的服務(wù)。集群內(nèi)部設(shè)有一個(gè)Manager NameNode節(jié)點(diǎn)監(jiān)控NameNode節(jié)點(diǎn)的工作狀態(tài)。集群中還分別設(shè)有Manager NameNode和NameNode這兩種節(jié)點(diǎn)的備用節(jié)點(diǎn)以保證集群的高可用性。因此,分布式NameNode集群中共有四種不同類(lèi)型的節(jié)點(diǎn)分別承擔(dān)不同的工作,其結(jié)構(gòu)如圖2所示。

(1) Manger NameNode節(jié)點(diǎn)

Manger NameNode節(jié)點(diǎn)監(jiān)控和管理各個(gè)NameNode節(jié)點(diǎn)的工作狀態(tài),同時(shí)它本身也是一個(gè)NameNode節(jié)點(diǎn),其具體工作任務(wù)如下:

1) 監(jiān)督集群中所有NameNode節(jié)點(diǎn)的工作情況。Manager NameNode通過(guò)NameNode節(jié)點(diǎn)定時(shí)發(fā)送的心跳信息來(lái)識(shí)別NameNode節(jié)點(diǎn)是否失效或者是否恢復(fù)工作,如果在指定時(shí)間段內(nèi)沒(méi)有收到某個(gè)NameNode發(fā)送的心跳信息,則認(rèn)為該節(jié)點(diǎn)發(fā)生故障無(wú)法正常工作。

2) 處理集群中的節(jié)點(diǎn)故障。當(dāng)集群中出現(xiàn)故障節(jié)點(diǎn)時(shí),Manger NameNode會(huì)啟動(dòng)故障節(jié)點(diǎn)的后備節(jié)點(diǎn)Secondary NameNode替換該節(jié)點(diǎn)。

3) 轉(zhuǎn)發(fā)DataNode的狀態(tài)信息。DataNode將自己的狀態(tài)信息發(fā)送給Manger NameNode,再由Manger NameNode轉(zhuǎn)發(fā)給所有的NameNode節(jié)點(diǎn)。

(2) Secondary Manger NameNode節(jié)點(diǎn)

為了保證分布式NameNode集群的高可用性,需要有一個(gè)Secondary Manger NameNode節(jié)點(diǎn),其作用類(lèi)似于Secondary NameNode,當(dāng)Manger NameNode節(jié)點(diǎn)出現(xiàn)故障無(wú)法正常工作時(shí),Secondary Manger NameNode作為該節(jié)點(diǎn)的快照,幫助其盡快回復(fù)正常工作。

(3) NameNode節(jié)點(diǎn)

基于分布式NameNode節(jié)點(diǎn)的HDFS文件系統(tǒng)將元數(shù)據(jù)分散的存放在集群中各個(gè)NameNode節(jié)點(diǎn)上。集群中的NameNode節(jié)點(diǎn)分為三種,分別是Secondary Manger NameNode節(jié)點(diǎn)、Manger NameNode節(jié)點(diǎn)和NameNode節(jié)點(diǎn)。它們都需要完成普通NameNode節(jié)點(diǎn)的工作,同時(shí)又有各自特有的工作任務(wù)。在HDFS文件系統(tǒng)中它們需要協(xié)同完成元數(shù)據(jù)服務(wù)。

(4) Secondary NameNode節(jié)點(diǎn)

當(dāng)Manger NameNode節(jié)點(diǎn)未在規(guī)定時(shí)間內(nèi)收到NameNode節(jié)點(diǎn)發(fā)來(lái)的心跳信息時(shí),則認(rèn)為該NameNode節(jié)點(diǎn)發(fā)生故障,并選擇一個(gè)新的NameNode節(jié)點(diǎn)加載相關(guān)的元數(shù)據(jù)信息后,代替故障NameNode節(jié)點(diǎn),加入到集群中。

(5) DataNode節(jié)點(diǎn)

負(fù)責(zé)具體的數(shù)據(jù)塊的存放。

3.2 基于分布式NameNode的分布式文件系統(tǒng)的優(yōu)點(diǎn)[8]

(1) 文件系統(tǒng)的可靠性增強(qiáng)

從兩個(gè)方面保證文件系統(tǒng)的高可靠性,首先,NameNode和DataNode都會(huì)定期的向Manger NameNode節(jié)點(diǎn)發(fā)送心跳信息,若在規(guī)定時(shí)間內(nèi)沒(méi)有得到Manger NameNode節(jié)點(diǎn)的響應(yīng)則認(rèn)為其發(fā)生了故障,進(jìn)而將心跳信息發(fā)送給Secondary Manger NameNode節(jié)點(diǎn);其次,Secondary Manger NameNode節(jié)點(diǎn)也會(huì)定時(shí)的向Manger NameNode節(jié)點(diǎn)發(fā)送信息,在規(guī)定時(shí)間內(nèi)沒(méi)有得到回復(fù),則認(rèn)為Manger NameNode節(jié)點(diǎn)發(fā)生故障隨即替代它工作。通過(guò)這兩種方式保證了集群里NameNode和DataNode節(jié)點(diǎn)中存放的最新信息不會(huì)丟失,從而增強(qiáng)了文件系統(tǒng)的可靠性。

(2) 故障節(jié)點(diǎn)的切換速度提升

Manger NameNode節(jié)點(diǎn)故障后可以在短時(shí)間內(nèi)切換成Secondary Manger NameNode節(jié)點(diǎn)來(lái)替代,不會(huì)導(dǎo)致HDFS癱瘓。

(3) NameNode通信量減小

在單一NameNode節(jié)點(diǎn)的HDFS文件系統(tǒng)中,NameNode節(jié)點(diǎn)需要存放所有的元數(shù)據(jù)信息和接收DataNode發(fā)送的心跳信息。而本文提出得分布式NameNode節(jié)點(diǎn)模型,DataNode節(jié)點(diǎn)的狀態(tài)信息都發(fā)送給Manger NameNode節(jié)點(diǎn),再由Manger NameNode節(jié)點(diǎn)發(fā)送給各個(gè)NameNode節(jié)點(diǎn)。只有當(dāng)DataNode上發(fā)生數(shù)據(jù)塊變化時(shí),才由DataNode直接與其對(duì)應(yīng)的NameNode發(fā)送數(shù)據(jù)塊報(bào)告,這樣減少了他們之間的通行量也減輕了DataNode的通信壓力。如圖3所示:

(4) 提高了HDFS文件系統(tǒng)的擴(kuò)展性

分布式NameNode的HDFS集群中有多個(gè)NameNode同時(shí)對(duì)外提供元數(shù)據(jù)服務(wù),根據(jù)一定的元數(shù)據(jù)存放策略選擇相對(duì)應(yīng)的NameNode節(jié)點(diǎn)進(jìn)行元數(shù)據(jù)存儲(chǔ)。利用這種方式解決單一NameNode節(jié)點(diǎn)擴(kuò)展性差的問(wèn)題,從而提高了HDFS文件系統(tǒng)的服務(wù)性能。

4 結(jié)束語(yǔ)

隨著各種可佩戴計(jì)算設(shè)備的出現(xiàn),信息的數(shù)據(jù)化是的數(shù)據(jù)量日益增加。利用Hadoop技術(shù)來(lái)對(duì)大數(shù)據(jù)進(jìn)行處理成為主流方式,這也使Hadoop中HDFS文件系統(tǒng)單一NameNode節(jié)點(diǎn)設(shè)計(jì)所存在的問(wèn)題日益凸顯,本文提出了基于HDFS的分布式NameNode借點(diǎn)模型來(lái)解決基于HDFS的單一NameNode節(jié)點(diǎn)模型的不足之處。

本文介紹了HDFS的基本框架,以及單一NameNode節(jié)點(diǎn)的HDFS讀取數(shù)據(jù)的過(guò)程,以此來(lái)引出單一NameNode節(jié)點(diǎn)模型所存在的問(wèn)題,并提出分布式NameNode節(jié)點(diǎn)模型的基本構(gòu)架。通過(guò)分布式NameNode節(jié)點(diǎn)模型來(lái)解決單一NameNode節(jié)點(diǎn)模型所存在的不足,使HDFS文件系統(tǒng)有更好的擴(kuò)展性。

參考文獻(xiàn):

[1] 曹風(fēng)兵. 基于Hadoop的云計(jì)算模型研究與應(yīng)用[D]. 重慶:重慶大學(xué)計(jì)算機(jī)學(xué)院, 2011:5-14.

[2] 王元卓, 靳小龍, 程學(xué)旗. 網(wǎng)絡(luò)大數(shù)據(jù): 現(xiàn)狀與展望[J]. 計(jì)算機(jī)學(xué)報(bào), 2013, 36(6): 1125-1138.

[3] Hadoop.[EB/OL][2015-02-13]. http://hadoop.apache.org/.

[4]王永洲. 基于HDFS的存儲(chǔ)技術(shù)的研究[D]. 南京郵電大學(xué), 2013:13-17.

[5]李玉林, 董晶.基于Hadoop的MapReduce模型的研究與改進(jìn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2012, 33(8): 3110-3116.

[6] 李鑫. Hadoop框架的擴(kuò)展和性能調(diào)優(yōu)[D]. 西安:西安建筑科技大學(xué), 2012.

[7] 鄧鵬, 李玫毅, 何誠(chéng). NameNode單點(diǎn)故障解決方案研究[J]. 計(jì)算機(jī)工程, 2012, 38(21): 40-44.

[8] 楊帆. Hadoop平臺(tái)高可用性方案的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué), 2012.

吉隆县| 京山县| 金华市| 饶河县| 凌云县| 七台河市| 塔城市| 明溪县| 通州市| 石柱| 上栗县| 灵丘县| 绥江县| 固始县| 城市| 涟源市| 彭阳县| 柯坪县| 乐平市| 苍梧县| 双柏县| 文山县| 隆昌县| 泸溪县| 孙吴县| 新泰市| 晋江市| 淮安市| 交城县| 大关县| 北碚区| 阳江市| 铜鼓县| 曲沃县| 盐源县| 乌拉特前旗| 木兰县| 色达县| 依兰县| 南靖县| 建昌县|