一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

一文解析HDFS架構(gòu)及讀取寫入數(shù)據(jù)流程

姚小熊27 ? 來源:51cto ? 作者:51cto ? 2021-01-28 14:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Hadoop到目前為止發(fā)展已經(jīng)有10余年,版本經(jīng)過無數(shù)次的更新迭代,目前業(yè)內(nèi)大家把Hadoop大的版本分為Hadoop1.0、Hadoop2.0、Hadoop3.0 三個版本。

一、Hadoop 簡介

Hadoop版本剛出來的時候是為了解決兩個問題:一是海量數(shù)據(jù)如何存儲的問題,一個是海量數(shù)據(jù)如何計算的問題。Hadoop的核心設(shè)計就是HDFS和 Mapreduce.HDFS解決了海量數(shù)據(jù)如何存儲的問題, Mapreduce解決了海量數(shù)據(jù)如何計算的問題。HDFS的全稱:Hadoop Distributed File System。

二、分布式文件系統(tǒng)

圖片 HDFS其實就可以理解為一個分布式文件系統(tǒng),可以看如圖1所示有4個服務器是不是都有他自己的文件系統(tǒng)都可以進行存儲數(shù)據(jù),假設(shè)每個服務器的存儲空間存儲10G的數(shù)據(jù)。假設(shè)數(shù)據(jù)量很小的時候存儲10G的數(shù)據(jù)還是ok的當數(shù)據(jù)量大于服務器的存儲空間時是不是單個服務器就沒法存儲了。 我們是不是可以在服務器中部署一個Hadoop這樣就能構(gòu)建出一個集群(超級大電腦)。這樣就存儲 4*10=40G的數(shù)據(jù)量,這樣我們面向用戶時是不是只有一臺超級大的電腦相當于一個分布式文件系統(tǒng)。

HDFS是一個主從的架構(gòu)、主節(jié)點只有一個NemeNode。從節(jié)點有多個DataNode。

三、HDFS 架構(gòu)

圖片 假設(shè)我們這里有5臺服務器每臺服務器都部署上Hadoop,我們隨便選擇一臺服務器部署上NameNode剩下服務器部署上DataNode。

客戶端上傳文件時假設(shè)文件大小為129MHDFS默認切分的大小為128M這時就會產(chǎn)生出2個blkNameNode去通知DataNode上傳文件(這里有一定的策略),我們就假設(shè)就將這幾個文件分別存儲在4個服務器上。為什們要進行分別存儲在,假設(shè)DataNode服務器有一天突然掛掉了我們是不是還可通過DataNode4或2和3進行讀取數(shù)據(jù),這樣是不是就防止數(shù)據(jù)丟失。

NameNode

管理元數(shù)據(jù)信息(文件目錄樹):文件與Block塊,Block塊與DataNode主機關(guān)系 NameNode為快速響應用戶操作,所以把元數(shù)據(jù)信息加載到內(nèi)存里

DataNode

存儲數(shù)據(jù),把上傳的數(shù)據(jù)劃分固定大小文件塊(Block)在Hadoop2.73之前是64M之后改為了128M 為了保證數(shù)據(jù)安全,每個文件默認都是三個副本

SecondaryNamenode

周期性的到NameNode節(jié)點拉取Edtis和fsimage文件,將這兩個文件加入到內(nèi)存進行 然后將這兩個文件加入到內(nèi)存中進行合并產(chǎn)生新的fsimage發(fā)送給NameNode。

四、HDFS寫入數(shù)據(jù)流程

客戶端會帶著文件路徑向NameNode發(fā)送寫入請求通過 RPC 與 NameNode 建立通訊, NameNode 檢查目標文件,返回是否可以上傳; Client 請求第一個 block 該傳輸?shù)侥男?DataNode 服務器上; NameNode 根據(jù)副本數(shù)量和副本放置策略進行節(jié)點分配,返回DataNode節(jié)點,如:A,B,C Client 請求A節(jié)點建立pipeline管道,A收到請求會繼續(xù)調(diào)用B,然后B調(diào)用C,將整個pipeline管道建立完成后,逐級返回消息到Client; Client收到A返回的消息之后開始往A上傳第一個block塊,block塊被切分成64K的packet包不斷的在pepiline管道里傳遞,從A到B,B到C進行復制存儲 當一個 block塊 傳輸完成之后,Client 再次請求 NameNode 上傳第二個block塊的存儲節(jié)點,不斷往復存儲 當所有block塊傳輸完成之后,Client調(diào)用FSDataOutputSteam的close方法關(guān)閉輸出流,最后調(diào)用FileSystem的complete方法告知NameNode數(shù)據(jù)寫入成功

