利用虛擬化技術(shù)搭建數(shù)據(jù)中心成為一種發(fā)展趨勢(shì),大數(shù)據(jù)時(shí)代依托數(shù)據(jù)中心支持的許多應(yīng)用,都對(duì)高并發(fā)讀寫、海量數(shù)據(jù)的高效存儲(chǔ)與訪問(wèn)、高可用性和簡(jiǎn)單彈性的擴(kuò)展能力需求強(qiáng)烈。面對(duì)這些不斷涌現(xiàn)的新的挑戰(zhàn),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)表現(xiàn)得越來(lái)越力不從心,業(yè)界的需求促使NoSQL數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。已有的NoSQL數(shù)據(jù)庫(kù)系統(tǒng)大多是開(kāi)源軟件,有上百種之多,這給用戶在使用選擇上帶來(lái)很大困擾。通過(guò)性能測(cè)試,模擬實(shí)際業(yè)務(wù)的海量數(shù)據(jù)處理,評(píng)價(jià)NoSQL系統(tǒng)性能,從而幫助用戶做出恰當(dāng)選擇是必要的.由于NoSQL發(fā)展時(shí)間較短,系統(tǒng)復(fù)雜性等原因,目前尚未有一個(gè)統(tǒng)一、公認(rèn)的類似TPC的測(cè)試標(biāo)準(zhǔn)。 2010年Yahoo研究院針對(duì)NoSQL系統(tǒng)開(kāi)發(fā)了開(kāi)源測(cè)試框架YCSB (Yahoo cloud serving benchmark),其測(cè)試結(jié)果得到比較廣泛的認(rèn)同.本文利用YCSB對(duì)2個(gè)較典型的NoSQL數(shù)據(jù)庫(kù)系統(tǒng)Hbase和Cassandra進(jìn)行評(píng)測(cè)研究,分析它們?cè)谔摂M化環(huán)境中的性能差異,并給出其適用性建議.
1、相關(guān)工作
1.1虛擬化技術(shù)
目前,比較成熟的虛擬化產(chǎn)品和技術(shù)主要有VMware的vSphere和Workstation、citrix的XENserver/desktop、微軟的Hyper-V , KVM(Kernel-based Virtual Machine),已有的在虛擬化環(huán)境下進(jìn)行系統(tǒng)評(píng)測(cè)的研究中,采用開(kāi)源虛擬化產(chǎn)品的較多.據(jù)CCW Research發(fā)布的研究報(bào)告顯示,VMware虛擬化產(chǎn)品在2009年的中國(guó)市場(chǎng)占有率達(dá)到73.5%,居于絕對(duì)的領(lǐng)導(dǎo)地位,其產(chǎn)品技術(shù)的成熟度和商業(yè)支持受到廣泛認(rèn)同.
虛擬化技術(shù)從架構(gòu)上分為原生架構(gòu)和寄居架構(gòu)2種,與之對(duì)應(yīng),VMware的產(chǎn)品有原生架構(gòu)的ESX/ESXi和寄居架構(gòu)的Workstation.原生架構(gòu)的虛擬機(jī)系統(tǒng)直接管理硬件資源,Hypervisior層占用小,只專注于上層VM操作系統(tǒng)與硬件資源之間的協(xié)調(diào)管理,資源開(kāi)銷更少、穩(wěn)定性更高,更適合實(shí)際生產(chǎn)環(huán)境下的企業(yè)級(jí)應(yīng)用,所以本文最終確定采用VMware vSphere 5與ESXi。
1.2 NoSQL數(shù)據(jù)庫(kù)
NoSQL是非關(guān)系型數(shù)據(jù)存儲(chǔ)的廣義定義,目前最常見(jiàn)的解釋是“Not Only SQL",其理論依據(jù)是分布式數(shù)據(jù)庫(kù)的CAP理論,即在一個(gè)分布式系統(tǒng)中不能同時(shí)滿足一致性、可用性或分區(qū)容忍性這3種屬性。這使得數(shù)據(jù)庫(kù)設(shè)計(jì)者可以放棄或者弱化一致性或可用性,來(lái)構(gòu)建NoSQL數(shù)據(jù)庫(kù).NoSQL數(shù)據(jù)庫(kù)一般分為4類:1)Key/Value存儲(chǔ)包括Dynamo , Redis , Tokyo Cabine等;2)面向列存儲(chǔ)包括BigTable , HBase , Cassandra等;3)面向文檔存儲(chǔ)包括MongoDB , CouchDB , SimpleDB等;4)面向圖存儲(chǔ)包括Neo4J、InfiniteGraph、DEX等,HBase和Cassandra是目前比較流行的2個(gè)NoSQL數(shù)據(jù)庫(kù)產(chǎn)品,發(fā)展相對(duì)較為成熟。
HBase是Google BigTable的開(kāi)源實(shí)現(xiàn),旨在提供高可靠性、高性能、面向列、可伸縮、實(shí)時(shí)讀寫的分布式存儲(chǔ)系統(tǒng)。HBase將數(shù)據(jù)持久化存儲(chǔ)在HDFS分布式文件系統(tǒng)上,采用主從架構(gòu),一個(gè)主節(jié)點(diǎn)HMaster和若干個(gè)從節(jié)點(diǎn)HRegionServer,由ZooKeeper承擔(dān)分布式系統(tǒng)的協(xié)調(diào)工作,客戶端讀寫數(shù)據(jù)時(shí),先連接ZooKeeper,獲得要寫入或者讀取的Region的位置,再直接和Region所在的服務(wù)器節(jié)點(diǎn)進(jìn)行交互。
Cassandra結(jié)合Dynamo與BigTable技術(shù),采用基于列的數(shù)據(jù)存儲(chǔ)模式,提供靈活、高性能、穩(wěn)定的分布式網(wǎng)絡(luò)數(shù)據(jù)存儲(chǔ)服務(wù)。Cassandra采用無(wú)中心架構(gòu),基于P2P協(xié)議,每個(gè)節(jié)點(diǎn)都是對(duì)等的,任何節(jié)點(diǎn)由于故障造成的失效,不影響整個(gè)集群的服務(wù),Cassandra使用gossip機(jī)制維護(hù)節(jié)點(diǎn)列表.客戶端讀寫數(shù)據(jù)時(shí),向集群中隨機(jī)的一個(gè)節(jié)點(diǎn)請(qǐng)求,系統(tǒng)根據(jù)副本放置策略,自動(dòng)分配讀或者寫操作到具體的一些節(jié)點(diǎn)中.
現(xiàn)實(shí)應(yīng)用中,F(xiàn)acebook , Twitter、淘寶、百度等多家公司已經(jīng)采用HBase和Cassandra這兩款產(chǎn)品以支持自己的大數(shù)據(jù)分析.
1.3測(cè)試基準(zhǔn)
當(dāng)前NoSQL發(fā)展十分迅速.YCSB可以對(duì)不同NoSQL系統(tǒng)進(jìn)行統(tǒng)一的基準(zhǔn)測(cè)試,幫助開(kāi)發(fā)人員選擇更合適的數(shù)據(jù)庫(kù)系統(tǒng).目前YCSB測(cè)試結(jié)果得到較多認(rèn)同,HBase官方文檔中也將其推薦為性能測(cè)試的基準(zhǔn)。
YCSB開(kāi)放了2個(gè)基準(zhǔn)層的測(cè)試,基于吞吐量和操作時(shí)延的性能測(cè)試,以及系統(tǒng)擴(kuò)展性的測(cè)試.性能測(cè)試時(shí)YCSB客戶端通過(guò)預(yù)先定義工作負(fù)載,配置不同的讀寫任務(wù)場(chǎng)景.首先客戶端產(chǎn)生記錄數(shù)據(jù)加載到系統(tǒng)中,再根據(jù)定義好的負(fù)載量作出操作請(qǐng)求,并統(tǒng)計(jì)任務(wù)過(guò)程中的相關(guān)數(shù)據(jù),最終返回給用戶以便分析使用.擴(kuò)展性測(cè)試可以反映系統(tǒng)增加節(jié)點(diǎn)時(shí)性能表現(xiàn)的變化情況。YCSB的可擴(kuò)展性優(yōu)勢(shì)體現(xiàn)在可以根據(jù)實(shí)際需求自定義工作負(fù)載,從而得到更符合應(yīng)用場(chǎng)景的測(cè)試結(jié)果;還可以通過(guò)改寫源代碼實(shí)現(xiàn)更復(fù)雜的測(cè)試操作,探索NoSQL系統(tǒng)的高級(jí)性能.本文選擇YCSB作為本次評(píng)測(cè)工作的客戶端.
2、測(cè)評(píng)方法與方案設(shè)計(jì)
2.1測(cè)評(píng)方法
采用YCSB框架,根據(jù)設(shè)計(jì)的不同測(cè)試方案,客戶端在非數(shù)據(jù)節(jié)點(diǎn)上提交任務(wù),對(duì)待測(cè)數(shù)據(jù)庫(kù)系統(tǒng)執(zhí)行一系列事務(wù),測(cè)量其平均吞吐量和響應(yīng)延時(shí),即對(duì)NoSQL數(shù)據(jù)庫(kù)系統(tǒng)并發(fā)提交簡(jiǎn)單事務(wù)請(qǐng)求,通過(guò)返回的響應(yīng)時(shí)間和吞吐量數(shù)據(jù),來(lái)評(píng)價(jià)系統(tǒng)性能.
YCSB的測(cè)試過(guò)程分為2個(gè)階段:①數(shù)據(jù)加載階段,客戶端產(chǎn)生記錄并加載到NoSQL數(shù)據(jù)庫(kù)系統(tǒng)中.YCSB生成的記錄默認(rèn)有10個(gè)字段,每個(gè)字段都是100 B的ASCII字符串,所以1條記錄大小為1 KB .②執(zhí)行事務(wù)階段,根據(jù)定義好的負(fù)載結(jié)構(gòu),進(jìn)行不同的處理請(qǐng)求,包含read ,insert , update , scan 4種操作,操作執(zhí)行結(jié)束后,將統(tǒng)計(jì)的結(jié)果返回給用戶.YCSB自帶默認(rèn)6組負(fù)載結(jié)構(gòu)(如表1所示),分別定義了不同操作的比例分配,以模擬不同讀寫環(huán)境的應(yīng)用場(chǎng)景.HBase和Cassandra都是對(duì)寫優(yōu)化的數(shù)據(jù)庫(kù),一些應(yīng)用場(chǎng)景特別關(guān)注數(shù)據(jù)庫(kù)寫性能,因此本文再自定義一種模擬大量寫場(chǎng)景的負(fù)載結(jié)構(gòu)worklOAdg:insert/read (0.95/0.05).
2.2測(cè)試方案設(shè)計(jì)
1)方案1.測(cè)試不同負(fù)載結(jié)構(gòu)下NoSQL系統(tǒng)性能.選取典型的workloads, workloadb ,workloadf以及自定義的workloadg進(jìn)行測(cè)試,workloads模擬更新負(fù)載大的應(yīng)用場(chǎng)景,workloadb模擬大量并發(fā)讀的場(chǎng)景,workloadf模擬復(fù)雜寫操作任務(wù)重的場(chǎng)景,workloadg則模擬寫負(fù)載重的任務(wù)場(chǎng)景.設(shè)置:ecordcount=100 000,threads=10,每組試驗(yàn)重復(fù)5次,記錄每次測(cè)試的吞吐量,取平均值。
2)方案2.測(cè)試不同數(shù)據(jù)負(fù)載量下NoSQL系統(tǒng)性能.選擇在2種不同的負(fù)載結(jié)構(gòu)workloads(大量更新)、workloadg(以寫為主)下,通過(guò)設(shè)置recordcount為100 000 , 500 000 ,1 000 000,即數(shù)據(jù)量分別為100 MB , 500 MB , 1 GB,記錄相應(yīng)的平均吞吐量。
3)方案3.考察不同大小虛擬集群下,2個(gè)系統(tǒng)的性能表現(xiàn).選擇workloadg的負(fù)載結(jié)構(gòu),將每臺(tái)虛擬機(jī)內(nèi)存調(diào)整為1G,定義負(fù)載量recordcount=1000000,分別測(cè)試NoSQL數(shù)據(jù)庫(kù)在3,4,5,6虛擬機(jī)節(jié)點(diǎn)的集群下的系統(tǒng)性能表現(xiàn),記錄吞吐量與響應(yīng)時(shí)延.
3、實(shí)驗(yàn)與分析
3.1測(cè)試環(huán)境
由4臺(tái)虛擬機(jī)構(gòu)成的集群環(huán)境主要搭建在1臺(tái)服務(wù)器上,服務(wù)器的硬件條件為4核Xeon處理器,主頻2.13 GHz,內(nèi)存8 GB , 500 GBx2硬盤無(wú)RAID,千兆網(wǎng)卡,軟件環(huán)境是ESXiS.集群節(jié)點(diǎn)的虛擬機(jī)配置:①硬件環(huán)境為雙核vCPU , 2 GB內(nèi)存、80 GB磁盤;②操作系統(tǒng)為CentOS6.2(l}ernel2.6.32);③軟件環(huán)境為Hadoop1.1.2,HBase0.92,Cassandra 1.0.6和YCSB0.1.4.HBase和Cassandra均使用3個(gè)數(shù)據(jù)節(jié)點(diǎn)(HBase另有1個(gè)不存儲(chǔ)數(shù)據(jù)的主節(jié)點(diǎn)NameNode) .
3.2測(cè)試結(jié)果與分析
方案1和方案2的測(cè)試結(jié)果如圖1和圖2所示,方案3的測(cè)試結(jié)果如圖3和圖4所示.
測(cè)試方案1的結(jié)果表明,當(dāng)系統(tǒng)節(jié)點(diǎn)為3個(gè)且數(shù)據(jù)負(fù)載較小時(shí),不同讀寫場(chǎng)景下HBase的性能優(yōu)于Cassandra,尤其是寫入性能。
測(cè)試方案2結(jié)果表明,Cassandra讀寫能力均衡,穩(wěn)定性更好,當(dāng)負(fù)載量加大時(shí),HBase性能下降明顯,而Cassandra最大吞吐量一直保持在一個(gè)平均水平.從圖2可以看到,當(dāng)數(shù)據(jù)量達(dá)到一定程度時(shí)(超過(guò)500 000),在workloads下HBase吞吐量急劇下降,只有Cassandra的1/4左右,觀察測(cè)試過(guò)程控制臺(tái)信息發(fā)現(xiàn),Hbase在執(zhí)行update操作時(shí),當(dāng)積累一定數(shù)量(約50000多操作)后,會(huì)有30 s左右的時(shí)間無(wú)操作響應(yīng),因此影響了Hbase的平均吞吐量.
測(cè)試方案3的結(jié)果驗(yàn)證了前面得出的結(jié)論,HBase具有更好的寫入性能,當(dāng)節(jié)點(diǎn)逐漸增加到6個(gè)時(shí),Hbase擁有更大的吞吐量以及更低的寫入時(shí)延.隨著節(jié)點(diǎn)的增加,Cassandra的性能變化不明顯,但是Hbase則有了較大的提升,從3個(gè)節(jié)點(diǎn)增加到6個(gè)節(jié)點(diǎn)時(shí),吞吐量增加了1倍,讀時(shí)延降低了2/3 .
以上研究表明,虛擬化環(huán)境中,HBase與Cassandra都具有簡(jiǎn)單靈活的橫向擴(kuò)展能力,特別是Cassandra,直接在添加的節(jié)點(diǎn)上啟動(dòng)進(jìn)程,系統(tǒng)自動(dòng)完成節(jié)點(diǎn)增加的工作.但兩者在不同讀寫結(jié)構(gòu)、數(shù)據(jù)負(fù)載以及集群規(guī)模下的性能是存在差異的.HBase具有更高的寫入吞吐量及更低的延時(shí),更適合高并發(fā)寫的應(yīng)用場(chǎng)景;Cassandra寫入性能稍弱,但讀能力更好也更穩(wěn)定,適合讀寫穩(wěn)定性要求高的場(chǎng)景.
4、結(jié)論
本文測(cè)試結(jié)果與文獻(xiàn)結(jié)果趨勢(shì)比較一致,但虛擬化環(huán)境下的NoSQL數(shù)據(jù)庫(kù)的性能有一定程度下降,尤其是讀性能,而且方案2中測(cè)試HBase時(shí)出現(xiàn)update操作短暫無(wú)響應(yīng)現(xiàn)象,初步分析原因可能在2個(gè)方面:10 HBase自身存儲(chǔ)機(jī)制問(wèn)題,②除了物理機(jī)器本身的性能差距外,HBase與Cassandra對(duì)內(nèi)存和磁盤I/O速度比較敏感,而實(shí)驗(yàn)室單臺(tái)服務(wù)器虛擬化后會(huì)產(chǎn)生大量磁盤數(shù)據(jù)交換,可能造成NoSQL系統(tǒng)的性能損失.由于條件限制,單臺(tái)服務(wù)器下虛擬化集群性能有限,虛擬化技術(shù)對(duì)NoSQL性能的影響程度和因素有待進(jìn)一步論證。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.lukmueng.com/
本文標(biāo)題:虛擬化環(huán)境下的NoSQL數(shù)據(jù)庫(kù)評(píng)測(cè)
本文網(wǎng)址:http://www.lukmueng.com/html/support/11121512475.html