HDFS 實踐 | Uber 是如何提高 HDFS I/O 利用率的
?HDFS Federation、Warm Storage、YARN 在 HDFS 數(shù)據(jù)節(jié)點上共存,以及 YARN 利用率的提高提高了系統(tǒng)的 CPU 和內(nèi)存使用效率?將多種硬件服務(wù)器設(shè)計(24 x 2TB HDD、24 x 4TB HDD、35 x 8TB HDD)整合到 35 x 16TB HDD 的統(tǒng)一設(shè)計中,降低30%的硬件成本
新的 CAP 理論
人們可能在許多與分布式系統(tǒng)相關(guān)的文章和論文的標(biāo)題中看到過 CAP 定理,它指出:一致性、可用性和分區(qū)容忍度,這三個中只能選兩個!
下一代數(shù)據(jù)基礎(chǔ)設(shè)施應(yīng)用的邏輯類似于 CAP 定理——基礎(chǔ)設(shè)施只能提供所需的3個特性中的2個,即:成本效率、可用性和性能。

成本效率是 Uber 的首要任務(wù)之一,而 HDFS 是優(yōu)步必不可少的數(shù)據(jù)服務(wù),必須達到 99.9+% 的可用性,這兩個特點我們都不能妥協(xié)。那么問題就變成了:我們是否必須犧牲 HDFS 性能(尤其是 IO 性能)來換取成本效率和可用性?
在接下來的章節(jié)中,我們試圖分析當(dāng)前 HDFS 磁盤 IO 利用率,以評估當(dāng)多個數(shù)據(jù)服務(wù)在我們的下一代、行業(yè)領(lǐng)先的高密度硬件上運行時,我們是否會碰到 IO 瓶頸。
硬盤有多忙?
考慮到這個問題,我們轉(zhuǎn)向使用指標(biāo)來分析 HDFS 集群中所有 134,000 個硬盤的 IO 利用率。我們得到的數(shù)據(jù)令人震驚:
?好的地方:約 90% 的磁盤的平均 IO 利用率低于 6%。

?壞的地方:?部分硬盤 IO 利用率可高達15%以上,是平均硬盤 IO 利用率的5倍以上。盡管這些磁盤只是整個磁盤池的一小部分,但這也有數(shù)千個驅(qū)動器。
這些繁忙的磁盤如何分布在所有 HDFS 主機中:均勻分布在大量主機中,還是集中在一小群主機中? 如果答案是后者,那么這可能會給即將推出的運行多項服務(wù)的高密度 HDFS 服務(wù)器帶來重大問題。
主機有多忙
為了回答這個問題,我們選擇了最繁忙的磁盤(>13,000 個磁盤)中的前 10%,并檢查它們在大約 5,600 個 HDFS 主機中的分布情況。有趣的是,結(jié)果顯示大約 55% 的最繁忙的驅(qū)動器包含 10% 的 HDFS 主機。

數(shù)據(jù)顯示,最繁忙的磁盤確實集中在一小群主機中,而不是分布在所有主機中。這表明我們應(yīng)該將精力集中在這些 IO 活躍度最高的主機上,因為隨著我們的增長,它們更有可能成為 IO 瓶頸。
集群有多繁忙?
我們最初的重點是我們之前確定的前 330 個最繁忙的主機。進一步檢查表明,這 330 個熱數(shù)據(jù)節(jié)點駐留在總共約 20 個 HDFS 集群中的 4 個:

數(shù)據(jù)告訴我們一個事實:集群使用率是磁盤 IO 利用率的主要因素。集群級別的 IO 利用率,尤其是不平衡的 IO 流量,是團隊?wèi)?yīng)該解決的首要任務(wù)。
如何提高 HDFS IO 利用率
Hadoop 團隊立即采取行動解決該問題:
?增加了小型、繁忙集群的集群大小,例如 Tmp 和 Ingestion 集群;?重新平衡所有 HDFS 節(jié)點之間的磁盤容量使用;?基于 data age 的數(shù)據(jù)塊平衡和布局
采取行動后,我們再次研究了最繁忙的 HDFS 節(jié)點的前 10%。我們發(fā)現(xiàn)小而繁忙的集群消失了。然而,前 10%(或 558 臺)最活躍的主機都在主 HDFS 集群中,該集群擁有 3,000 多個數(shù)據(jù)節(jié)點。這引出了另一個問題:為什么它們都在最大的HDFS集群中?進一步的研究表明,這 558 臺主機有一個共同點:它們與新添加的 YARN 服務(wù)共置一處,以充分利用 HDFS 服務(wù)未使用的硬件資源。
為了理解共存的 YARN 服務(wù)對 HDFS 主機的影響,我們再次檢查了整個磁盤 IO 利用率,并根據(jù)主機上運行的服務(wù)比較了所有磁盤 IO 利用率。差異是顯著的:同時接受 HDFS 和 YARN 工作負(fù)載的磁盤比只運行 HDFS 的磁盤有更高的 IO 利用率。

在主機級別,匯總的磁盤 IO 利用率更為顯著:共存的 YARN 服務(wù)在每個主機級別為 HDFS 節(jié)點帶來了更高的 IO 請求。

長期策略
YARN 服務(wù)的大量磁盤 IO 操作不僅會降低 IO 性能,而且會占用磁盤空間,導(dǎo)致磁盤故障率升高,增加主機日常運行成本。我們認(rèn)識到這些挑戰(zhàn),并決定在下一代 HDFS 服務(wù)器中添加一個專用 SSD 來處理來自 YARN 服務(wù)的磁盤 IO 請求。這將以少量的成本消除 YARN 共存帶來的所有負(fù)面影響。與此同時,Spark 團隊提出了一個遠(yuǎn)程 shuffle 服務(wù),將減少大約50%的本地磁盤寫操作,并將在未來幾個月推出。
Apache?, Apache Hadoop?, and Hadoop? are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. No endorsement by The Apache Software Foundation is implied by the use of these marks.
本文翻譯自《Improving HDFS I/O Utilization for Efficiency》:https://eng.uber.com/improving-hdfs-i-o-utilization-for-efficiency/