五、HDFS讀取數(shù)據(jù)流程

客戶端會先帶著讀取路徑向NameNode發(fā)送讀取請求,通過 RPC 與 NameNode 建立通訊,NameNode檢查目標文件,來確定請求文件 block塊的位置信息 NameNode會視情況返回文件的部分或者全部block塊列表,對于每個block塊,NameNode 都會返回含有該 block副本的 DataNode 地址 這些返回的 DataNode 地址,會按照集群拓撲結(jié)構(gòu)得出 DataNode 與客戶端的距離,然后進行排序,排序兩個規(guī)則:網(wǎng)絡(luò)拓撲結(jié)構(gòu)中距離 Client 近的排靠前;心跳機制中超時匯報的 DN 狀態(tài)為 STALE,這樣的排靠后; Client 選取排序靠前的 DataNode 調(diào)用FSDataInputSteam的read方法來讀取 block塊數(shù)據(jù),如果客戶端本身就是DataNode,那么將從本地直接獲取block塊數(shù)據(jù) 當讀完一批的 block塊后,若文件讀取還沒有結(jié)束,客戶端會繼續(xù)向NameNode 獲取下一批的 block 列表,繼續(xù)讀取 所有block塊讀取完成后,Client調(diào)用FSDataInputStream.close()方法,關(guān)閉輸入流,并將讀取來所有的 block塊合并成一個完整的最終文件

六、HDFS缺陷

注意:早期版本

單點問題 內(nèi)存受限

總結(jié)

