大數(shù)據(jù)Hadoop之HDFS認(rèn)識(shí)

源自Google的GFS(Google分布式文件系統(tǒng))論文,分布式文件系統(tǒng)(HDFS)是GFS的克隆版。HDFS負(fù)責(zé)數(shù)據(jù)文件的存儲(chǔ),可讓多機(jī)器上分享存儲(chǔ)空間,讓實(shí)際上通過網(wǎng)絡(luò)來訪問文件的動(dòng)作,用戶就像是訪問本地磁盤一樣便捷。

即使HDFS集群中某些節(jié)點(diǎn)脫機(jī),整體來說系統(tǒng)仍然可以持續(xù)運(yùn)作而不會(huì)有數(shù)據(jù)丟失。

HDFS提供了一個(gè)低成本、高可靠、高容錯(cuò)、高性能的分布式文件系統(tǒng)。

1.低成本主要體現(xiàn)在搭建HDFS主要是通過橫向擴(kuò)展機(jī)器數(shù)量而非花高價(jià)錢購進(jìn)昂貴的服務(wù)器。

2.高可靠主要體現(xiàn)在

1)、HDFS解決了單點(diǎn)問題,HDFS集群中心節(jié)點(diǎn)是非常重要的,如果中心節(jié)點(diǎn)宕機(jī)整個(gè)集群將無法使用,所以中心節(jié)點(diǎn)NameNode會(huì)有主要節(jié)點(diǎn)(Primary)和備份節(jié)點(diǎn)(Stand By)。如果Primary出現(xiàn)問題Stand By可以自動(dòng)接替Primary工作。

2)、副本機(jī)制,HDFS集群中文件一般會(huì)存在多份,同一份數(shù)據(jù)會(huì)被存放在多臺(tái)不同的機(jī)器上,如果監(jiān)控到其中的一臺(tái)機(jī)器宕機(jī),隨即將該臺(tái)機(jī)器上的數(shù)據(jù)遷移到其他機(jī)器上保證數(shù)據(jù)的數(shù)量完整性。說明集群中一個(gè)節(jié)點(diǎn)宕機(jī)對(duì)整個(gè)集群的影響是有限可控的。

3)、HDFS負(fù)載均衡,中心節(jié)點(diǎn)(NameNode)不斷的接收數(shù)據(jù)節(jié)點(diǎn)(DataNode)發(fā)送過來的心跳檢測獲得子節(jié)點(diǎn)的運(yùn)行狀態(tài),發(fā)現(xiàn)集群負(fù)載較高的情況下。啟動(dòng)HDFS的balancer工具進(jìn)行數(shù)據(jù)遷移集群里面的數(shù)據(jù)降低系統(tǒng)負(fù)載。

4)、機(jī)架感知,大型HDFS集群是以機(jī)架的形式來組織的,同一個(gè)機(jī)架上不同節(jié)點(diǎn)間的網(wǎng)絡(luò)狀況比不同機(jī)架之間的更為理想。另外,中心節(jié)點(diǎn)(NameNode)設(shè)法數(shù)據(jù)塊副本保存在不同的機(jī)架上以提高容錯(cuò)性。

3.高容錯(cuò)主要體現(xiàn)在

分布式計(jì)算模型(MapReduce)容錯(cuò),一個(gè)MapReduce任務(wù)在集群機(jī)器上面以任務(wù)跟中(TaskTracker)執(zhí)行。每一個(gè)TaskTracker被Job監(jiān)控(jobTracker)監(jiān)控,如果發(fā)現(xiàn)一個(gè)TaskTracker執(zhí)行失敗JobTracker就會(huì)將該任務(wù)分配到其他機(jī)器上面運(yùn)行。

4.高性能體現(xiàn)在處理大型任務(wù)上集群處理效率,多臺(tái)機(jī)器分塊并行處理要比單臺(tái)機(jī)器串行處理要快很多。

HDFS分布式文件系統(tǒng),是怎樣做到的呢?

通常一個(gè)HDFS集群是由一個(gè)中心節(jié)點(diǎn)(NameNode)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)(DataNode)組成的,中心節(jié)點(diǎn)負(fù)責(zé)管理整個(gè)集群,如果中心節(jié)點(diǎn)癱瘓那么整個(gè)集群就無法使用,上面我們給出設(shè)置備份中心節(jié)點(diǎn)的解決辦法,但是為了進(jìn)一步確保穩(wěn)定性通常會(huì)選用一臺(tái)高性能配置好的服務(wù)器作為中心節(jié)點(diǎn)。


High level Architecture

數(shù)據(jù)文件大的文件切塊分散存儲(chǔ)

HDFS將數(shù)據(jù)以Block塊存儲(chǔ),每一個(gè)Block塊在搭建HDFS的時(shí)候可以被設(shè)置,如果數(shù)據(jù)文件大到超出了Block塊設(shè)定的大小,就會(huì)將這個(gè)文件按Block塊大小切分為多個(gè)文件塊存儲(chǔ)在HDFS中。

