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