日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HDFS Client 设计实现解析

發(fā)布時(shí)間:2025/3/17 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDFS Client 设计实现解析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前面對(duì) HDFS NameNode 和 DataNode 的架構(gòu)設(shè)計(jì)實(shí)現(xiàn)要點(diǎn)做了介紹,本文對(duì) HDFS 最后一個(gè)主要構(gòu)成組件 Client 做進(jìn)一步解析。

流式讀取

HDFS Client 為客戶端應(yīng)用提供一種流式讀取模型,就像訪問(wèn)本機(jī)文件系統(tǒng)一樣來(lái)訪問(wèn) HDFS。將復(fù)雜的分布式文件系統(tǒng)讀取細(xì)節(jié)隱藏,簡(jiǎn)化了上層應(yīng)用的使用難度。寫(xiě)過(guò)讀取本機(jī)文件的程序員想必都很熟悉流式讀取的編程模型,就不多說(shuō)了。

錯(cuò)誤處理

相比讀取本機(jī)文件系統(tǒng),從分布式文件系統(tǒng)讀取出錯(cuò)概率會(huì)更高。因此 HDFS Client 提供了一些附加功能來(lái)提升分布式文件系統(tǒng)讀取訪問(wèn)的可用性。在從某個(gè) DataNode 讀取數(shù)據(jù)的過(guò)程中若發(fā)生錯(cuò)誤異常,Client 會(huì)透明的轉(zhuǎn)移到距離第二接近的 DataNode 上,并記住第一個(gè) DataNode 讀取失敗,后續(xù)的 blocks 讀取將不再嘗試該 DataNode。除此之外 Client 對(duì)于讀到的每個(gè) block 進(jìn)行 checksum 校驗(yàn),若讀到損壞的 block,則向 NameNode 匯報(bào),并嘗試從其他副本重新讀取。

緩沖寫(xiě)入

創(chuàng)建文件并寫(xiě)入數(shù)據(jù)的操作并不是直接連到 DataNode 同步遠(yuǎn)程寫(xiě)入的,而是通過(guò)寫(xiě)入本地的一個(gè)臨時(shí)文件來(lái)作緩沖。我們寫(xiě)本地文件也經(jīng)常使用一種 BufferedWriter 來(lái)提高寫(xiě)入吞吐能力。本質(zhì)上都是為了解決數(shù)據(jù)生產(chǎn)端和數(shù)據(jù)接收端處理能力的差異,在單機(jī)情況下磁盤(pán)操作慢,所以用內(nèi)存 buffer 來(lái)緩沖。在分布式環(huán)境下,不僅要考慮磁盤(pán)還要考慮網(wǎng)絡(luò),所以用本地內(nèi)存加上本地磁盤(pán)文件來(lái)做緩沖。

應(yīng)用寫(xiě) HDFS 的操作被透明的轉(zhuǎn)移到寫(xiě)入本地文件,當(dāng)本地文件積累的數(shù)據(jù)超過(guò)一個(gè) block 的大小后,Client 才請(qǐng)求 NameNode 分配 DataNodes,Client 再將本地文件的數(shù)據(jù)一次性的發(fā)送到對(duì)應(yīng)的 DataNodes 流水線處理。這實(shí)際是將同步寫(xiě)轉(zhuǎn)變成了異步寫(xiě)過(guò)程,提高了寫(xiě)入吞吐性能。

當(dāng)文件被關(guān)閉后,在 Client 端臨時(shí)文件中剩下的數(shù)據(jù)將被傳輸給 DataNode。然后 Client 告知 NameNode 文件已關(guān)閉,寫(xiě)入完成。NameNode 此時(shí)才將新寫(xiě)入的文件持久化,若在文件關(guān)閉前 NameNode 宕機(jī),則正在寫(xiě)入的文件算作丟失了。

總結(jié)

Client 在 HDFS 的三個(gè)主要部件中相對(duì)簡(jiǎn)單,在設(shè)計(jì)實(shí)現(xiàn)時(shí)更多考慮易用性、容錯(cuò)和性能。
至此,對(duì) HDFS 的三個(gè)主要部件 NameNode、DataNode 和 Client 的設(shè)計(jì)實(shí)現(xiàn)要點(diǎn)進(jìn)行了講述,
后續(xù)會(huì)以主題文章對(duì)其中一些關(guān)鍵的技術(shù)點(diǎn)做進(jìn)一步剖析。

參考

[1] Hadoop Documentation. HDFS Architecture.
[2] Robert Chansler, Hairong Kuang, Sanjay Radia, Konstantin Shvachko, and Suresh Srinivas. The Hadoop Distributed File System
[3] Tom White. Hadoop: The Definitive Guide. O’Reilly Media(2012-05), pp 94-96


下面是我自己開(kāi)的一個(gè)微信公眾號(hào) [瞬息之間],除了寫(xiě)技術(shù)的文章、還有產(chǎn)品的、行業(yè)和人生的思考,希望能和更多走在這條路上同行者交流,有興趣可關(guān)注一下,謝謝。

版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

?

轉(zhuǎn)載于:https://www.cnblogs.com/mindwind/p/4833099.html

總結(jié)

以上是生活随笔為你收集整理的HDFS Client 设计实现解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。