切分的Block塊不一定存放在同一臺(tái)Data Node上面,HDFS會(huì)根據(jù)節(jié)點(diǎn)的負(fù)載情況進(jìn)行調(diào)整數(shù)據(jù)存儲(chǔ)位置。

他們存儲(chǔ)位置由中心節(jié)點(diǎn)(NameNode)負(fù)責(zé)管理,NameNode不斷的監(jiān)控DataNode的運(yùn)行情況,如遇DataNode宕機(jī)好及時(shí)遷移數(shù)據(jù)。

元數(shù)據(jù)和數(shù)據(jù)分開存儲(chǔ)


數(shù)據(jù)尋址過程

HDFS的尋找文件地址通過從Root中找到元數(shù)據(jù),再從Meta找到文件存儲(chǔ)的服務(wù)器和地址。其中NameNode主要管理存放到DataNode中數(shù)據(jù)的元數(shù)據(jù)。由于將元數(shù)據(jù)和數(shù)據(jù)分開有利于文件系統(tǒng)的分布式部署,NameNode維護(hù)一份數(shù)據(jù)在集群中不會(huì)有名稱沖突,一份數(shù)據(jù)在集群中只有唯一的一個(gè)名字。

客戶端向NameNode發(fā)起請(qǐng)求,集群中NameNode向DataNode發(fā)起計(jì)算任務(wù)的請(qǐng)求,DataNode負(fù)責(zé)將計(jì)算的結(jié)果反饋給NameNode統(tǒng)計(jì)出結(jié)果。

一次寫入多次讀取

HDFS中存儲(chǔ)的文件只允許一次寫入,寫入之后就不能被修改,如有修改只能在文件中追加數(shù)據(jù)。

寫入的時(shí)候需要對(duì)數(shù)據(jù)進(jìn)行清洗,將壞的數(shù)據(jù)扔掉。

當(dāng)文件被創(chuàng)建,接著寫入數(shù)據(jù),最后,一旦文件被關(guān)閉,就不能再修改。這種模型可以有效地保證數(shù)據(jù)一致性,且避免了復(fù)雜的并發(fā)同步處理,很好地支持了對(duì)數(shù)據(jù)訪問的高吞吐量。

移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更劃算

分布式系統(tǒng)計(jì)算過程中距離數(shù)據(jù)越近,計(jì)算性能越好,尤其是在數(shù)據(jù)量特別大的時(shí)候。由于分布式系統(tǒng)數(shù)據(jù)存放在不同的機(jī)器上,對(duì)于計(jì)算而言就產(chǎn)生了兩種策略,移動(dòng)數(shù)據(jù)和移動(dòng)計(jì)算。如果數(shù)據(jù)量特別大移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)成本消耗非常大而且負(fù)責(zé)計(jì)算的機(jī)器的性能瓶頸也很容易限制運(yùn)算速度。相比移動(dòng)計(jì)算卻是非常劃算,將計(jì)算的方法分發(fā)給集群中DataNode節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)計(jì)算,DataNode節(jié)點(diǎn)將計(jì)算結(jié)果回傳給中心節(jié)點(diǎn),中心節(jié)點(diǎn)負(fù)責(zé)將回傳的結(jié)果匯總成結(jié)果。

移動(dòng)計(jì)算比較流行的有MapReduce,Spark等計(jì)算模型

小結(jié)

HDFS通過作為Hadoop主要的核心在數(shù)據(jù)存儲(chǔ)方面為我們提供了保證,是一款非常優(yōu)秀的分布式文件系統(tǒng)。通過對(duì)特點(diǎn)和架構(gòu)的分析我們能夠清晰的理解什么是HDFS。

HDFS在大數(shù)據(jù)中解決數(shù)據(jù)存儲(chǔ)問題,數(shù)據(jù)采用什么方法進(jìn)行高效的使用是我們關(guān)心的重點(diǎn),我們將下一回分享。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • hdfs是什么? 問題: 1. hdfs是基于什么樣的原理將文件分塊存儲(chǔ)到分布式環(huán)境中的各個(gè)設(shè)備上的? 2. h...
    4762d2980c91閱讀 4,767評(píng)論 0 6
  • 首先,我們?cè)谑褂们跋瓤纯碒DFS是什麼?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得。 HDFS采用mast...
    W_Bousquet閱讀 4,229評(píng)論 0 2
  • 思考問題 HDFS的架構(gòu) 設(shè)計(jì)前提和目標(biāo) 專為存儲(chǔ)超大文件而設(shè)計(jì):hdfs應(yīng)該能夠支持GB級(jí)別大小的文件;它應(yīng)該能...
    Sakura_P閱讀 653評(píng)論 0 2
  • 在一家網(wǎng)絡(luò)公司工作,公司近2年一直在改革,業(yè)務(wù)部門被撤掉,啟用合伙人模式,一線工程師無底薪制,按工作量考核發(fā)工資,...
    開不敗的花閱讀 324評(píng)論 0 1
  • 看到朋友圈里發(fā)布的關(guān)于何潔離婚的文章,眼淚止不住往外流。她和她老公所經(jīng)歷的,自己現(xiàn)在就在踐行著,可悲的是自己心知肚...
    木子_玲玲閱讀 301評(píng)論 0 0