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

HDFS 副本存放磁盤選擇策略詳解

存儲(chǔ) 存儲(chǔ)設(shè)備
在 HDFS 中,DataNode 將數(shù)據(jù)塊存儲(chǔ)到本地文件系統(tǒng)目錄中,具體的目錄可以通過配置 hdfs-site.xml 里面的 dfs.datanode.data.dir 參數(shù)。在典型的安裝配置中,一般都會(huì)配置多個(gè)目錄,并且把這些目錄分別配置到不同的設(shè)備上,比如分別配置到不同的HDD和SSD上。

在 HDFS 中,DataNode 將數(shù)據(jù)塊存儲(chǔ)到本地文件系統(tǒng)目錄中,具體的目錄可以通過配置 hdfs-site.xml 里面的 dfs.datanode.data.dir 參數(shù)。在典型的安裝配置中,一般都會(huì)配置多個(gè)目錄,并且把這些目錄分別配置到不同的設(shè)備上,比如分別配置到不同的HDD(HDD的全稱是Hard Disk Drive)和SSD(全稱Solid State Drives,就是我們熟悉的固態(tài)硬盤)上。

當(dāng)我們往 HDFS 上寫入新的數(shù)據(jù)塊,DataNode 將會(huì)使用 volume 選擇策略來為這個(gè)塊選擇存儲(chǔ)的地方。通過參數(shù) dfs.datanode.fsdataset.volume.choosing.policy 來設(shè)置,這個(gè)參數(shù)目前支持兩種磁盤選擇策略。

[[230665]]

  • round-robin
  • available space

如果想及時(shí)了解Spark、Hadoop或者Hbase相關(guān)的文章,歡迎關(guān)注微信公共帳號(hào):iteblog_hadoop

dfs.datanode.fsdataset.volume.choosing.policy 參數(shù)的默認(rèn)值是 org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy。這兩種磁盤選擇策略都是對(duì) org.apache.hadoop.hdfs.server.datanode.fsdataset.VolumeChoosingPolicy 接口進(jìn)行實(shí)現(xiàn),VolumeChoosingPolicy 接口其實(shí)就定義了一個(gè)函數(shù):chooseVolume 如下:

chooseVolume 函數(shù)對(duì)指定的副本從 volumes 里面選定滿足條件的磁盤。下面對(duì) Hadoop 內(nèi)置的兩種磁盤選擇策略進(jìn)行詳細(xì)的介紹。 

round-robin 磁盤選擇策略 

從名字就可以看出,這種磁盤選擇策略是基于輪詢的方式,具體的實(shí)現(xiàn)類是 org.apache.hadoop.hdfs.server.datanode.fsdataset.RoundRobinVolumeChoosingPolicy。它的實(shí)現(xiàn)很簡(jiǎn)單:

volumes 參數(shù)其實(shí)就是通過 dfs.datanode.data.dir 配置的目錄。blockSize 就是咱們副本的大小。RoundRobinVolumeChoosingPolicy 策略先輪詢的方式拿到下一個(gè) volume ,如果這個(gè) volume 的可用空間比需要存放的副本大小要大,則直接返回這個(gè) volume 用于存放數(shù)據(jù);如果當(dāng)前 volume 的可用空間不足以存放副本,則以輪詢的方式選擇下一個(gè) volume,直到找到可用的 volume,如果遍歷完所有的 volumes 還是沒有找到可以存放下副本的 volume,則拋出 DiskOutOfSpaceException 異常。 

從上面的策略可以看出,這種輪詢的方式雖然能夠保證所有磁盤都能夠被使用,但是如果 HDFS 上的文件存在大量的刪除操作,可能會(huì)導(dǎo)致磁盤數(shù)據(jù)的分布不均勻,比如有的磁盤存儲(chǔ)得很滿了,而有的磁盤可能還有很多存儲(chǔ)空間沒有得到利用。 

available space 磁盤選擇策略

可用空間磁盤選擇策略是從 Hadoop 2.1.0 開始引入的(詳情參見:HDFS-1804)。這種策略優(yōu)先將數(shù)據(jù)寫入具有***可用空間的磁盤(通過百分比計(jì)算的)。在實(shí)現(xiàn)上可用空間選擇策略內(nèi)部用到了上面介紹的輪詢磁盤選擇策略,具體的實(shí)現(xiàn)代碼在 org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy 類中,核心實(shí)現(xiàn)如下:

 

areAllVolumesWithinFreeSpaceThreshold 函數(shù)的作用是先計(jì)算所有 volumes 的***可用空間和最小可用空間,然后使用***可用空間減去最小可用空間得到的結(jié)果和 balancedSpaceThreshold(通過 dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold 參數(shù)進(jìn)行配置,默認(rèn)值是 10G) 進(jìn)行比較。

