在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分布式文件系統的HDFS是什么

汽車玩家 ? 來源:網絡整理 ? 作者:佚名 ? 2020-05-04 09:36 ? 次閱讀

一、HDFS介紹

上篇文章已經講到了,隨著數據量越來越大,在一臺機器上已經無法存儲所有的數據了,那我們會將這些數據分配到不同的機器來進行存儲,但是這就帶來一個問題:不方便管理和維護

所以,我們就希望有一個系統可以將這些分布在不同操作服務器上的數據進行統一管理,這就有了分布式文件系統

HDFS是分布式文件系統的其中一種(目前用得最廣泛的一種)

在使用HDFS的時候是非常簡單的:雖然HDFS是將文件存儲到不同的機器上,但是我去使用的時候是把這些文件當做是存儲在一臺機器的方式去使用(背后卻是多臺機器在執行):

好比:我調用了一個RPC接口,我給他參數,他返回一個response給我。RPC接口做了什么事其實我都不知道的(可能這個RPC接口又調了其他的RPC接口)-----屏蔽掉實現細節,對用戶友好

分布式文件系統的HDFS是什么

明確一下:HDFS就是一個分布式文件系統,一個文件系統,我們用它來做什么?存數據呀。

下面,我們來了解一下HDFS的一些知識,能夠幫我們更好地去「使用」HDFS

二、HDFS學習

從上面我們已經提到了,HDFS作為一個分布式文件系統,那么它的數據是保存在多個系統上的。例如,下面的圖:一個1GB的文件,會被切分成幾個小的文件,每個服務器都會存放一部分。

分布式文件系統的HDFS是什么

那肯定會有人會問:那會切分多少個小文件呢?默認以128MB的大小來切分,每個128MB的文件,在HDFS叫做塊(block)

顯然,這個128MB大小是可配的。如果設置為太小或者太大都不好。如果切分的文件太小,那一份數據可能分布到多臺的機器上(尋址時間就很慢)。如果切分的文件太大,那數據傳輸時間的時間就很慢。

PS:老版本默認是64MB

一個用戶發出了一個1GB的文件請求給HDFS客戶端,HDFS客戶端會根據配置(現在默認是128MB),對這個文件進行切分,所以HDFS客戶端會切分為8個文件(也叫做block),然后每個服務器都會存儲這些切分后的文件(block)。現在我們假設每個服務器都存儲兩份。

分布式文件系統的HDFS是什么

這些存放真實數據的服務器,在HDFS領域叫做DataNode

分布式文件系統的HDFS是什么

現在問題來了,HDFS客戶端按照配置切分完以后,怎么知道往哪個服務器(DataNode)放數據呢?這個時候,就需要另一個角色了,管理者(NameNode)。

NameNode實際上就是管理文件的各種信息(這種信息專業點我們叫做MetaData「元數據」),其中包括:文文件路徑名,每個Block的ID和存放的位置等等。

所以,無論是讀還是寫,HDFS客戶端都會先去找NameNode,通過NameNode得知相應的信息,再去找DataNode

如果是寫操作,HDFS切分完文件以后,會詢問NameNode應該將這些切分好的block往哪幾臺DataNode上寫。

如果是讀操作,HDFS拿到文件名,也會去詢問NameNode應該往哪幾臺DataNode上讀數據。

分布式文件系統的HDFS是什么

2.1 HDFS備份

作為一個分布式系統(把大文件切分為多個小文件,存儲到不同的機器上),如果沒有備份的話,只要有其中的一臺機器掛了,那就會導致「數據」是不可用狀態的。

寫到這里,如果看過我的Kafka和ElasticSearch的文章可能就懂了。其實思想都是一樣的。

Kafka對partition備份,ElasticSearch對分片進行備份,而到HDFS就是對Block進行備份。

盡可能將數據備份到不同的機器上,即便某臺機器掛了,那就可以將備份數據拉出來用。

對Kafka和ElasticSearch不了解的同學,可以關注我的GitHub,搜索關鍵字即可查詢(我覺得還算寫得比較通俗易懂的)

注:這里的備份并不需要HDFS客戶端去寫,只要DataNode之間互相傳遞數據就好了。

分布式文件系統的HDFS是什么

2.2 NameNode的一些事

