1. 程式人生 > >最簡單的大數據性能估算方法

最簡單的大數據性能估算方法

大數據性能 性能估算

技術分享圖片

大數據的性能是個永恒的話題。不過,在實際工作中我們發現,許多人都不知道如何進行最簡單的性能估算,結果經常被大數據廠商忽悠:)。

這個辦法我在以往的文章中也提到過,不過沒有以這個題目明確地點出來。


其實很簡單,就是算一下這些數據從硬盤上取出來用的時間。除了個別按索引取數的運算外,絕大多數運算都會涉及對數據的整體遍歷,比如分組匯總統計、按條件查詢(非索引字段);那麽,這些運算耗用的時間,無論如何不可能小於硬盤訪問的時間,我們就能算出一個理論上的極限值。

比如,有人宣稱實現10T數據的OLAP匯總只需要3秒。那麽這意味著什麽呢?

常見的15000轉硬盤,在操作系統下的訪問速度也就不到200M/秒,SSD會快一些,但也沒數量級的提升,大概3秒讀1G的樣子。這樣,從單塊硬盤中讀出10T數據就需要30000秒以上,如果想在3秒內完成匯總,那就需要1萬塊硬盤!作為用戶,你是否做了這個準備呢?

當然,硬盤及硬盤在不同環境下的速度不盡相同,可能更快或更慢,但總之都可以用這個簡單的辦法去估算。不知道自家硬盤的速度?那弄個大文件讀一下試試就知道了,拿到實驗數據再去計算會更準確。要強調的是,不能簡單地看硬盤廠商標稱的性能指標,在文件系統下,那個理想值常常連一半都達不到,還是實測的最可靠。

這樣,我們就能知道某個大數據問題最理想的情況能夠達到什麽性能,比這個指標還好的期望,在用於估算指標的硬件條件下都是不可能實現的,沒有必要再去琢磨軟件產品和技術方案了。


這種估算也指明了一個優化方向,就是減少存儲量和訪問量。

減少存儲量當然不能減少數據本身,用於計算的數據一條也不能少,否則就出現錯誤結果。減少存儲量要靠數據壓縮的手段。10T的原始數據,如果有好的壓縮手段,實際在硬盤上存儲下來可能只有1T甚至更少,這時候3秒匯總這些數據就不再需要1萬塊硬盤了。

在存儲量不能再減少的情況下,還有些軟件手段來減少訪問量,常用的方法就是列存。一個數據表有100列占了10T,如果只訪問三列進行匯總,那大概只需要訪問300G數據,這時候3秒完成匯總當然也不需要1萬塊硬盤了。

不過,大數據廠商在宣稱10T、3秒這種性能指標時,一般不會明確指出采用壓縮或列存技術後存儲量和訪問量能降到多少。這就容易給用戶造成錯覺,以為這個技術能夠通用地解決大數據問題,而經常,有些數據的壓縮率無法做得很高,對於訪問列較多的運算列存也沒啥優勢。

要更準確地估算性能極限,也要考慮減少存儲量和訪問量的手段。嘗試一下自己的數據能有多大的壓縮率(用常規的zip軟件就可以),並且檢查運算是否是從很多列中取出很少列的情況。


最簡單的大數據性能估算方法