分布式存儲(chǔ)中的元數(shù)據(jù)管理
元數(shù)據(jù)被定義為:描述數(shù)據(jù)的數(shù)據(jù),對(duì)數(shù)據(jù)及信息資源的描述性信息。
元數(shù)據(jù)(Metadata)是描述其它數(shù)據(jù)的數(shù)據(jù)(data about other data),或者說(shuō)是用于提供某種資源的有關(guān)信息的結(jié)構(gòu)數(shù)據(jù)(structured data)。元數(shù)據(jù)是描述信息資源或數(shù)據(jù)等對(duì)象的數(shù)據(jù),其使用目的在于:識(shí)別資源;評(píng)價(jià)資源;追蹤資源在使用過(guò)程中的變化;實(shí)現(xiàn)簡(jiǎn)單高效地管理大量網(wǎng)絡(luò)化數(shù)據(jù);實(shí)現(xiàn)信息資源的有效發(fā)現(xiàn)、查找、一體化組織和對(duì)使用資源的有效管理。
對(duì)于元數(shù)據(jù)的管理目前有幾種常用的解決方案:中心節(jié)點(diǎn)管理元數(shù)據(jù),分布式管理元數(shù)據(jù),無(wú)元數(shù)據(jù)設(shè)計(jì);本文談?wù)勅N方案的特點(diǎn):
1、中心節(jié)點(diǎn)管理元數(shù)據(jù)
在設(shè)計(jì)分布式(存儲(chǔ))系統(tǒng)時(shí),使用中心節(jié)點(diǎn)是非常簡(jiǎn)潔、清晰地一種方案,中心節(jié)點(diǎn)通常兼具元數(shù)據(jù)存儲(chǔ)與查詢、集群節(jié)點(diǎn)狀態(tài)管理、決策制定與任務(wù)下發(fā)等功能;
優(yōu)點(diǎn):
A.由于其元數(shù)據(jù)集中式管理的特點(diǎn),可以方便的處理集群運(yùn)維管理的統(tǒng)計(jì)分析類(lèi)需求;
B. 中心節(jié)點(diǎn)記錄了用戶數(shù)據(jù)的狀態(tài)信息(即元數(shù)據(jù)),在擴(kuò)容時(shí),可以選擇不做rebalance操作(rebalance引起的數(shù)據(jù)遷移可能帶來(lái)巨大的性能開(kāi)銷(xiāo)),且仍能正常尋址;
缺點(diǎn)及解決方案:
a.單點(diǎn)故障是設(shè)計(jì)分布式系統(tǒng)最忌諱的問(wèn)題之一,中心節(jié)點(diǎn)簡(jiǎn)潔的設(shè)計(jì)也帶來(lái)了此問(wèn)題,如何實(shí)現(xiàn)HA呢?;解決方案:(1)使用主備模型,主備之間使用同步或異步的方式進(jìn)行增量或全量的數(shù)據(jù)同步(如TFS,mfs,HDFS2.0等),或者主備之間使用遠(yuǎn)端共享存儲(chǔ)(如HDFS2.0,遠(yuǎn)端存儲(chǔ)需要高可用);
b.存在性能和容量擴(kuò)展上限,集中式中心節(jié)點(diǎn)自身硬件設(shè)施存在擴(kuò)展(scale up)上限及查詢式尋址方式,導(dǎo)致此問(wèn)題;即使client緩存元數(shù)據(jù)或使用緩存集群,也不能在根本上消除上限,在某些場(chǎng)景下(如海量小文件),此問(wèn)題仍然存在;解決方案:(1)優(yōu)化升級(jí)硬件,如使用SSD,大內(nèi)存等機(jī)器;(2)當(dāng)面臨此問(wèn)題時(shí),考慮使用分布式管理元數(shù)據(jù)方案。
2、分布式管理元數(shù)據(jù)
和中心節(jié)點(diǎn)的方案相似,只是將元數(shù)據(jù)分片并使用分布式節(jié)點(diǎn)管理存儲(chǔ),在保有中心節(jié)點(diǎn)方案優(yōu)點(diǎn)的同時(shí),解決了性能和容量擴(kuò)展上限的問(wèn)題,同時(shí),多個(gè)節(jié)點(diǎn)同時(shí)提供元數(shù)據(jù)查詢服務(wù),系統(tǒng)性能得到提升;
缺點(diǎn)
此類(lèi)系統(tǒng)較為少見(jiàn),系統(tǒng)本身結(jié)構(gòu)復(fù)雜,實(shí)現(xiàn)也有一定難度;
a.系統(tǒng)包含兩種相對(duì)獨(dú)立的分布式節(jié)點(diǎn):元數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn),它們均是帶狀態(tài)節(jié)點(diǎn),每種節(jié)點(diǎn)組成的分布式模塊都要面臨分布式CAP原則的取舍,都要做到可擴(kuò)展,尤其是元數(shù)據(jù)對(duì)一致性有著更高要求;
b.元數(shù)據(jù)節(jié)點(diǎn)需要共同維護(hù)數(shù)據(jù)節(jié)點(diǎn)的狀態(tài),并在狀態(tài)變化時(shí)作出一致性的決策;這些都對(duì)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)構(gòu)成了很大挑戰(zhàn);
c.另外,大量元數(shù)據(jù)所需的存儲(chǔ)設(shè)備也是一筆不可忽略的成本開(kāi)銷(xiāo);
上面兩種方案有著共同思想:記錄并維護(hù)數(shù)據(jù)的狀態(tài)(即元數(shù)據(jù)),數(shù)據(jù)尋址時(shí)先向元數(shù)據(jù)服務(wù)器查詢,再存取實(shí)際數(shù)據(jù);
3、無(wú)元數(shù)據(jù)設(shè)計(jì)
主要以ceph為例,有別于上述二者的思想,此類(lèi)系統(tǒng)的主要思想:使用算法計(jì)算尋址,尋址算法的輸入?yún)?shù)之一為集群狀態(tài)(如數(shù)據(jù)節(jié)點(diǎn)分布拓?fù)?,?quán)重,進(jìn)程狀態(tài)等)的某種形式描述,此類(lèi)常見(jiàn)算法有consistent hashing,Ceph RADOS系統(tǒng)的CRUSH算法,這類(lèi)算法通常不直接管理用戶數(shù)據(jù),而是引入中間一層邏輯分片結(jié)構(gòu)(如consistent hashing的環(huán)片段,ceph的placement group),其粒度更大,其數(shù)量有限且相對(duì)固定,用戶存取的數(shù)據(jù)隸屬于其中唯一一個(gè)分片中,系統(tǒng)通過(guò)管理維護(hù)這些分片進(jìn)而管理維護(hù)用戶數(shù)據(jù);此類(lèi)系統(tǒng)有的也有中心配置管理節(jié)點(diǎn)(如ceph rados的monitor),只提供集群和分片等重要狀態(tài)的管理維護(hù),不提供元數(shù)據(jù)的存儲(chǔ)查詢;
優(yōu)點(diǎn):
A.如前所述,系統(tǒng)只需管理維護(hù)邏輯分片與集群狀態(tài)等信息,不存儲(chǔ)管理用戶數(shù)據(jù)的元數(shù)據(jù),系統(tǒng)的可擴(kuò)展性大大增強(qiáng),這在大量元數(shù)據(jù)場(chǎng)景時(shí)尤為明顯;
B.尋址算法所需的參數(shù)數(shù)據(jù)量小且相對(duì)固定,client可以通過(guò)緩存的方式,達(dá)到若干client并行尋址的目的,避免了尋址性能瓶頸;
缺點(diǎn)分析:
a.集群擴(kuò)容時(shí)(甚至權(quán)重改變時(shí)),需要做rebalance,尤其是數(shù)據(jù)規(guī)模很大(PB級(jí)以上)的集群,由此帶來(lái)的大量數(shù)據(jù)遷移使集群一直處于高負(fù)載的狀態(tài),進(jìn)而使得正常業(yè)務(wù)請(qǐng)求的延時(shí)、iops等性能指標(biāo)下降;但有些場(chǎng)景做集群擴(kuò)容時(shí),并不希望做rebalance(如集群容量不足);對(duì)此,常見(jiàn)策略是每個(gè)集群預(yù)先做好性能、容量評(píng)估,需要擴(kuò)容時(shí),直接新建集群;如果單個(gè)集群必須做rebalance,通過(guò)人工干預(yù)限流降低集群負(fù)載;至于需要做rebalance的根本原因,本人認(rèn)為擴(kuò)容導(dǎo)致集群狀態(tài)改變,進(jìn)而導(dǎo)致尋址算法結(jié)果改變,最終數(shù)據(jù)分布也需隨之改變;
b.數(shù)據(jù)的副本分布位置通過(guò)尋址算法計(jì)算得出,位置相對(duì)固定,幾乎不可人為調(diào)整;但通??梢酝ㄟ^(guò)改變權(quán)重的方式改變數(shù)據(jù)總體分布情況;
c.中心配置管理節(jié)點(diǎn)只管理分片信息,不知道單個(gè)用戶數(shù)據(jù)的信息,統(tǒng)計(jì)分析類(lèi)的需求需要通過(guò)定期地收集數(shù)據(jù)節(jié)點(diǎn)信息等方式實(shí)現(xiàn),并存儲(chǔ)維護(hù)。
總結(jié):通過(guò)以上比較分析,三類(lèi)系統(tǒng)的尋址策略,使系統(tǒng)本身均有自己相應(yīng)的優(yōu)缺點(diǎn),它們都不是***的,但都有其適宜的場(chǎng)景和業(yè)務(wù),在系統(tǒng)設(shè)計(jì)與選型時(shí),需要做全面的考量。



























