【編者按】基于業內對大數據技術的需求,各種基于開源技術的商業產品得到了長足的發展。然而對于用戶來說,如何才能客觀地比較不同的數據管理系統,基準測試的研究也被提了出來。本文中,譚磊講解了大數據測試基準應該具有的要素,并以此為基礎對比了現有的大數據測試基準,然后重點討論TPC-DS測試基準。
以下為原文
隨著開源Hapdoop、Map/Reduce、Spark、HDFS、HBASE等技術的商用化,大數據管理技術得到了突飛猛進的發展。一般來說,大數據具有3V特性,即Volume(海量)、Velocity(高速)和Variety(多樣)[1]。TPC聯合主席、Cisco高級工程師Raghunath Nambiar進一步認為大數據還面臨Value(價值)和Veracity(精確)的挑戰。如何客觀地比較不同數據管理系統,即大數據測試基準的選擇,成為一個重要的研究課題。
事務性能管理委員會(TPC)是目前最知名的數據管理系統評測基準標準化組織。在過去二十多年間,該機構發布了多款數據庫評測基準,如TPC-A、TPC-D、TPC-H和TPC-DS,在業界得到了廣泛應用[2]。BigBench和BigFrame是對TPC-DS進行多樣化的數據擴充的測試基準。近年來,Apache開源社區針對Map/reduce架構開發了多款性能測試用例,如TestDFSIO、teraSort。國內對大數據測試基準的研究起步較晚,尚未建立起權威的測試基準。目前由中國信息通信研究院牽頭,聯合中科院計算所及國內外知名公司和機構共同制定的大數據測試基準正在金羅密布的測試中[3]。
為了方便企業選擇合適的大數據測試基準,本文將在分析總結現有成果的基礎,進一步討論大數據測試基準應該具有的要素;并以此為基礎,對比現有的大數據測試基準;然后重點討論TPC-DS測試基準。
大數據測試基準的選擇
企業在選擇大數據測試基準時,首先應考慮基準與其自身業務的相關性。
1. 與其自身業務的相關性
它主要描述測試基準設定的應用場景是否與企業的實際業務場景類似,如基于社交網絡應用的評測基準與銀行系統的應用場景就沒有什么相關性。不相關的基準,測試結果再好,也沒有實際意義。相關性還要考慮測試基準所采用的數據模型是否代表數據倉庫的發展方向,如基于星型模型的開發要比基于傳統的關系模型開發更加有效。
當然,一套行之有效的大數據測試基準包含許多其它要素。Jim Gray及金澈清等學者[4]已經對度量選取、模擬數據生成器、工作負載設定、審計等要素進行了詳細論述。除此之外,本文還認為測試基準的健壯性、SQL標準的兼容性和通用性/可移植性也是重要的要素。
2. 模擬數據生成要具有真實性
它描述了測試基準是否仿真真實應用場景,所產生的模擬數據是否與真實數據相似。
3. 工作負載的設定具有可擴展性
它描述該評測基準是否適用于不同規模的計算機系統,許多評測基準會使用標度因子來決定模擬數據的規模,通過調整標度因子來得到不同規模的工作負載。
4. 度量的選取的可理解性
它衡量該評測基準是否易于為用戶理解,不易為用戶理解的基準的可信程度也較低。
5. 客觀性與公正性
眾所周知,在競技比賽中,一個人不能既是運動員又是裁判員。測試基準好比競技比賽中的裁判員,應該由中立的第三方機構制定。事實也證明,在各個領域最受歡迎的測試基準都是有第三方機構設計的。過去20多年的經歷證明TPC系列基準是數據庫領域最為廣泛接受的基準。除此之外,第三方機構的審計也是保證證評測結果的客觀性與公正性的重要手段。
6. 健壯性
測試基準要足夠健壯,不能輕易被“hack”,這對測試結果的公平性非常重要。例如對TPC-H的前身TPC-D,通過物理化視圖,Oracle的性能比Micosoft的SQLServer高100倍,這些顯然是不公平的。因此TPC組織規定TPC-H測試中物理化視圖是不和法的。但是除非是專業人員,一般用戶很難判定測試過程中視圖有沒有被物理化。TPC-DS在健壯行方面要好很多,因為它的SQL本身比較復雜,也比較多,Hack起來相對困難,并且只hack幾個SQL對整體性能提高有限。
7. SQL標準兼容性
SQL是ANSI為統一各個數據庫廠商之間的編程差異定義的標準,已發布SQL86、SQL92、SQL99、SQL2003等版本。這些標準已經被主流的商用(例如Oracle、DB2、SQL server)以及開源的數據庫產品(例如MySQL、mSQL和PostgreSQL)的廣泛采用。對整個數據庫產業的發展起到了巨大的推動作用。大數據是個新興的領域,它的發展不能完全拋棄原有的應用。如果不能全面支持SQL標準,現有系統的移植非常困難,學習曲線就會變長。
8. 通用性/可遷移性
通用性描述是否可在不同數據庫系統和架構上實現指定的評測基準。測試基準不應該規定實現的細節,而只需要定義測試規范。DBMS只要遵循規范得到正確的結果,就是合理的測試,無論其基于Map/Reduce、Spark還是其他的技術,也不管其底層存儲是用HDFS、HBASE還是其他方式。
大數據測試基準對比
經過30幾年的研究,傳統數據庫測試基準的研究已經相當成熟,在各個領域出現了行之有效的測試基準。隨著大數據應用的發展,大數據測試基準的研究最近幾年逐漸興起,但大都是在傳統的測試基準的基礎進行裁剪、擴充、綜合。金澈清等學者[4]對數據庫基準的發展概述如圖1所示。
本文重點關注被列為大數據測試基準的相關基準、BigFrame[5]以及TPC-DS,對其它的基準本文不再贅述,有興趣的讀者請參閱文[4]。
1. Map/reduce性能測試
如文[4]中所述,MRBench、HiBench、TestDFSIO、Sort/teraSort只是針對Map/Reduce框架,目的是評測運行Map/Reduce框架的集群的性能。CALDA基準嘗試比較不同架構在數據管理方面的性能。這些測試過于簡單,無法模擬復雜的應用,也不通用。
2. YCSB/YCSB++/LinkBench
這是一組針對網絡應用的測試基準。YCSB(Yahoo! Cloud Serving Benchmark)及其擴展YCSB++測試查詢回復的延時等云服務系統中云計算的特點,如查詢回復的延時、縱向擴展和彈性加速比、并行性測試等。LinkBench是一個基于社交網絡應用的評測基準。它仿真Facebook公司的圖數據管理應用,包括數據特性、工作負載以及度量等。這些都是公司開發的針對自己特定應用場景的測試基準,很難在整個行業內進行推廣。
3. BigBench
BigBench是一款面向商品零售業的基準,它擴展了TPC-DS,綜合考慮多種數據模態,增加了半結構化數據Web Log和非結構化數據Reviews。其負載的生成是TPC-DS定制化的版本。BigBench包含30個查詢。BigBench基本數據模型如圖2所示:
4. BigFrame
BigFrame是一個測試基準生成器[5],用戶可以根據自己的需求定制專有測試基準。在目前實現中,其關系模型與BigBench類似,也是基于TPC-DS。同時它擴展了半結構化和非結構化的數據Tweets以及圖形化數據Followee/Follower。BigFrame基本數據模型如圖3所示:
如文[5]所述,大數據與決策支持系統(DSS)并不是完全獨立的,大數據也不能拋棄傳統。DSS系統中,只要數據量足夠大,都可以認為是大數據問題。被化為大數據測試基準的BigBench和BigFrame的大部分內容都來自于TPC-DS,從這個意義上講,TPC-DS不但是一種結構數據的大數據測試基準,而且是其它大數據測試基準的基礎。
TPC-DS
TPC-DS測試基準是TPC組織推出的用于替代TPC-H的下一代決策支持系統測試基準。因此在討論TPC-DS之前,先介紹一下TPC-H。
1. TPC-H
TPC-H是一款面向商品零售業的決策支持系統測試基準,它定義了8張表,22個查詢,遵循SQL92。TPC-H的數據模型如圖4所示。TPC-H基準的數據庫模式遵循第三范式,葉曉俊教授等學者[6]認為“它的數據表數據特征單一(如數據不傾斜) ,其數據維護功能僅僅限制了潛在的對索引的過度使用,而沒有測試DBMS 執行真實數據維護操作——數據提取、轉換和加載(ETL) 功能的能力”。同時,新興的數據倉庫開始采用新的模型,如星型模型、雪花模型。TPC-H已經不能精準反映當今數據庫系統的真實性能。為此,TPC組織推出了新一代的面向決策應用的TPC-DS 基準。
2. TPC-DS
TPC-DS采用星型、雪花型等多維數據模式。它包含7張事實表,17張緯度表平均每張表含有18列。其工作負載包含99個SQL查詢,覆蓋SQL99和2003的核心部分以及OLAP。這個測試集包含對大數據集的統計、報表生成、聯機查詢、數據挖掘等復雜應用,測試用的數據和值是有傾斜的,與真實數據一致。可以說TPC-DS是與真實場景非常接近的一個測試集,也是難度較大的一個測試集。
TPC-DS的這個特點跟大數據的分析挖掘應用非常類似。Hadoop等大數據分析技術也是對海量數據進行大規模的數據分析和深度挖掘,也包含交互式聯機查詢和統計報表類應用,同時大數據的數據質量也較低,數據分布是真實而不均勻的。因此TPC-DS成為客觀衡量多個不同Hadoop版本以及SQL on Hadoop技術的最佳測試集。這個基準測試有以下幾個主要特點:
一共99個測試案例,遵循SQL'99和SQL 2003的語法標準,SQL案例比較復雜
分析的數據量大,并且測試案例是在回答真實的商業問題
測試案例中包含各種業務模型(如分析報告型,迭代式的聯機分析型,數據挖掘型等)
幾乎所有的測試案例都有很高的IO負載和CPU計算需求
葉曉俊等學者對這些查詢的分部總結如表1所示[6]。典型的Store_Sales的數據模型如圖5所示。這個基準測試的完整信息請參考http://www.tpc.org/tpcds/。
3. TPC-DS認證現狀
TPC-DS以其高標準、高要求得到大家的廣泛認知,理應得到廣泛的應用,但是到目前為止還沒有任何廠商得到TPC官方的認證。究其原因,本文認為:
傳統的數據庫廠商,DBMS系統比較成熟,SQL的支持也相當完善,但是其分布式、并行處理能力欠缺,導致其性能很差。所以傳統的廠商不愿意發布測試結果。
新型的計算模型如Map/Reduce、spark,具有較好的并行處理能力,但是SQL的兼容性比較差,如HiveSQL、SparkSQL只支持40個SQL,從而也無法發布TPC-DS測試報告。盡管如此,各廠商還是通過非TPC官方的途徑發布TPC-DS的部分測試結果,以展現其在性能方面的提升。由此可見大家對TPC-DS的程接受度。
結束語
大數據評測基準用于公平、客觀地評測不同大數據庫產品/平臺的功能和性能,對人們選擇合適的大數據分析決策系統具有重要的參考價值。隨著國內外各代表性的Hadoop發行版廠商以TPC-DS為標準測評產品,TPC-DS也就逐漸成為了業界公認的大數據系統測試基準。但是隨著大數據應用在各行各業的發展,測試基準也需不斷與時俱進。大數據測試基準仍然面臨著諸多挑戰,還需要政府、學術界和工業界的緊密合作。
編外話:對于用戶來說,產品的測試絕對不是自己可以輕易完成的事情。而為了更好地取信潛在用戶,對產品做基準測試應為每個產品/服務提供商的首要工作之一。而據編者所知,國內已經有一些提供商開始從事類似方面的工作,比如星環的TPC-DS 500G的功能、性能及其兼容性測試已經得到上海市計算機軟件評測實驗室的認證。