自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

分布式文件系統(tǒng)HDFS設(shè)計

大數(shù)據(jù) 分布式
我們都知道,Hadoop除了計算部分Mapreduce外,還有一個分布式文件系統(tǒng)HDFS,全稱Hadoop Distributed Filesystem。今天我們將介紹一下他的設(shè)計問題。

 

《Hadoop 權(quán)威指南》上用這么一句話來描述HDFS:

HDFS is a filesystem designed for storing very large files with streaming data access patterns, running on clusters of commodity hardware.

有幾個關(guān)鍵性的詞組:Very large files,Streaming data access,以及Commodity hardware。解下來一個一個解釋。

① Very large files

在Hadoop中,“very large”是多大?運(yùn)行在HDFS上的應(yīng)用具有很大的數(shù)據(jù)集。HDFS上的一個典型文件大小一般都在G字節(jié)至T字節(jié)?,F(xiàn)如今,已經(jīng)有不少的企業(yè),存儲在HDFS上的數(shù)據(jù),已經(jīng)超過了PB的級別,例如淘寶。

② Streaming data access

HDFS的設(shè)計的理想用法是一次寫入,多次讀取。這種方式的使用是最高效的。運(yùn)行在HDFS上的應(yīng)用和普通的應(yīng)用不同,需要流式訪問它們的數(shù)據(jù)集。HDFS的設(shè)計中更多的考慮到了數(shù)據(jù)批處理,而不是用戶交互處理。比之?dāng)?shù)據(jù)訪問的低延遲問題,更關(guān)鍵的在于數(shù)據(jù)訪問的高吞吐量,所以,從這方面來說,讀取整個數(shù)據(jù)的時間延遲要比讀取到第一條記錄的數(shù)據(jù)延遲更重要(這一點很重要,這一思想,將在《HDFS學(xué)習(xí)(二) – HDFS Block介紹》中說明)。

③ Commodity hardware

Hadoop適合部署在廉價的機(jī)器上,即普通的機(jī)器上,不需要時昂貴且高可靠的機(jī)器。這樣的話,機(jī)器節(jié)點的故障幾率就會非常高。所以,Hadoop是一個高度容錯的系統(tǒng),錯誤檢測和快速、自動的恢復(fù)是HDFS最核心的架構(gòu)目標(biāo)。Hadoop出現(xiàn)故障時,被設(shè)計成能夠繼續(xù)進(jìn)行且不讓用戶察覺。

綜上,HDFS是一個不錯的分布式文件系統(tǒng),但是,HDFS也有其不適合的場合,也有其缺點:

① 低延時數(shù)據(jù)訪問

HDFS不太適合于要求低延時(數(shù)十毫秒)訪問的應(yīng)用程序,因為HDFS是設(shè)計用于高吞吐量數(shù)據(jù)訪問的,這就需要以一定的延時為代價。而對于那些有低延時要求的應(yīng)用程序,HBase是一個更好的選擇。HBase的口號就是“Use Apache HBase when you need random, realtime read/write access to your Big Data”。

② 大量的小文件

因為Namenode把文件系統(tǒng)的元數(shù)據(jù)放置在內(nèi)存中,所以文件系統(tǒng)所能容納的文件數(shù)目是由Namenode的內(nèi)存大小來決定。一般來說,每一個文件、文件夾和Block需要占據(jù)150字節(jié)左右的空間,所以,如果你有1000萬個文件,每一個占據(jù)一個Block,你就至少需要2G內(nèi)存。當(dāng)前來說,數(shù)百萬的文件還是可行的,當(dāng)擴(kuò)展到數(shù)十億時,我們就需要幾十G的內(nèi)存。這樣算來,Namenode內(nèi)存,就嚴(yán)重制約了集群的擴(kuò)展。

還有一個問題就是,因為Map task的數(shù)量是由splits來決定的,所以用MR處理大量的小文件時,就會產(chǎn)生過多的Map task,線程管理開銷將會增加作業(yè)時間。處理大量小文件的速度遠(yuǎn)遠(yuǎn)小于處理同等大小的大文件的速度。舉個例子,處理10000M的文件,若每個split為1M,那就會有10000個Map tasks,會有很大的線程開銷;若每個split為100M,則只有100個Map tasks,每個Map task將會有更多的事情做,而線程的管理開銷也將減小很多。

對于第一問題,最新版本的Hadoop已經(jīng)有了解決方案:HDFS Federation,將在《HDFS學(xué)習(xí)(四) – HDFS Federation》做詳細(xì)介紹。

對于第二個問題,Hadoop本身也提供了一定的解決方案,將在《Hadoop學(xué)習(xí)(五) – 小文件處理》做詳細(xì)介紹。

③ 多用戶寫,任意文件修改

目前Hadoop只支持單用戶寫,不支持并發(fā)多用戶寫。可以使用Append操作在文件的末尾添加數(shù)據(jù),但不支持在文件的任意位置進(jìn)行修改?!禜adoop 權(quán)威指南》第三版上說,現(xiàn)在尚無對這方面的支持。

Files in HDFS may be written to by a single writer. Writes are always made at the end of the file. There is no support for multiple writers or for modifications at arbitrary offsets in the file. (These might be supported in the future, but they are likely to be relatively inefficient.)

原文鏈接:http://shitouer.cn/2012/12/hdfs-design-introduction/

【編輯推薦】

 

責(zé)任編輯:彭凡 來源: 石頭兒
相關(guān)推薦

2012-08-31 16:04:11

HDFS分布式文件系統(tǒng)

2013-06-18 14:00:59

HDFS分布式文件系統(tǒng)

2013-06-18 14:13:43

HDFS分布式文件系統(tǒng)

2013-06-18 14:33:13

HDFS分布式文件系統(tǒng)

2013-01-09 10:16:09

HDFS

2021-04-13 08:06:17

分布式HDFS存儲大型數(shù)據(jù)

2018-03-01 16:26:30

HDFSHadoop系統(tǒng)

2013-01-07 10:42:43

HDFS

2010-11-01 05:50:46

分布式文件系統(tǒng)

2013-06-18 16:58:12

HDFS分布式文件系統(tǒng)

2018-08-14 10:44:58

HadoopHDFS命令

2017-10-17 08:33:31

存儲系統(tǒng)分布式

2010-06-07 14:02:13

Hadoop的分布式文

2010-11-15 13:24:07

分布式文件系統(tǒng)

2010-06-04 18:45:43

Hadoop分布式文件

2012-09-19 13:43:13

OpenAFS分布式文件系統(tǒng)

2012-09-19 15:05:24

MogileFS分布式文件系統(tǒng)

2013-05-27 14:46:06

文件系統(tǒng)分布式文件系統(tǒng)

2018-10-11 10:55:44

分布式文件系統(tǒng)HDFS

2011-07-15 17:48:27

Platform
點贊
收藏

51CTO技術(shù)棧公眾號