可用空間策略會(huì)以下面三種情況進(jìn)行處理:

1、如果所有的 volumes 磁盤可用空間都差不多,那么這些磁盤得到的***可用空間和最小可用空間差值就會(huì)很小,這時(shí)候就會(huì)使用輪詢磁盤選擇策略來存放副本。

2、如果 volumes 磁盤可用空間相差比較大,那么可用空間策略會(huì)將 volumes 配置中的磁盤按照一定的規(guī)則分為 highAvailableVolumes 和 lowAvailableVolumes。具體分配規(guī)則是先獲取 volumes 配置的磁盤中最小可用空間,加上 balancedSpaceThreshold(10G),然后將磁盤空間大于這個(gè)值的 volumes 放到 highAvailableVolumes 里面;小于等于這個(gè)值的 volumes 放到 lowAvailableVolumes 里面。

比如我們擁有5個(gè)磁盤組成的 volumes,編號(hào)和可用空間分別為 1(1G)、2(50G)、3(25G)、4(5G)、5(30G)。按照上面的規(guī)則,這些磁盤的最小可用空間為 1G,然后加上 balancedSpaceThreshold,得到 11G,那么磁盤編號(hào)為1、4的磁盤將會(huì)放到 lowAvailableVolumes 里面,磁盤編號(hào)為2,3和5將會(huì)放到 highAvailableVolumes 里面。

到現(xiàn)在 volumes 里面的磁盤已經(jīng)都分到 highAvailableVolumes 和 lowAvailableVolumes 里面了。

2.1、如果當(dāng)前副本的大小大于 lowAvailableVolumes 里面所有磁盤***的可用空間(mostAvailableAmongLowVolumes,在上面例子中,lowAvailableVolumes 里面***磁盤可用空間為 5G),那么會(huì)采用輪詢的方式從 highAvailableVolumes 里面獲取相關(guān) volumes 來存放副本。

2.2、剩下的情況會(huì)以 75%(通過 dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction 參數(shù)進(jìn)行配置,推薦將這個(gè)參數(shù)設(shè)置成 0.5 到 1.0 之間)的概率在 highAvailableVolumes 里面以輪詢的方式 volumes 來存放副本;25% 的概率在 lowAvailableVolumes 里面以輪詢的方式 volumes 來存放副本。

然而在一個(gè)長(zhǎng)時(shí)間運(yùn)行的集群中,由于 HDFS 中的大規(guī)模文件刪除或者通過往 DataNode 中添加新的磁盤仍然會(huì)導(dǎo)致同一個(gè) DataNode 中的不同磁盤存儲(chǔ)的數(shù)據(jù)很不均衡。即使你使用的是基于可用空間的策略,卷(volume)不平衡仍可導(dǎo)致較低效率的磁盤I/O。比如所有新增的數(shù)據(jù)塊都會(huì)往新增的磁盤上寫,在此期間,其他的磁盤會(huì)處于空閑狀態(tài),這樣新的磁盤將會(huì)是整個(gè)系統(tǒng)的瓶頸。

 

責(zé)任編輯:武曉燕 來源: Hadoop技術(shù)博文
相關(guān)推薦

2015-07-08 15:14:15

云存儲(chǔ)HDFS副本放置策略

2011-08-03 09:28:23

2011-07-28 14:14:17

組策略組策略命令

2018-03-07 10:17:59

磁盤陣列RAID模式

2021-04-14 09:04:03

大數(shù)據(jù)HDFS大數(shù)據(jù)開發(fā)

2022-03-17 12:08:40

移動(dòng)目標(biāo)防御

2012-05-10 09:18:14

惠普云計(jì)算融合云

2019-03-20 09:11:50

Web緩存策略

2019-06-29 14:34:27

磁盤IO排序

2019-09-17 14:31:37

磁盤排序IO

2024-09-26 06:30:36

2018-07-10 09:00:00

Linuxdd工具磁盤

2020-02-04 18:44:37

HDFS流程策略

2014-01-13 09:47:35

虛擬機(jī)

2024-04-18 00:20:56

Redis策略數(shù)據(jù)

2009-10-26 14:29:58

光纖接入技術(shù)

2010-08-27 10:45:50

無線LAN故障修復(fù)

2024-10-08 10:13:17

2011-07-21 13:04:01

組策略GPOAD

2009-03-04 10:27:50

虛擬磁盤桌面虛擬化Xendesktop
點(diǎn)贊
收藏

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