從上面我們可以看到,NameNode是需要處理hdfs客戶端請求的。(因為它是存儲元數據的地方,無論讀寫都需要經過它)。

現在問題就來了,NameNode是怎么存放元數據的呢?

如果NameNode只是把元數據放到內存中,那如果NameNode這臺機器重啟了,那元數據就沒了。

如果NameNode將每次寫入的數據都存儲到硬盤中,那如果只針對磁盤查找和修改又會很慢(因為這個是純IO的操作)

說到這里,又想起了Kafka。Kafka也是將partition寫到磁盤里邊的,但人家是怎么寫的?順序IO

NameNode同樣也是做了這個事:修改內存中的元數據,然后把修改的信息append(追加)到一個名為editlog的文件上。

由于append是順序IO,所以效率也不會低。現在我們增刪改查都是走內存,只不過增刪改的時候往磁盤文件editlog里邊追加一條。這樣我們即便重啟了NameNode,還是可以通過editlog文件將元數據恢復。

分布式文件系統的HDFS是什么

現在也有個問題:如果NameNode一直長期運行的話,那editlog文件應該會越來越大(因為所有的修改元數據信息都需要在這追加一條)。重啟的時候需要依賴editlog文件來恢復數據,如果文件特別大,那啟動的時候不就特別慢了嗎?

的確是如此的,那HDFS是怎么做的呢?為了防止editlog過大,導致在重啟的時候需要較長的時間恢復數據,所以NameNode會有一個內存快照,叫做fsimage

說到快照,有沒有想起Redis的RDB!!

這樣一來,重啟的時候只需要加載內存快照fsimage+部分的editlog就可以了。

想法很美好,現實還需要解決一些事:我什么時候生成一個內存快照fsimage?我怎么知道加載哪一部分的editlog?

問題看起來好像復雜,其實我們就只需要一個定時任務。

如果讓我自己做的話,我可能會想:我們加一份配置,設置個時間就OK了

如果editlog大到什么程度或者隔了多長時間,我們就把editlog文件的數據跟內存快照fsiamge給合并起來。然后生成一個新的fsimage,把editlog給清空,覆蓋舊的fsimage內存快照這樣一來,NameNode每次重啟的時候,拿到的都是最新的fsimage文件,editlog里邊的都是沒合并到fsimage的。根據這兩個文件就可以恢復最新的元數據信息了。

HDFS也是類似上面這樣干的,只不過它不是在NameNode起個定時的任務跑,而是用了一個新的角色:SecondNameNode。至于為什么?可能HDFS覺得合并所耗費的資源太大了,不同的工作交由不同的服務器來完成,也符合分布式的理念。

分布式文件系統的HDFS是什么

現在問題還是來了,此時的架構NameNode是單機的。SecondNameNode的作用只是給NameNode合并editlog和fsimage文件,如果NameNode掛了,那client就請求不到了,而所有的請求都需要走NameNode,這導致整個HDFS集群都不可用了。

于是我們需要保證NameNode是高可用的。一般現在我們會通過Zookeeper來實現。架構圖如下:

分布式文件系統的HDFS是什么

主NameNode和從NameNode需要保持元數據的信息一致(因為如果主NameNode掛了,那從NameNode需要頂上,這時從NameNode需要有主NameNode的信息)。

所以,引入了Shared Edits來實現主從NameNode之間的同步,Shared Edits也叫做JournalNode。實際上就是主NameNode如果有更新元數據的信息,它的editlog會寫到JournalNode,然后從NameNode會在JournalNode讀取到變化信息,然后同步。從NameNode也實現了上面所說的SecondNameNode功能(合并editlog和fsimage)

分布式文件系統的HDFS是什么

稍微總結一下:

NameNode需要處理client請求,它是存儲元數據的地方

NameNode的元數據操作都在內存中,會把增刪改以editlog持續化到硬盤中(因為是順序io,所以不會太慢)

由于editlog可能存在過大的問題,導致重新啟動NameNode過慢(因為要依賴editlog來恢復數據),引出了fsimage內存快照。需要跑一個定時任務來合并fsimage和editlog,引出了SecondNameNode

又因為NameNode是單機的,可能存在單機故障的問題。所以我們可以通過Zookeeper來維護主從NameNode,通過JournalNode(Share Edits)來實現主從NameNode元數據的一致性。最終實現NameNode的高可用。

