HDFS中Short-Circuit是什么

這篇文章主要為大家展示了“HDFS中Short-Circuit是什么”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“HDFS中Short-Circuit是什么”這篇文章吧。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供四子王企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為四子王眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

解釋下 HDFS 的 Short-Circuit ?

這是一個(gè)比較高段位的冷門問(wèn)題了,我也是一般在面高階的程序員才會(huì)拋出這樣的問(wèn)題,對(duì)于考察系統(tǒng)底層原理掌握度方面還是挺有好的。

先說(shuō)目的:

因?yàn)镠adoop的一大基本原則就是移動(dòng)數(shù)據(jù)不如移動(dòng)計(jì)算,所以一般HDFS的client端經(jīng)常會(huì)和提供數(shù)據(jù)的DataNode在同一個(gè)節(jié)點(diǎn),Short Circuit Local Reads的目的就是提高在這種情況下的數(shù)據(jù)讀取性能。

正常的數(shù)據(jù)讀取流程,DataNode必須為每個(gè)正在讀取數(shù)據(jù)塊的客戶端保留一個(gè)線程和一個(gè)TCP套接字。內(nèi)核中會(huì)有TCP協(xié)議的開(kāi)銷,以及DataTransferProtocol協(xié)議的開(kāi)銷,因此這里有很大的優(yōu)化空間。

再說(shuō)流程:

1. client 會(huì)向DataNode請(qǐng)求創(chuàng)建一塊共享內(nèi)存,DataNode創(chuàng)建共享內(nèi)存文件并將共享內(nèi)存文件描述符返回給 client。(內(nèi)存文件描述符,Unix的一種機(jī)制,目的是讓DataNode不是將整個(gè)目錄傳遞給客戶端,而是打開(kāi)塊文件和元數(shù)據(jù)文件,保證數(shù)據(jù)的安全性)

2. client  申請(qǐng)共享內(nèi)存中的槽位,并向DataNode請(qǐng)求要讀取的副本文件描述符,DataNode打開(kāi)副本文件并將數(shù)據(jù)塊文件和元數(shù)據(jù)文件的文件描述符返回給 client。

3. client 讀取完副本后,異步向DataNode請(qǐng)求釋放文件描述符及相應(yīng)槽位。

另外,其實(shí)這個(gè)問(wèn)題也不一定要等面試官問(wèn)了才回答,在他問(wèn)你HDFS的讀寫(xiě)過(guò)程的時(shí)候,你也可以在最后適當(dāng)?shù)夭迳蟽删洌癸@逼格。

像這樣:

“剛才我說(shuō)的還是比較基礎(chǔ)和常規(guī)的讀寫(xiě)流程,實(shí)際上HDFS還有一個(gè)Short-Circuit機(jī)制可以來(lái)做數(shù)據(jù)本地讀取的優(yōu)化,這是更加底層的內(nèi)容了...”

接下來(lái)可以先別急著講,先看看面試官的反應(yīng)看他有沒(méi)有興趣聽(tīng),有的話就可以把上面這一段說(shuō)出去了,當(dāng)然也有可能連面試官都沒(méi)聽(tīng)過(guò)這個(gè)東西,那就無(wú)所謂了,你說(shuō)的內(nèi)容已經(jīng)唬到他了。

之前說(shuō)過(guò)在面試的過(guò)程中可以適當(dāng)?shù)匾龑?dǎo)面試官的提問(wèn)方向,往你擅長(zhǎng)的方向上帶,剛才說(shuō)的其實(shí)就是一種引導(dǎo)的手段了,掌握這個(gè)技能的話你會(huì)發(fā)現(xiàn)你在面試中能表現(xiàn)得更自如,不用被牽著鼻子走。


當(dāng)兩個(gè)客戶端嘗試訪問(wèn)對(duì)HDFS相同的文件,會(huì)發(fā)生什么?

HDFS只支持獨(dú)占寫(xiě)入。

當(dāng)?shù)谝粋€(gè)客戶端連接Namenode打開(kāi)文件進(jìn)行寫(xiě)入時(shí),Namenode授予租約的客戶端創(chuàng)建這個(gè)文件。當(dāng)?shù)诙€(gè)客戶端試圖打開(kāi)同一個(gè)文件寫(xiě)入時(shí),Namenode會(huì)發(fā)現(xiàn)該文件的租約已經(jīng)授予給另一個(gè)客戶端,并拒絕第二個(gè)客戶端打開(kāi)請(qǐng)求。

這個(gè)問(wèn)題還是比較簡(jiǎn)單的,考查的是你是不是真的有實(shí)操過(guò),是不是有踩過(guò)坑且有思考。


為什么 HDFS 不適合存儲(chǔ)過(guò)多的小文件?

兩個(gè)重點(diǎn),一個(gè)是多,一個(gè)是小,分別解釋。

1)小文件過(guò)多,會(huì)過(guò)多占用namenode的內(nèi)存,并浪費(fèi)block。 

  • 文件的元數(shù)據(jù),都是存儲(chǔ)在namenode上 

元數(shù)據(jù)包括文件被分成了哪些blocks,每個(gè)block存儲(chǔ)在哪些服務(wù)器的哪個(gè)block塊上。小文件過(guò)多,元數(shù)據(jù)必定過(guò)多。HDFS的每個(gè)文件、目錄、數(shù)據(jù)塊占用150B,因此300M內(nèi)存情況下,只能存儲(chǔ)不超過(guò)300M/150=2M個(gè)文件/目錄/數(shù)據(jù)塊的元數(shù)據(jù) 

  • dataNode會(huì)向NameNode發(fā)送兩種類型的報(bào)告:增量報(bào)告和全量報(bào)告

增量報(bào)告是當(dāng)dataNode接收到block或者刪除block時(shí),會(huì)向nameNode報(bào)告。全量報(bào)告是周期性的,NN處理100萬(wàn)的block報(bào)告需要1s左右,這1s左右NN會(huì)被鎖住,其它的請(qǐng)求會(huì)被阻塞。

2)文件過(guò)小,尋道時(shí)間大于數(shù)據(jù)讀寫(xiě)時(shí)間,這不符合HDFS的設(shè)計(jì): 

HDFS為了使數(shù)據(jù)的傳輸速度和硬盤的傳輸速度接近,則設(shè)計(jì)將尋道時(shí)間相對(duì)最小化,將block的大小設(shè)置的比較大,這樣讀寫(xiě)數(shù)據(jù)塊的時(shí)間將遠(yuǎn)大于尋道時(shí)間,接近于硬盤的傳輸速度。

以上是“HDFS中Short-Circuit是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享名稱:HDFS中Short-Circuit是什么
網(wǎng)頁(yè)地址:http://www.muchs.cn/article6/ihpiig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、定制開(kāi)發(fā)、外貿(mào)建站、小程序開(kāi)發(fā)、網(wǎng)站制作云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)