HDFS作為一種新興的并行文件系統(tǒng),和現(xiàn)有的分布式文件系統(tǒng)相似,他們都是運(yùn)行在普通硬件之上的分布式文件系統(tǒng),然而HDFS與其他分布式文件系統(tǒng)也存在著一些差別。如HDFS具有高容錯(cuò)性,可以部署在低成本的硬件之上,同時(shí)放松了對(duì)POSIX的需求,使其可以以流的形式訪問(wèn)文件數(shù)據(jù),非常適合大數(shù)據(jù)集的應(yīng)用程序。分析研究HDFS與其他并行文件系統(tǒng)的相同點(diǎn)和不同點(diǎn),能夠深入了解HDFS系統(tǒng)的應(yīng)用場(chǎng)景和設(shè)計(jì)理念。 (1)訪問(wèn)的透明性,用戶能通過(guò)相同操作來(lái)訪問(wèn)本地文件和遠(yuǎn)程文件。HDFS可以做到這一點(diǎn),但如果HDFS設(shè)置成本地文件系統(tǒng),而不是分布式,那么HDFS的應(yīng)用程序可以直接讀寫本地文件,只需要修改配置文件??梢?jiàn),HDFS提供的訪問(wèn)透明性是不完全的,畢竟它構(gòu)建于java之上,不能像NFS和Lustre那樣去修改Unix內(nèi)核,同時(shí)將本地文件和遠(yuǎn)程文件以一致地方式處理。 (2)并發(fā)控制,客戶端對(duì)文件的讀寫不應(yīng)該影響其他客戶端對(duì)同一個(gè)文件的讀寫。要想實(shí)現(xiàn)這種單個(gè)文件拷貝語(yǔ)義,分布式文件系統(tǒng)需要做出復(fù)雜的交互,例如采用時(shí)間戳、采用互斥、原子操作等。而HDFS采用的機(jī)制非常簡(jiǎn)單,任何時(shí)間都只允許一個(gè)客戶端進(jìn)行寫操作。當(dāng)客戶端需要寫文件時(shí),會(huì)對(duì)這個(gè)文件申請(qǐng)一個(gè)租約,只有這個(gè)租約被釋放,別的客戶端才能申請(qǐng)對(duì)這個(gè)文件的寫操作。文件經(jīng)創(chuàng)建并寫入關(guān)閉之后不再改變,它的模型是“Write-Once-Read-Many”。 (3)資源移動(dòng)策略,HDFS支持“移動(dòng)計(jì)算到數(shù)據(jù)”。若一個(gè)Map任務(wù)是對(duì)某個(gè)數(shù)據(jù)塊的操作,則這個(gè)操作必定是在存儲(chǔ)這個(gè)數(shù)據(jù)塊的節(jié)點(diǎn)上完成的,同時(shí)HDFS支持?jǐn)?shù)據(jù)的多副本(默認(rèn)為3個(gè)副本),存儲(chǔ)任一副本的節(jié)點(diǎn)都可以執(zhí)行Map任務(wù)的操作,JobTracker會(huì)把任務(wù)分配給距離客戶端最近的,且存有副本的節(jié)點(diǎn)。 通過(guò)上面三方面的比較,可以深入的理解HDFS的優(yōu)點(diǎn)和缺點(diǎn),以及HDFS的設(shè)計(jì)應(yīng)用場(chǎng)景。對(duì)于追求海量數(shù)據(jù)的高吞吐量、批量處理任務(wù)HDFS無(wú)疑能發(fā)揮巨大的威力,但是對(duì)文件的隨機(jī)讀寫卻并不適合。同時(shí),HDFS也不適合對(duì)低延時(shí)訪問(wèn)、大量小文件的存儲(chǔ)及處理。
|