上述給大家講解了簡單的HDFS架構(gòu),我在最后面留了一個小問題,我會在下期通過畫圖的方式給大家講解,我在這里為大家提供大數(shù)據(jù)的資料需要的朋友可以去下面GitHub去下載,信自己,努力和汗水總會能得到回報的。
責任編輯:YYX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7256

    瀏覽量

    91823
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4531

    瀏覽量

    87436
  • HDFS
    +關(guān)注

    關(guān)注

    1

    文章

    31

    瀏覽量

    9883
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何從CYUSB3014-BZXCT讀取/寫入EEPROM固件?

    個芯片讀取數(shù)據(jù),然后通過 USB 將相同的數(shù)據(jù)寫入第二個芯片。 我是這個領(lǐng)域的新手。 你能告訴我怎樣做嗎? 據(jù)我所知,我需要CYPRES
    發(fā)表于 05-07 06:46

    如何用c#使用ST25R3911DISCOComm.dll來讀取寫入NDEF區(qū)的數(shù)據(jù)

    如何用c#使用ST25R3911DISCOComm.dll來讀取寫入NDEF區(qū)的數(shù)據(jù),需要相關(guān)例程,感謝各位大佬拯救下我?。?????
    發(fā)表于 04-23 06:58

    請問如何使S32K312 FLEXCAN的以下區(qū)域在寫入讀取寫入不同?

    ?如何翻轉(zhuǎn)讀取數(shù)據(jù)以驗證客戶的功能“寫入 FLEXCAN 的以下區(qū)域并將其讀取出來,使其與寫入的內(nèi)容不
    發(fā)表于 04-10 06:20

    nt3h211通過I2C向EEPROM寫入數(shù)據(jù),但NFC工具無法讀取寫入數(shù)據(jù),為什么?

    我通過 I2C 為 NT3H211 芯片編寫了個 Linux 驅(qū)動程序。我使用 I2C 寫入作將數(shù)據(jù)寫入塊地址 01h,并通過 I2C 讀取
    發(fā)表于 03-26 06:50

    CAN報文流程解析

    CAN報文流程解析,直流充電樁上的CAN通訊解析過程
    發(fā)表于 03-24 14:03 ?0次下載

    NVIDIA Blackwell數(shù)據(jù)手冊與NVIDIA Blackwell架構(gòu)技術(shù)解析

    NVIDIA Blackwell數(shù)據(jù)手冊與NVIDIA Blackwell 架構(gòu)技術(shù)解析
    的頭像 發(fā)表于 03-20 17:19 ?719次閱讀

    如何用c#使用ST25R3911DISCOComm.dll來讀取寫入NDEF區(qū)的數(shù)據(jù)?

    如何用c#使用ST25R3911DISCOComm.dll來讀取寫入NDEF區(qū)的數(shù)據(jù),需要相關(guān)例程,感謝各位大佬拯救下我?。?????
    發(fā)表于 03-13 06:51

    解析工業(yè)互聯(lián)網(wǎng)

    電子發(fā)燒友網(wǎng)站提供《解析工業(yè)互聯(lián)網(wǎng).pptx》資料免費下載
    發(fā)表于 02-20 16:42 ?1次下載

    影響25Q20D閃存芯片寫入速度和使用壽命的因素有哪些?

    影響25Q20D閃存芯片寫入速度和使用壽命的因素有哪些?首先我們來談談影響寫入速度九個方面:存儲容量和架構(gòu):存儲容量的增加會導致芯片內(nèi)部的數(shù)據(jù)管理和尋址更為復雜,從而影響
    的頭像 發(fā)表于 01-22 16:48 ?675次閱讀
    影響25Q20D閃存芯片<b class='flag-5'>寫入</b>速度和使用壽命的因素有哪些?

    適用于Oracle的SSIS數(shù)據(jù)流組件:提供快速導入及導出功能

    使用SSIS 數(shù)據(jù)流組件,通過與關(guān)鍵數(shù)據(jù)庫和云服務的 Oracle 數(shù)據(jù)集成來改進您的 ETL 流程,這些組件提供快捷和可靠的數(shù)據(jù)導入和導出
    的頭像 發(fā)表于 01-15 10:51 ?968次閱讀
    適用于Oracle的SSIS<b class='flag-5'>數(shù)據(jù)流</b>組件:提供快速導入及導出功能

    芯片封測架構(gòu)和芯片封測流程

    在此輸入導芯片封測芯片封測是個復雜且精細的過程,它涉及多個步驟和環(huán)節(jié),以確保芯片的質(zhì)量和性能。本文對芯片封測架構(gòu)和芯片封測流程進行概述。 ? ? 1 芯片封測 芯片封測,即芯片封裝測試,是芯片制造
    的頭像 發(fā)表于 12-31 09:15 ?1453次閱讀
    芯片封測<b class='flag-5'>架構(gòu)</b>和芯片封測<b class='flag-5'>流程</b>

    使用STM32的spi與AFE4400通信,每寫入讀取數(shù)據(jù)都需要等待幾百微秒后才能繼續(xù)操作否則讀取數(shù)據(jù)都是0,為什么?

    使用STM32的spi與AFE4400通信,每寫入讀取數(shù)據(jù)都需要等待幾百微秒后才能繼續(xù)操作,否則讀取
    發(fā)表于 12-13 06:13

    使用ads1219這款模數(shù)轉(zhuǎn)換器,讀寫流程和使用single-shot模式和continuous的區(qū)別是什么?

    ,如果我是使用continuous模式,是不是我開始只要把配置好的數(shù)據(jù)和START/SYNC寫進去,就可以開始continuous轉(zhuǎn)換了? 針對我這個讀取單端兩路模擬信號,我設(shè)計的I2C寫讀的
    發(fā)表于 12-10 06:12

    請問TLV320AIC3254EVM-K怎么讀取音頻數(shù)據(jù)流?

    您好,我在學習TLV320AIC3254EVM-K開發(fā)板的過程中碰到個這樣的問題,TI提供的軟件是否具備讀取I2S的音頻數(shù)據(jù)流的功能,或者是否有PC機軟件可以讀取音頻
    發(fā)表于 10-31 06:14

    統(tǒng)日志數(shù)據(jù)流

    統(tǒng)日志數(shù)據(jù)流圖 日志系統(tǒng)數(shù)據(jù)流圖 系統(tǒng)進行日志收集的過程可以分為三個環(huán)節(jié): (1)日志收集和導入ElasticSearch (2)ElasticSearch進行索引等處理 (3)可視化操作,查詢等
    的頭像 發(fā)表于 08-21 15:00 ?571次閱讀
    統(tǒng)<b class='flag-5'>一</b>日志<b class='flag-5'>數(shù)據(jù)流</b>圖