測試比較 Hive, impala 和 shark/spark 的性能,可以從哪些具體方面入手?

準備搭個集群做測試,分析比較這三者的性能,請問可以從哪幾個方面入手評測,能否提供一點思路?謝謝!


實在抱歉!

這塊的技術和產品 不熟悉,沒有實戰和認真學習~~望理解


首先,你需要一個好的Benchmark

1 簡約但是不簡單的SQL 大數據Benchmark推薦intel-hadoop/HiBench · GitHub 裡面hivebench支持SQL性能測試,包含了基本但是最主要的filter,group,join這些SQL特性。

2 TPC-H 這個真的不用說,全球data warehouse性能測試的基準。

3 TPC-DS 這個是TPC委員會專門設計用來做大數據SQL基準測試的,壞消息是,推出以來,備受冷落,因為官方的版本根本就沒法在Hive上順利執行;好消息是,Intel有團隊經過一番努力,目前已經成功運行在Hive和Shark上,可望開源。

其次,使用預設方式部署,不做tuning,這些大數據SQL引擎根本發揮不出功力。

那麼如何做性能優化? 好吧,這個話題太大了,改天聊。


今天剛看到的一個測試報告,比較的是hive、impala的分組匯總性能,iteye的一個blog,Google一下就有。


Shark項目已經終止了,目前Spark SQL可以在Spark上做SQL分析,兼容Hive SQL,性能還是不錯的。

上面的那個amplab的測試結果有些片面,這裡有一些測試結果:SQL-on-Hadoop結構化大數據分析系統性能評測

在tpc-ds上測試的。不過這個測試也不是很深入,只是表面的性能測試。


首先,benchmark的目標是比較功能上可以互相替換的解決方案的優劣。例如相同體系結構下,不同品牌和型號的CPU。題主列舉的幾個工具很大程度上不具備這個條件。

如果只是比較minimum set of SQL query,這應該和普通的性能測試步驟類似:

  1. 選定一組與實際生產環境類似的數據和查詢集合,以便儘可能地反映真實情況。如果只是預研,也可以考慮類似TPC-H的標準化測試用例。
  2. 在相同硬體環境下,對所有工具做配置性能調優。
  3. 在1的基礎上,執行查詢並記錄性能數據(包括但不限於執行時間、資源使用情況等)。
  4. 按照各種查詢的加權,分析最終結果。

從目前看到的資料來看,Hive支持massive data batch processing, Impala支持big data interactive query with limited functionality,spark支持iterative processing。三者在不同數據量級和應用特性各有優缺點。當然僅比較SQL query也是有意義的。如果可能的話也希望題主能公開測試結果。


這種測試最好是針對應用進行,即到底是批處理、adhoc查詢、OLAP分析等等


https://amplab.cs.berkeley.edu/benchmark/

這兒有公正的評測


Hive vs Impala:

http://hortonworks.com/blog/impala-vs-hive-performance-benchmark/

學習《Impala vs. Hive Performance Benchmark》


性能測試關鍵是要建立好標杆,另外一次測這麼多是不是有點太多了,有必要做這麼誇張的事情么?

建議還是外部信息分析選定一個優選,然後通過性能測試驗證它可以滿足你的要求。

如果無法搭建和未來生產環境一樣「巨大」的測試環境,可以通過對比往集群增加機器的時性能增加的曲線來預估。

要測試到一個軟體的極限性能是很困難的,要同時測試3個就更加高難度了,如果只是想對比一下的話就比較簡單,只要最後分析清楚每個產品最終性能的瓶頸是什麼資源就可以了


跑一個benchmark基準測試吧,hive,impala,spark都支持的,最標準的測試了,而且很簡單。


查詢速度impala&>spark sql &>hive


學習學習,benchmark基準測試還沒能看懂,,


推薦閱讀:

數據分析師是程序員嗎?
近期的約網車服務通過隱藏號碼來保護隱私,這在技術上是如何實現的?對其他服務行業有怎樣的啟示?
單台伺服器中如何存放幾千萬張圖片?
1萬億條數據怎麼存儲和查詢?
如何把 Web 頁面上抓取下來的海量文本信息從非結構化信息變成結構化信息?

TAG:雲計算 | 數據挖掘 | 分散式存儲 | Hadoop | 大數據 |