国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hadoop Distributed System (HDFS) 寫入和讀取流程

這篇具有很好參考價值的文章主要介紹了Hadoop Distributed System (HDFS) 寫入和讀取流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、HDFS

HDFS全稱是Hadoop Distributed System。HDFS是為以流的方式存取大文件而設(shè)計的。適用于幾百MB,GB以及TB,并寫一次讀多次的場合。而對于低延時數(shù)據(jù)訪問、大量小文件、同時寫和任意的文件修改,則并不是十分適合。

目前HDFS支持的使用接口除了Java的還有,Thrift、C、FUSE、WebDAV、HTTP等。HDFS是以block-sized chunk組織其文件內(nèi)容的,默認的block大小為64MB,對于不足64MB的文件,其會占用一個block,但實際上不用占用實際硬盤上的 64MB,這可以說是HDFS是在文件系統(tǒng)之上架設(shè)的一個中間層。之所以將默認的block大小設(shè)置為64MB這么大,是因為block-sized對于 文件定位很有幫助,同時大文件更使傳輸?shù)臅r間遠大于文件尋找的時間,這樣可以最大化地減少文件定位的時間在整個文件獲取總時間中的比例 。

二、HDFS的體系結(jié)構(gòu)

構(gòu)成HDFS主要是Namenode(master)和一系列的Datanode(workers)。Namenode是管理HDFS的目錄樹和相 關(guān)的文件元數(shù)據(jù),這些信息是以"namespace image"和"edit log"兩個文件形式存放在本地磁盤,但是這些文件是在HDFS每次重啟的時候重新構(gòu)造出來的。Datanode則是存取文件實際內(nèi)容的節(jié) 點,Datanodes會定時地將block的列表匯報給Namenode。

由于Namenode是元數(shù)據(jù)存放的節(jié)點,如果Namenode掛了那么HDFS就沒法正常運行,因此一般使用將元數(shù)據(jù)持久存儲在本地或遠程的機器 上,或者使用secondary namenode來定期同步Namenode的元數(shù)據(jù)信息,secondary namenode有點類似于MySQL的Master/Salves中的Slave,"edit log"就類似"bin log"。如果Namenode出現(xiàn)了故障,一般會將原Namenode中持久化的元數(shù)據(jù)拷貝到secondary namenode中,使secondary namenode作為新的Namenode運行起來。

Hadoop Distributed System (HDFS) 寫入和讀取流程

?三、讀寫流程

GFS論文提到的文件讀取簡單流程:

Hadoop Distributed System (HDFS) 寫入和讀取流程

?詳細流程:

Hadoop Distributed System (HDFS) 寫入和讀取流程

?文件讀取的過程如下:

  1. 使用HDFS提供的客戶端開發(fā)庫Client,向遠程的Namenode發(fā)起RPC請求;

  2. Namenode會視情況返回文件的部分或者全部block列表,對于每個block,Namenode都會返回有該block拷貝的DataNode地址;

  3. 客戶端開發(fā)庫Client會選取離客戶端最接近的DataNode來讀取block;如果客戶端本身就是DataNode,那么將從本地直接獲取數(shù)據(jù).

  4. 讀取完當前block的數(shù)據(jù)后,關(guān)閉與當前的DataNode連接,并為讀取下一個block尋找最佳的DataNode;

  5. 當讀完列表的block后,且文件讀取還沒有結(jié)束,客戶端開發(fā)庫會繼續(xù)向Namenode獲取下一批的block列表。

  6. 讀取完一個block都會進行checksum驗證,如果讀取datanode時出現(xiàn)錯誤,客戶端會通知Namenode,然后再從下一個擁有該block拷貝的datanode繼續(xù)讀。

GFS論文提到的寫入文件簡單流程:

Hadoop Distributed System (HDFS) 寫入和讀取流程

?詳細流程:

Hadoop Distributed System (HDFS) 寫入和讀取流程

