張恒均
摘要:分布式存儲與傳統(tǒng)集中式存儲截然相反,集中式存儲采用的存儲服務器存放數據,更多地依賴于硬件設備,面對大規(guī)模存儲需求,很容易成為制約系統(tǒng)性能發(fā)揮的因素。分布式存儲所謂一種概念,最早由美國的谷歌公司提出,它包含的種類有很多,比如分布式文件系統(tǒng)、分布式對象存儲、分布式數據存儲等,但無論是哪種存儲,核心內容和思想都是一樣的。與傳統(tǒng)集中式存儲相比,分布式存儲所用到的物理設備較少,主要是靠整合、劃分和分配存儲資源來建立一個虛擬的存儲空間,再由具體某些虛擬存儲空間出發(fā),擴展出更多系統(tǒng)結構,在提高可靠性和有效性的同時,也解決了冗余等諸多問題。下面本文將對分布式存儲——數據中心建設解決策略進行研究。
關鍵詞:分布式數據;HDFS;Cepf;問題解決策略
一、透析分布式存儲
(一)HDFS分布式存儲體系結構
HDFS是一種實現分布式文件存儲的體系結構,它類似于一個文件傳輸系統(tǒng),當客戶端需要讀取某個文件數據時,首先會從元數據,也就是namenode服務器獲取文件信息,然后在元數據服務器和實際存儲數據服務器(datanode)的交互作用下,獲取具體有效數據。通過分析整個交互過程我們發(fā)現,作為整個HDFS文件系統(tǒng)中的管理者,namenode主要負責文件系統(tǒng)的命名空間、集群配置信息和存儲塊的復制;datanode則是文件存儲的基本單元,當客戶端向namenode發(fā)送文件寫入和讀取請求后,namenode會按照事先制定好的規(guī)則反饋給客戶端自己所管理的datanode信息。一般來說,一個集中中只有一個namenode的設計大大簡化了系統(tǒng)結構。
(二)Ceph分布式存儲系統(tǒng)結構
Ceph分布式存儲系統(tǒng)的設計初衷是為了提供更好的可靠性、可擴展性和性能。它所采用的是 CRUSH 算法和數據分布均衡,這與傳統(tǒng)集中式存儲的元數據尋址有著非常大的不同,可實現各種類型的負載副本放置規(guī)則,存儲節(jié)點規(guī)模十分龐大。Ceph的核心組件有Monitor服務、OSD服務和MDS服務,其中OSD是負責響應客戶請求返回具體數據的進程操作,它的元數據被保存在Monitor里。一般來說,Ceph分布式存儲系統(tǒng)中的塊存儲需要Monitor服務、OSD服務和客戶端軟件,Monitor負責維護存儲系統(tǒng)的硬件邏輯關系,OSD負責磁盤管理,以實現真正的數據讀寫。
塊存儲是Ceph分布式存儲系統(tǒng)三種存儲類型中的一種,另外兩種是文件存儲和對象存儲,每種類型的存儲都有各自的優(yōu)點和缺點,如塊存儲的優(yōu)點是利用Raid和LVM來保護數據的完成性,通過組合廉價硬盤來提高存儲容量,由多磁盤合成的邏輯盤能夠提升讀寫效率,缺點在于,數據共享無法在主機之間實現,且由光纖交換機等構建的硬件網絡平臺成本較高;文件存儲類型的優(yōu)點是,造價低廉,文件共享是可行的,但讀寫和數據傳輸速度慢也是不容忽視的問題,并且在使用場景和日志存儲方面也有比較特殊的要求;而對象存儲類型既具備了塊存儲讀寫速度高的優(yōu)點,也具備了文件存儲共享的特性,但更適合去更新變動較少的數據。
二、不同分布式存儲系統(tǒng)存在的問題
(一)HDFS的缺點
1.短時間、低延遲請求的響應能力不足
受自身性質和結構的限制,HDFS在處理用戶要求時間比較短的低延遲請求時會顯得力不從心。HDFS最初是為了處理和解決大型數據集問題而設計的,實現高吞吐量的代價就是出現高延遲。
2.小文件存儲量的有效性低
由于元數據會被存放在內存中,因此文件系統(tǒng)所能容納的文件數量必然是有限的,如果以每個文件160字節(jié)去計算,200萬份文件就需要占用至少600MB的內存空間,雖然以目前的情況來看是可行的,但當發(fā)展到10億以上時,對硬件的要求就會變得很高。
3.文件寫入及修改的限制
從目前來看,HDFS還不支持多用戶對同一個文件寫入的操作,也就是說,HDFS規(guī)定,一個文件只配有一個寫入者,且只能在文件末尾完成,對文件修改也是如此。
(二)Ceph分布式存儲系統(tǒng)的問題
1.可擴展性
由于CRUSH 算法的存在,使Ceph對系統(tǒng)擴容方面充滿了自信,甚至聲稱能夠實現無限擴展,事實上也確實如此。但這種無限擴展更多是站在宏觀立場去做判斷,其擴展過程并不是很順暢。由于Ceph沒有中心化的數據節(jié)點,使擴容易受“容錯域”制約,導致數據放置策略受到影響,所以擴容力度沒辦法得到提升。
2.存儲成本問題
眾所周知,Ceph是去中心化的分布式存儲,元數據被分布在各個物理設備上,事實上,對象的被隨機分配是無法保證均勻地存儲在每一塊磁盤上,所以某些磁盤的使用率會明顯高于全部磁盤的平均使用率,那么這跟存儲成本又有什么關系呢?在集群整體使用率不高的情況下,即便出現上述所講的問題也沒什么,但在整體使用率達到一定程度時(一般會以65%作為標準去衡量),就需要管理員對高使用率的磁盤進行reweight,如果在調整過程中另外一塊磁盤也被寫滿了,那管理員就必須被迫在Ceph沒有達到穩(wěn)定狀態(tài)前,又一次進行reweight操作,從而使Ceph變得越來越不穩(wěn)定,加之擴展性方面的問題,這個Ceph系統(tǒng)運行就會很緊張。所以,很多公司為了避免出現這些問題,會選擇增加成本,購買更多的物理設備,準備更多的磁盤,其實這并不是一個很省錢的辦法,很多業(yè)界人士認為,一般Ceph集群在達到50%使用率時,就要開始準備擴容了,越大規(guī)模的集群,越多空置的存儲資源,就會浪費越多的錢。
三、問題改進策略
(一)HDFS問題改進策略
1.HBase開源數據庫
建立 HBase數據庫是解決低延時問題比較有效的一個辦法,在很大程度上提升了存儲系統(tǒng)的性能,使用緩存或多master設計可以降低client的數據請求壓力,以減少延時。另一方面,著手于HDFS系統(tǒng)內部進行修改也是一個不錯的辦法,但需要權衡吞吐量的問題。
2.提高小文件存儲量的有效性
關于這方面問題的解決辦法還是不少的,比如用SequenceFile、MapFile、Har等方式對小文件進行歸檔操作,其中比較重要的點在于,要知道與歸檔文件的映射關系;再有就是橫向擴展,即把幾個Hadoop集群拖在一個虛擬服務器后面,形成一個大的Hadoop集群,google曾經就是這樣操作的;還有就是正在研發(fā)中的GFS II,它也將被改為分布式多Master設計,而且還支持Master的Failover。
(二)Ceph問題改進策略
1.擴充“容錯域”
在開始規(guī)劃Ceph集群時,設定好更大層次的“容錯域”,比如Rack。 可以是真實的Rack,即使沒有也可以是邏輯的Rack。這樣擴容時,可以擴一個邏輯“容錯域”,就可以打破擴一臺機器的限制,擴一整個Rack,至少有好幾臺機器。
2.Ceph存儲成本
到目前為止,還沒有太好的辦法去解決Ceph儲存成本的問題,有人建議過Ceph集群按整個pool去擴容,即當一個pool滿了,就不擴容了,開新的pool,新的對象只準寫新的pool,老的pool的對象只可以進行刪除和讀取操作,但這樣做也就談不上“無限擴容”了。
四、結束語
分布式存儲較集中式存儲相比,的確為使用者提供了諸多便利,具有很明顯的優(yōu)勢,且每一種分布式存儲都有自己獨特的亮點,給使用者提供了多樣化的選擇。但在具體應用時,還需要結合實際情況,HDFS也好,Ceph也罷,它們也都有自己的不足,沒有哪種產品是十全十美的,數據中心建設的標準應遵循分布式存儲的特點進行實施,這樣才能最大限度提高數據使用率和保證數據安全。
參考文獻
[1]寧睿,張琳.基于分布式深度網絡的網絡輿情分析方法研究與實現[J].電子設計工程,2020,28(14):85-89.
[2]高紅巖.基于分布式存儲的應用場景研究[J].網絡安全和信息化,2020(07):87-90.