<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Hadoop之HDFS概念

      @

      • HDFS是Hadoop Distribute File System 的簡(jiǎn)稱(chēng),意為:Hadoop分布式文件系統(tǒng)。是Hadoop核心組件之一

      1. HDFS設(shè)計(jì)目標(biāo)

      1. 硬件故障是常態(tài), HDFS將有成百上千的服務(wù)器組成,每一個(gè)組成部分都有可能出現(xiàn)故障。因此故障的檢測(cè)和自動(dòng)快速恢復(fù)是HDFS的核心架構(gòu)目標(biāo)。
      1. HDFS上的應(yīng)用與一般的應(yīng)用不同,它們主要是以流式讀取數(shù)據(jù)。(可以理解為:來(lái)一點(diǎn),處理一點(diǎn),就象看網(wǎng)絡(luò)上的黃片一樣,你永遠(yuǎn)不知道下一幀是啥)HDFS被設(shè)計(jì)成適合批量處理,而不是用戶交互式的。相較于數(shù)據(jù)訪問(wèn)的反應(yīng)時(shí)間,更注重?cái)?shù)據(jù)訪問(wèn)的高吞吐量。
      2. 典型的HDFS文件大小是GB到TB的級(jí)別。所以,HDFS被調(diào)整成支持大文件。它應(yīng)該提供很高的聚合數(shù)據(jù)帶寬,一個(gè)集群中支持?jǐn)?shù)百個(gè)節(jié)點(diǎn),一個(gè)集群中還應(yīng)該支持千萬(wàn)級(jí)別的文件。
      3. 大部分HDFS應(yīng)用對(duì)文件要求的是write-one-read-many(寫(xiě)少讀多)訪問(wèn)模型。一個(gè)文件一旦創(chuàng)建、寫(xiě)入、關(guān)閉之后就不需要修改了。這一假設(shè)簡(jiǎn)化了數(shù)據(jù)一致性問(wèn)題,使高吞吐量的數(shù)據(jù)訪問(wèn)成為可能。
      4. 移動(dòng)計(jì)算的代價(jià)比之移動(dòng)數(shù)據(jù)的代價(jià)低。一個(gè)應(yīng)用請(qǐng)求的計(jì)算,離它操作的數(shù)據(jù)越近就越高效,這在數(shù)據(jù)達(dá)到海量級(jí)別的時(shí)候更是如此。將計(jì)算移動(dòng)到數(shù)據(jù)附近,比之將數(shù)據(jù)移動(dòng)到應(yīng)用所在顯然更好。
      5. 在異構(gòu)的硬件和軟件平臺(tái)上的可移植性。這將推動(dòng)需要大數(shù)據(jù)集的應(yīng)用更廣泛地采用HDFS作為平臺(tái)。

      2. HDFS重要特性

      2.1.主從架構(gòu)
      HDFS采用master/slave架構(gòu)。一般一個(gè)HDFS集群是有一個(gè)Namenode和一定數(shù)目的Datanode組成。
      Namenode是HDFS集群主節(jié)點(diǎn),Datanode是HDFS集群從節(jié)點(diǎn),兩種角色各司其職,共同協(xié)調(diào)完成分布式的文件存儲(chǔ)服務(wù)。
      2.2. 分塊存儲(chǔ)
      HDFS中的文件在物理上是分塊存儲(chǔ)(block)的,塊的大小可以通過(guò)配置參數(shù)來(lái)規(guī)定,默認(rèn)大小在hadoop2.7.3版本后是128M,之前版本的默認(rèn)值是64M.
      2.3. 名字空間(NameSpace
      HDFS支持傳統(tǒng)的層次型文件組織結(jié)構(gòu)。用戶或者應(yīng)用程序可以創(chuàng)建目錄,然后將文件保存在這些目錄里。文件系統(tǒng)名字空間的層次結(jié)構(gòu)和大多數(shù)現(xiàn)有的文件系統(tǒng)類(lèi)似:用戶可以創(chuàng)建、刪除、移動(dòng)或重命名文件。
      Namenode負(fù)責(zé)維護(hù)文件系統(tǒng)的名字空間,任何對(duì)文件系統(tǒng)名字空間或?qū)傩缘男薷亩紝⒈籒amenode記錄下來(lái)。
      HDFS會(huì)給客戶端提供一個(gè)統(tǒng)一的抽象目錄樹(shù),客戶端通過(guò)路徑來(lái)訪問(wèn)文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。
      2.4. Namenode元數(shù)據(jù)管理
      我們把目錄結(jié)構(gòu)及文件分塊位置信息叫做元數(shù)據(jù)。Namenode負(fù)責(zé)維護(hù)整個(gè)hdfs文件系統(tǒng)的目錄樹(shù)結(jié)構(gòu),以及每一個(gè)文件所對(duì)應(yīng)的block塊信息(block的id,及所在的datanode服務(wù)器)。
      2.5. Datanode數(shù)據(jù)存儲(chǔ)
      文件的各個(gè)block的具體存儲(chǔ)管理由datanode節(jié)點(diǎn)承擔(dān)。每一個(gè)block都可以在多個(gè)datanode上。Datanode需要定時(shí)向Namenode匯報(bào)自己持有的block信息。
      2.6. 副本機(jī)制
      為了容錯(cuò),文件的所有block都會(huì)有副本。每個(gè)文件的block大小和副本系數(shù)都是可配置的。應(yīng)用程序可以指定某個(gè)文件的副本數(shù)目。副本系數(shù)可以在文件創(chuàng)建的時(shí)候指定,也可以在之后改變。
      副本數(shù)量也可以通過(guò)參數(shù)設(shè)置dfs.replication默認(rèn)是3
      2.7. 一次寫(xiě)入,多次讀出
      HDFS是設(shè)計(jì)成適應(yīng)一次寫(xiě)入,多次讀出的場(chǎng)景,且不支持文件的修改。
      正因?yàn)槿绱耍琀DFS適合用來(lái)做大數(shù)據(jù)分析的底層存儲(chǔ)服務(wù),并不適合用來(lái)做.網(wǎng)盤(pán)等應(yīng)用,因?yàn)椋薷牟环奖悖舆t大,網(wǎng)絡(luò)開(kāi)銷(xiāo)大,成本太高。

      1. NameNode概述

      a、 NameNode是HDFS的核心。
      b、 NameNode也稱(chēng)為Master
      c、 NameNode僅存儲(chǔ)HDFS的元數(shù)據(jù):文件系統(tǒng)中所有文件的目錄樹(shù),并跟蹤整個(gè)集群中的文件。
      d、 NameNode不存儲(chǔ)實(shí)際數(shù)據(jù)或數(shù)據(jù)集。數(shù)據(jù)本身實(shí)際存儲(chǔ)在DataNodes中。
      e、 NameNode知道HDFS中任何給定文件的塊列表及其位置。使用此信息NameNode知道如何從塊中構(gòu)建文件。
      f、 NameNode并不持久化存儲(chǔ)每個(gè)文件中各個(gè)塊所在的DataNode的位置信息,這些信息會(huì)在系統(tǒng)啟動(dòng)時(shí)從數(shù)據(jù)節(jié)點(diǎn)重建。
      g、 NameNode對(duì)于HDFS至關(guān)重要,當(dāng)NameNode關(guān)閉時(shí),HDFS / Hadoop集群無(wú)法訪問(wèn)
      h、 NameNode是Hadoop集群中的單點(diǎn)故障。
      i、 NameNode所在機(jī)器通常會(huì)配置有大量?jī)?nèi)存(RAM)

      2. DataNode概述

      a、 DataNode負(fù)責(zé)將實(shí)際數(shù)據(jù)存儲(chǔ)在HDFS中。
      b、 DataNode也稱(chēng)為Slave
      c、 NameNode和DataNode會(huì)保持不斷通信。
      d、 DataNode啟動(dòng)時(shí),它將自己發(fā)布到NameNode并匯報(bào)自己負(fù)責(zé)持有的塊列表。
      e、 當(dāng)某個(gè)DataNode關(guān)閉時(shí),它不會(huì)影響數(shù)據(jù)或群集的可用性。NameNode將安排由其他DataNode管理的塊進(jìn)行副本復(fù)制。
      f、 DataNode所在機(jī)器通常配置有大量的硬盤(pán)空間。因?yàn)閷?shí)際數(shù)據(jù)存儲(chǔ)在DataNode中。
      g、 DataNode會(huì)定期(dfs.heartbeat.interval配置項(xiàng)配置,默認(rèn)是3秒)向NameNode發(fā)送心跳,如果NameNode長(zhǎng)時(shí)間沒(méi)有接受到DataNode發(fā)送的心跳, NameNode就會(huì)認(rèn)為該DataNode失效。
      h、 block匯報(bào)時(shí)間間隔取參數(shù)dfs.blockreport.intervalMsec,參數(shù)未配置的話默認(rèn)為6小時(shí).

      3. HDFS的工作機(jī)制

      • NameNode負(fù)責(zé)管理整個(gè)文件系統(tǒng)元數(shù)據(jù);DataNode負(fù)責(zé)管理具體文件數(shù)據(jù)塊存儲(chǔ);
      • Secondary,NameNode協(xié)助NameNode進(jìn)行元數(shù)據(jù)的備份。
      • HDFS的內(nèi)部工作機(jī)制對(duì)客戶端保持透明,客戶端請(qǐng)求訪問(wèn)HDFS都是通過(guò)向NameNode申請(qǐng)來(lái)進(jìn)行。

      在這里插入圖片描述

      3.1 HDFS寫(xiě)數(shù)據(jù)流程

      在這里插入圖片描述

      詳細(xì)步驟解析:

      1、客戶端也就是hdfs發(fā)起文件上傳的請(qǐng)求 ,這個(gè)時(shí)候他們通過(guò)RPC協(xié)議與集群中的NameNode建立連接,Namenode開(kāi)始檢查要上傳的文件的父目錄是否存在,返回消息通知hdfs是否可以上傳.
      2、 client請(qǐng)求第一個(gè) block該傳輸?shù)侥男〥ataNode服務(wù)器上;
      3、 NameNode根據(jù)配置文件中指定的備份數(shù)量及副本放置策略進(jìn)行文件分配,返回可用的DataNode的地址,如:A,B,C;
      注:默認(rèn)存儲(chǔ)策略由BlockPlacementPolicyDefault(塊放置策略默認(rèn)值 )類(lèi)支持。也就是日常生活中提到最經(jīng)典的3副本策略。

      1st replica 如果寫(xiě)請(qǐng)求方所在機(jī)器是其中一個(gè)datanode,則直接存放在本地,否則隨機(jī)在集群中選擇一個(gè)datanode.
      2nd replica 第二個(gè)副本存放于不同第一個(gè)副本的所在的機(jī)架.
      3rd replica 第三個(gè)副本存放于第二個(gè)副本所在的機(jī)架,但是屬于不同的節(jié)點(diǎn)
      

      4、 client請(qǐng)求3臺(tái)DataNode中的一臺(tái)A上傳數(shù)據(jù)(本質(zhì)上是一個(gè)RPC調(diào)用,建立pipeline),A收到請(qǐng)求會(huì)繼續(xù)調(diào)用B,然后B調(diào)用C,將整個(gè)pipeline建立完成,后逐級(jí)返回client;
      5、 client開(kāi)始往A上傳第一個(gè)block(先從磁盤(pán)讀取數(shù)據(jù)放到一個(gè)本地內(nèi)存緩存),以packet為單位(默認(rèn)64K),A收到一個(gè)packet就會(huì)傳給B,B傳給C;A每傳一個(gè)packet會(huì)放入一個(gè)應(yīng)答隊(duì)列等待應(yīng)答。
      6、 數(shù)據(jù)被分割成一個(gè)個(gè)packet數(shù)據(jù)包在pipeline上依次傳輸,在pipeline反方向上,逐個(gè)發(fā)送ack(命令正確應(yīng)答),最終由pipeline中第一個(gè)DataNode節(jié)點(diǎn)A將pipeline ack發(fā)送給client;
      7、 當(dāng)一個(gè)block傳輸完成之后,client再次請(qǐng)求NameNode上傳第二個(gè)block到服務(wù)器。

      在這里插入圖片描述

      3.2. HDFS讀數(shù)據(jù)流程

      在這里插入圖片描述
      詳細(xì)步驟解析:
      1、 Client向NameNode發(fā)起RPC請(qǐng)求,來(lái)確定請(qǐng)求文件block所在的位置;
      2、 NameNode會(huì)視情況返回文件的部分或者全部block列表,對(duì)于每個(gè)block,NameNode都會(huì)返回含有該block副本的DataNode地址;
      3、 這些返回的DN地址,會(huì)按照集群拓?fù)浣Y(jié)構(gòu)得出DataNode與客戶端的距離,然后進(jìn)行排序,排序兩個(gè)規(guī)則:網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中距離Client近的排靠前;心跳機(jī)制中超時(shí)匯報(bào)的DN狀態(tài)為STALE,這樣的排靠后;
      4、 Client選取排序靠前的DataNode來(lái)讀取block,如果客戶端本身就是DataNode,那么將從本地直接獲取數(shù)據(jù);
      5、 底層上本質(zhì)是建立FSDataInputStream,重復(fù)的調(diào)用父類(lèi)DataInputStream的read方法,直到這個(gè)塊上的數(shù)據(jù)讀取完畢;一旦到達(dá)塊的末尾,DFSInputStream 關(guān)閉連接并繼續(xù)定位下一個(gè)塊的下一個(gè) DataNode;
      6、 當(dāng)讀完列表的block后,若文件讀取還沒(méi)有結(jié)束,客戶端會(huì)繼續(xù)向NameNode獲取下一批的block列表;一旦客戶端完成讀取,它就會(huì)調(diào)用 close() 方法。
      7、 讀取完一個(gè)block都會(huì)進(jìn)行checksum驗(yàn)證,如果讀取DataNode時(shí)出現(xiàn)錯(cuò)誤,客戶端會(huì)通知NameNode,然后再?gòu)南乱粋€(gè)擁有該block副本的DataNode繼續(xù)讀。
      8、 NameNode只是返回Client請(qǐng)求包含塊的DataNode地址,并不是返回請(qǐng)求塊的數(shù)據(jù);
      9、 最終讀取來(lái)所有的block會(huì)合并成一個(gè)完整的最終文件。

      學(xué)習(xí)的時(shí)候發(fā)現(xiàn)這個(gè)竟然和Glusterfs有些相似 在網(wǎng)上找了一張對(duì)比圖片 后面也會(huì)把Google的GFS的的論文發(fā)出來(lái)供大家參考 目前來(lái)說(shuō) 分布式存儲(chǔ)都有些萬(wàn)變不離其宗的意思
      在這里插入圖片描述
      GFS論文
      提取碼:aq4w
      --來(lái)自百度網(wǎng)盤(pán)超級(jí)會(huì)員V1000的分享
      過(guò)期可以私聊我

      posted @ 2025-10-31 17:29  程少亭  閱讀(6)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲国产天堂久久综合网| 99久久亚洲综合精品成人网| 国产综合色在线精品| 亚洲欧美自偷自拍视频图片| 亚洲国产一区二区三区最新| 在线天堂中文新版www| 日韩av熟女人妻一区二| 精品人妻系列无码人妻漫画| 明溪县| 亚洲国产欧美在线人成aaaa| 国产亚洲一二三区精品| 天海翼激烈高潮到腰振不止| 在线精品视频一区二区| 一区二区三区四区亚洲综合| 人妻丰满熟妇无码区免费| 亚洲精品美女久久久久9999| 亚洲欧美日韩人成在线播放| 欧美亚洲综合成人A∨在线| 欧美人与禽2o2o性论交| 最近中文字幕完整版2019| 亚洲国产成人久久精品软件| 离岛区| 中文字幕国产精品一区二 | 综合欧美视频一区二区三区| 久久夜色撩人精品国产av| 国内精品伊人久久久久影院对白| 99久久亚洲综合精品成人网| 91亚洲精品一区二区三区| 最近中文字幕国产精选| 亚洲va中文字幕无码久久| 久久精品国产99久久6| 成人一区二区人妻不卡视频| 91麻精品国产91久久久久| 在线精品另类自拍视频| 国产又爽又黄的精品视频| 亚洲国产成人精品女人久久久| 狠狠做五月深爱婷婷天天综合| 亚洲国产精品人人做人人爱| 2021国产精品视频网站| 艳妇臀荡乳欲伦交换h在线观看 | 18无码粉嫩小泬无套在线观看|