寫入文件的過程比讀取較為復(fù)雜:

  1. 使用HDFS提供的客戶端開發(fā)庫Client,向遠程的Namenode發(fā)起RPC請求;

  2. Namenode會檢查要創(chuàng)建的文件是否已經(jīng)存在,創(chuàng)建者是否有權(quán)限進行操作,成功則會為文件創(chuàng)建一個記錄,否則會讓客戶端拋出異常;

  3. 當 客戶端開始寫入文件的時候,開發(fā)庫會將文件切分成多個packets,并在內(nèi)部以數(shù)據(jù)隊列"data queue"的形式管理這些packets,并向Namenode申請新的blocks,獲取用來存儲replicas的合適的datanodes列表, 列表的大小根據(jù)在Namenode中對replication的設(shè)置而定。

  4. 開始以pipeline(管道)的形式將packet寫入所 有的replicas中。開發(fā)庫把packet以流的方式寫入第一個datanode,該datanode把該packet存儲之后,再將其傳遞給在此 pipeline中的下一個datanode,直到最后一個datanode,這種寫數(shù)據(jù)的方式呈流水線的形式。

  5. 最后一個datanode成功存儲之后會返回一個ack packet,在pipeline里傳遞至客戶端,在客戶端的開發(fā)庫內(nèi)部維護著"ack queue",成功收到datanode返回的ack packet后會從"ack queue"移除相應(yīng)的packet。

  6. 如 果傳輸過程中,有某個datanode出現(xiàn)了故障,那么當前的pipeline會被關(guān)閉,出現(xiàn)故障的datanode會從當前的pipeline中移除, 剩余的block會繼續(xù)剩下的datanode中繼續(xù)以pipeline的形式傳輸,同時Namenode會分配一個新的datanode,保持 replicas設(shè)定的數(shù)量。文章來源地址http://www.zghlxwxcb.cn/news/detail-478076.html

