溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hadoop的上傳和下載效率優(yōu)化方法是什么

發(fā)布時間:2021-12-10 11:27:26 來源:億速云 閱讀:139 作者:iii 欄目:云計算

這篇文章主要講解了“Hadoop的上傳和下載效率優(yōu)化方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Hadoop的上傳和下載效率優(yōu)化方法是什么”吧!

一、概述  

基于任何平臺實現(xiàn)的云盤系統(tǒng),面臨的首要的技術(shù)問題就是客戶端上傳和下載效率優(yōu)化問題。基于Hadoop實現(xiàn)的云盤系統(tǒng),受到Hadoop文件讀寫 機制的影響,采用Hadoop提供的API進行HDFS文件系統(tǒng)訪問,文件讀取時默認是順序、逐block讀取;寫入時是順序?qū)懭搿?/p>

二、讀寫機制  

首先來看文件讀取機制:盡管DataNode實現(xiàn)了文件存儲空間的水平擴展和多副本機制,但是針對單個具體文件的讀取,Hadoop默認的API接 口并沒有提供多DataNode的并行讀取機制?;贖adoop提供的API接口實現(xiàn)的云盤客戶端也自然面臨同樣的問題。Hadoop的文件讀取流程如 下圖所示:

Hadoop的上傳和下載效率優(yōu)化方法是什么

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

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

  3. 客戶端開發(fā)庫會選取離客戶端最接近的datanode來讀取block;

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

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

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

  這里需要注意的關(guān)鍵點是:多個Datanode順序讀取。

  其次再看文件的寫入機制:

Hadoop的上傳和下載效率優(yōu)化方法是什么

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

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

  3. 當(dāng)客戶端開始寫入文件的時候,開發(fā)庫會將文件切分成多個packets,并在內(nèi)部以"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)了故障,那么當(dāng)前的pipeline會被關(guān)閉,出現(xiàn)故障的datanode會從當(dāng)前的 pipeline中移除,剩余的block會繼續(xù)剩下的datanode中繼續(xù)以pipeline的形式傳輸,同時Namenode會分配一個新的 datanode,保持replicas設(shè)定的數(shù)量。

  關(guān)鍵詞:開發(fā)庫把packet以流的方式寫入第一個datanode,該datanode將其傳遞給pipeline中的下一個datanode,知道最后一個Datanode,這種寫數(shù)據(jù)的方式呈流水線方式。

三、解決方案

  1.下載效率優(yōu)化

  通過以上讀寫機制的分析,我們可以發(fā)現(xiàn)基于Hadoop實現(xiàn)的云盤客戶段下載效率的優(yōu)化可以從兩個層級著手:

  1.文件整體層面:采用并行訪問多線程(多進程)份多文件并行讀取。

  2.Block塊讀?。焊膶慔adoop接口擴展,多Block并行讀取。

  2.上傳效率優(yōu)化

  上傳效率優(yōu)化只能采用文件整體層面的并行處理,不支持分Block機制的多Block并行讀取。

感謝各位的閱讀,以上就是“Hadoop的上傳和下載效率優(yōu)化方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Hadoop的上傳和下載效率優(yōu)化方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI