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