到了這里,關(guān)于Hadoop Distributed System (HDFS) 寫入和讀取流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Hadoop】HDFS讀寫流程和客戶端命令使用

    【Hadoop】HDFS讀寫流程和客戶端命令使用

    ?? 個人主頁——??開著拖拉機回家_Linux,Java基礎(chǔ)學(xué)習(xí),大數(shù)據(jù)運維-CSDN博客 ????? ???? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬請批評指正!???? ???????????????? ?????????????? ???????????????????????? 感謝點贊和關(guān)注 ,每天進步

    2024年02月11日
    瀏覽(29)
  • Java實現(xiàn)讀取轉(zhuǎn)碼寫入ES構(gòu)建檢索PDF等文檔全棧流程

    Java實現(xiàn)讀取轉(zhuǎn)碼寫入ES構(gòu)建檢索PDF等文檔全棧流程

    之前已簡單使用ES及Kibana和在線轉(zhuǎn)Base64工具實現(xiàn)了檢索文檔的demo,并已實現(xiàn)WebHook的搭建和觸發(fā)流程接口。 傳送門: 基于GitBucket的Hook構(gòu)建ES檢索PDF等文檔全棧方案 使用ES檢索PDF、word等文檔快速開始 總體思路:基于前面已經(jīng)搭建的WebHook觸發(fā)流程,接收到push更新消息之后,使用

    2024年03月10日
    瀏覽(24)
  • 一百八十二、大數(shù)據(jù)離線數(shù)倉完整流程——步驟一、用Kettle從Kafka、MySQL等數(shù)據(jù)源采集數(shù)據(jù)然后寫入HDFS

    一百八十二、大數(shù)據(jù)離線數(shù)倉完整流程——步驟一、用Kettle從Kafka、MySQL等數(shù)據(jù)源采集數(shù)據(jù)然后寫入HDFS

    經(jīng)過6個月的奮斗,項目的離線數(shù)倉部分終于可以上線了,因此整理一下離線數(shù)倉的整個流程,既是大家提供一個案例經(jīng)驗,也是對自己近半年的工作進行一個總結(jié)。 項目行業(yè)屬于交通行業(yè),因此數(shù)據(jù)具有很多交通行業(yè)的特征,比如轉(zhuǎn)向比數(shù)據(jù)就是統(tǒng)計車輛左轉(zhuǎn)、右轉(zhuǎn)、直行

    2024年02月07日
    瀏覽(20)
  • 從零開始的Hadoop學(xué)習(xí)(六)| HDFS讀寫流程、NN和2NN工作機制、DataNode工作機制

    從零開始的Hadoop學(xué)習(xí)(六)| HDFS讀寫流程、NN和2NN工作機制、DataNode工作機制

    1.1 HDFS寫數(shù)據(jù)流程 1.1.1 剖析文件寫入 (1)客戶端通過 Distributed FileSystem 模塊向 NameNode 請求上傳文件,NameNode檢查目標文件是否已存在,父目錄是否存在。 (2)NameNode 返回是否可以上傳。 (3)客戶端請求第一個 Block 上傳到哪幾個 DataNode 服務(wù)上。 (4)NameNode 返回 3個 DataN

    2024年02月10日
    瀏覽(22)
  • Clickhouse分布式表引擎(Distributed)寫入核心原理解析

    Clickhouse分布式表引擎(Distributed)寫入核心原理解析

    Clickhouse分布式表引擎(Distributed)寫入核心原理解析 Clickhouse分布式表引擎(Distributed)查詢核心原理解析 Distributed表引擎是分布式表的代名詞,它自身不存儲任何數(shù)據(jù),而是作為數(shù)據(jù)分片的透明代理,能夠自動路由數(shù)據(jù)至集群中的各個節(jié)點 ,所以Distributed表引擎需要和其他數(shù)

    2023年04月27日
    瀏覽(55)
  • [論文筆記] Gemini: A Computation-Centric Distributed Graph Processing System

    [論文筆記] Gemini: A Computation-Centric Distributed Graph Processing System

    Gemini: 以計算為中心的分布式圖處理系統(tǒng) [Paper] [Slides] [Code] OSDI’16 提出了 Gemini, 一個分布式圖處理系統(tǒng), 應(yīng)用了多種針對計算性能的優(yōu)化以在 效率之上構(gòu)建可擴展性 . Gemini 采用: 稀疏-稠密信號槽 抽象, 將混合推拉計算模型擴展到分布式場景 基于分塊的劃分 (chunk-based partiti

    2024年02月15日
    瀏覽(37)
  • Apache Hadoop: Building a Big Data Distributed Environm

    作者:禪與計算機程序設(shè)計藝術(shù) Apache Hadoop (以下簡稱HDFS)是一個開源的分布式文件系統(tǒng),用來存儲大量的數(shù)據(jù)集并進行計算處理。它可以處理超大數(shù)據(jù)集、實時數(shù)據(jù)分析、日志聚類等應(yīng)用場景。HDFS被廣泛應(yīng)用于企業(yè)數(shù)據(jù)倉庫、電子商務(wù)網(wǎng)站、搜索引擎、Hadoop生態(tài)系統(tǒng)中的大多

    2024年02月06日
    瀏覽(18)
  • HDFS文件創(chuàng)建與寫入

    實驗環(huán)境 Linux Ubuntu 16.04 前提條件: 1)Java 運行環(huán)境部署完成 2)Hadoop 的單點部署完成 ? 實驗內(nèi)容 在上述前提條件下,學(xué)習(xí)HDFS文件創(chuàng)建、寫入、追加與合并等操作 實驗步驟 啟動HDFS,在命令行窗口輸入下面的命令: 運行后顯示如下,根據(jù)日志顯示,分別啟動了NameNode、Dat

    2024年02月02日
    瀏覽(46)
  • Spark解析JSON文件,寫入hdfs

    一、用Sparkcontext讀入文件,map逐行用Gson解析,輸出轉(zhuǎn)成一個caseclass類,填充各字段,輸出。 解析JSON這里沒有什么問題。 RDD覆蓋寫的時候碰到了一些問題 : 1.直接saveAsTextFile沒有覆蓋true參數(shù); 2.轉(zhuǎn)dataframe時,還得一個一個字段顯化才能轉(zhuǎn)成dataframe; 3.write時,一開始打算寫

    2024年01月23日
    瀏覽(22)
  • 一百七十三、Flume——Flume寫入HDFS后的諸多小文件問題

    一百七十三、Flume——Flume寫入HDFS后的諸多小文件問題

    在用Flume采集Kafka中的數(shù)據(jù)寫入HDFS后,發(fā)現(xiàn)寫入HDFS的不是每天一個文件,而是一個文件夾,里面有很多小文件,浪費namenode的寶貴資源 在Flume任務(wù)的配置文件設(shè)置 a1.sinks.k1.hdfs.rollSize = 0 ? a1.sinks.k1.hdfs.rollCount = 0 ? 而不是 a1.sinks.k1.hdfs.round=true a1.sinks.k1.hdfs.roundValue=10 a1.sinks.k1

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包