2.3 學點DataNode

從上面我們就知道,我們的數據是存放在DataNode上的(還會備份)。

如果某個DataNode掉線了,那HDFS是怎么知道的呢?

DataNode啟動的時候會去NameNode上注冊,他倆會維持心跳,如果超過時間閾值沒有收到DataNode的心跳,那HDFS就認為這個DataNode掛了。

還有一個問題就是:我們將Block存到DataNode上,那還是有可能這個DataNode的磁盤損壞了部分,而我們DataNode沒有下線,但我們也不知道損壞了。

一個Block除了存放數據的本身,還會存放一份元數據(包括數據塊的長度,塊數據的校驗和,以及時間戳)。DataNode還是會定期向NameNode上報所有當前所有Block的信息,通過元數據就可校驗當前的Block是不是正常狀態。

最后

其實在學習HDFS的時候,你會發現很多的思想跟之前學過的都類似。就比如提到的Kafka、Elasticsearch這些常用的分布式組件。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8897

    瀏覽量

    153036
  • 服務器
    +關注

    關注

    12

    文章

    9618

    瀏覽量

    87069
  • HDFS
    +關注

    關注

    1

    文章

    31

    瀏覽量

    9808
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    分布式光伏發運維系統實際應用案例分享

    安科瑞劉鴻鵬 摘?要 分布式光伏發電系統其核心特點是發電設備靠近用電負荷中心,通常安裝在屋頂、建筑立面或閑置空地上,截至2025年,分布式光伏發電系統在全球和中國范圍內取得了顯著發展,
    的頭像 發表于 04-09 14:46 ?157次閱讀
    <b class='flag-5'>分布式</b>光伏發運維<b class='flag-5'>系統</b>實際應用案例分享

    淺談分布式光伏系統在工業企業的設計及應用

    主要對工業廠區屋頂分布式光伏發電系統的設計及應用進行研究,為工業廠區能源供應提供一種全新的解決思路和技術支持。介紹了工業廠區屋頂分布式光伏系統及其優勢,分析了工業廠區屋頂
    的頭像 發表于 03-21 14:24 ?268次閱讀
    淺談<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系統</b>在工業企業的設計及應用

    如何正確選擇嵌入文件系統

    Linux嵌入系統中,文件系統和緩存機制常導致數據存儲穩定性問題。本文通過案例分析原因,對比不同文件系統特性,為開發者提供優化建議,助力提升數據穩定性和
    的頭像 發表于 03-17 11:35 ?345次閱讀
    如何正確選擇嵌入<b class='flag-5'>式</b><b class='flag-5'>文件系統</b>?

    Hadoop 生態系統在大數據處理中的應用與實踐

    基礎。它將大文件分割成多個數據塊,存儲在不同節點上,實現高容錯性和高擴展性。NameNode 負責管理文件系統命名空間和元數據,DataNode 負責實際數據存儲。上傳文件時,HDFS
    的頭像 發表于 01-21 17:48 ?324次閱讀

    分布式云化數據庫有哪些類型

    分布式云化數據庫有哪些類型?分布式云化數據庫主要類型包括:關系型分布式數據庫、非關系型分布式數據庫、新SQL分布式數據庫、以列方式存儲數據、
    的頭像 發表于 01-15 09:43 ?328次閱讀

    基于ptp的分布式系統設計

    在現代分布式系統中,精確的時間同步對于確保數據一致性、系統穩定性和性能至關重要。PTP(Precision Time Protocol)是一種網絡協議,用于在分布式
    的頭像 發表于 12-29 10:09 ?395次閱讀

    服務器數據恢復—Lustre分布式文件系統數據恢復案例

    5臺節點服務器,每臺節點服務器上有一組RAID5陣列。每組RAID5陣列上有6塊硬盤(其中1塊硬盤設置為熱備盤,其他5塊硬盤為數據盤)。上層系統環境為Lustre分布式文件系統。 機房天花板漏水
    的頭像 發表于 12-25 11:39 ?348次閱讀
    服務器數據恢復—Lustre<b class='flag-5'>分布式</b><b class='flag-5'>文件系統</b>數據恢復案例

    HarmonyOS Next 應用元服務開發-分布式數據對象遷移數據文件資產遷移

    使用分布式數據對象遷移數據,當需要遷移的數據較大(100KB以上)或需要遷移文件時,可以使用分布式數據對象。原理與接口說明詳見分布式數據對象跨設備數據同步。 說明:自API 12起,由
    發表于 12-24 10:11

    HarmonyOS Next 應用元服務開發-分布式數據對象遷移數據權限與基礎數據

    使用分布式數據對象遷移數據,當需要遷移的數據較大(100KB以上)或需要遷移文件時,可以使用分布式數據對象。原理與接口說明詳見分布式數據對象跨設備數據同步。 說明:自API 12起,由
    發表于 12-24 09:40

    Linux根文件系統的掛載過程

    Linux根文件系統(rootfs)是Linux系統中所有其他文件系統和目錄的起點,它是內核啟動時掛載的第一個文件系統
    的頭像 發表于 10-05 16:50 ?784次閱讀

    如何修改buildroot和debian文件系統

    本文檔主要介紹在沒有編譯環境的情況下,如何修改buildroot和debian文件系統方法,如在buildroot文件系統中添加文件、修改目錄等文件操作,在debian
    的頭像 發表于 07-22 17:46 ?737次閱讀
    如何修改buildroot和debian<b class='flag-5'>文件系統</b>

    分布式光纖測溫系統DTS

    隨著城市用電量的持續增長,電纜負荷日益加重,電纜故障頻發成為一個不容忽視的問題。傳統的電纜監測手段已經無法滿足對電纜狀態實時、精準監控的需求,因此部分供電公司采用鼎信分布式光纖測溫系統(DTS)來
    的頭像 發表于 06-27 17:18 ?930次閱讀

    分布式SCADA系統的特點的組成

    在工業自動化和能源管理領域,SCADA(Supervisory Control And Data Acquisition)系統扮演著至關重要的角色。其中,分布式SCADA系統憑借其獨特的結構和功能
    的頭像 發表于 06-07 14:43 ?805次閱讀

    華為分布式存儲連續三年榮膺2024年Gartner“客戶之選”

    近日,全球權威咨詢與分析機構Gartner發布《2024年Gartner Peer InsightsTM 分布式文件系統與對象存儲“客戶之聲”》報告,華為憑借其OceanStor分布式存儲解決方案再次榮獲“客戶之選”殊榮,這已是
    的頭像 發表于 05-24 10:12 ?931次閱讀

    浪潮信息發布AS13000G7-N系列分布式全閃存儲

    浪潮信息近日推出了專為大型AI模型優化的AS13000G7-N系列分布式全閃存儲。該系列基于浪潮信息自研的分布式文件系統,結合新一代數據加速引擎DataTurbo,為用戶提供卓越的存儲解決方案。
    的頭像 發表于 05-14 10:03 ?802次閱讀
    主站蜘蛛池模板: 在线天堂视频 | 亚洲都市激情 | 国产高清不卡一区二区 | 一区二区三区中文字幕 | 狠狠夜夜 | 欧美成人精品一区二三区在线观看 | 国产精品午夜久久 | 国产精品免费看久久久 | 轻点灬大ji巴太粗太大了小说 | 亚洲一区二区三区播放在线 | 偷操| 一区在线播放 | 网www天堂资源在线 网红和老师啪啪对白清晰 网络色综合久久 | 在线a人片免费观看不卡 | 五月婷婷激情视频 | 欧美色图亚洲激情 | 色吊丝中文字幕 | 黄视频免费观看 | 亚洲精品美女久久久久网站 | 国产成人精品日本亚洲网站 | 56pao强力打造| 精品久久天干天天天按摩 | 国产手机在线观看视频 | 日本五十交尾在线观看 | 欧美黄色免费网站 | 一个色在线视频 | 黄色在线网站 | 天天躁夜夜躁狠狠躁2018a | 日本加勒比在线精品视频 | 757福利影院合集3000 | 天天干在线播放 | 亚洲国产精品久久网午夜 | 亚洲一级色片 | 狠狠色丁香六月色 | 全部免费特黄特色大片视频 | 婷婷第四色 | 国产精品热久久毛片 | 人人弄| 日日爽夜夜爽 | 77788色淫网站女女免费视频 | 在线种子资源网 |