筆記: GCE BigQuery vs AWS Redshift vs AWS Athena

用 SQL 分析數(shù)據(jù), AWS 有 Redshift 和去年 re:Invent 2016 上發(fā)布了基于 Presto 的 Athena, 用于查詢 S3 上的數(shù)據(jù), Google 的 GCE 有 BigQuery. 我只有 Presto 的使用經(jīng)驗, 一直想了解一下其他幾個. 讀了一篇關(guān)于幾個查詢引擎對比的文章: GCE BigQuery vs AWS Redshift vs AWS Athena, 做點兒筆記.

文中涉及的性能數(shù)據(jù)均來自原文, 本人未經(jīng)任何驗證, 正確與否不負(fù)任何責(zé)任.

0x00 背景

AWS 方案

在 AWS 上想使用 SQL 查詢數(shù)據(jù), 除了 EMR 中的 Hive/Presto/Spark 外, 可選的還有 Redshift(Spectrum) 和 Athena.

Redshift 是 AWS 很早就發(fā)布的數(shù)據(jù)倉庫產(chǎn)品, 在 Spectrum 功能發(fā)布之前, 用戶需要將數(shù)據(jù) Copy 到 Redshift 集群中, 因此集群擴(kuò)容就要考慮計算和存儲兩個方面的因素, 而且如果查詢時想 Join 在 S3 上的 Hive table 卻不可能實現(xiàn), 很是蛋疼; 今年 AWS 發(fā)布了 Redshift 的新功能 Spectrum: 允許用戶直接從 Redshift 中創(chuàng)建 External Table, 查詢在 S3 上的數(shù)據(jù), 算是解決了這一痛點, 徹底打通了所有數(shù)據(jù). 值得一提的是, 雖然在 AWS 內(nèi)部訪問 S3 是不收取流量費用的, 而且 Redshift 集群本身已經(jīng)付費, 但 Redshift Spectrum 查詢 S3 上的數(shù)據(jù)卻是按照查詢讀取的數(shù)據(jù)量, 每個 TB 需要 5$ 的費用的, 具體參見 官方文檔 Redshift Spectrum 定價

AWS Redshift 和 Athena

為了容易理解 Redshift Spectrum, 舉個 SQL 查詢的例子: t_users 表和 t_user_city 表都存儲在 Redshift 上, t_orders 表存儲在 S3. 那么如下查詢的執(zhí)行計劃如圖:

SELECT c.city_name,
       u.user_name,
       o.*
FROM t_users u
JOIN t_user_city c ON u.user_id = c.user_id
JOIN t_orders o ON u.user_id = o.user_id
Redshift Spectrum 查詢計劃示例

AWS 的 Athena 是去年 re:Invent 上發(fā)布的基于 Presto 的產(chǎn)品, 可以說是 SQL as a Service, 無需部署, 按照查詢讀取的數(shù)據(jù)量收費. 使用 Athena 要注意的就是文件格式的學(xué)問了, 傻乎乎的存 CSV 文本進(jìn)去, 肯定不如 Parquet 等格式查詢起來劃算. 不過將 Presto 做成一個 Service 出來賣錢, 架構(gòu)上肯定有很多挑戰(zhàn), 有時間可以倒是可以 YY 一下: 如果讓我設(shè)計 Athena, 該如何實現(xiàn).

Google 的 BigQuery

Google 早在 2010年就有發(fā)表了一篇 paper: Dremel: Interactive Analysis of Web-Scale Datasets, 介紹了自己已經(jīng)用了不知道多少年的黑科技 Dremel, 教大家怎么做人咳咳.

云計算領(lǐng)域, Google 發(fā)布了 BigQuery, 將 Dremel 包裝成服務(wù)拿出來給大家用(關(guān)于 Dremel 推薦閱讀 大數(shù)據(jù)那些事(23):我是怎么分析Dremel系統(tǒng)的). 具體 BigQuery 的設(shè)計可以參見官方博客 BigQuery under the hood, 基本上就是從存儲到網(wǎng)絡(luò)到調(diào)度都是基于原來的黑科技, 比如 Borg 啥的, 存儲格式也換成了最近的 Capacitor, 參見官方博客: Inside Capacitor, BigQuery’s next-generation columnar storage format

BigQuery Architecture
BigQuery Architecture

從用戶的角度來說, BigQuery 跟 Redshift + Spectrum 一樣, 支持兩種模式的存儲: BigQuery 內(nèi)部存儲和外部存儲, 其中外部存儲支持了 Google BigTable, Cloud Storage 和 Cloud Drive, 基本上涵蓋了所有的 GCE 的存儲服務(wù); 但從系統(tǒng)層面上來說, BigQuery 更像是自帶優(yōu)化后的存儲的 Athena: 一個大集群按需付費, 存儲額外收費, 但使用的不是原生格式而是優(yōu)化后的 Capacitor.

BigQuery

0x02 數(shù)據(jù) load 時間對比

文中使用的測試數(shù)據(jù)集是 CSV size: 997GB (~1TB). 測試的場景是從 S3/Google Cloud Storage 加載到對應(yīng)的 Redshift 或者 BigQuery, 由于 Athena 是直接查詢 S3 上的數(shù)據(jù), 因此不需要加載, 或許這是 Athena 的唯一優(yōu)勢了

BigQuery Redshift Dense Compute dc1.8xlarge Redshift Dense Storage ds2.xlarg Athena
46 m 9h 30m 8h 23m 0s(no need to load the data)

BigQuery 比 Redshift 快這么多? 我個人猜測, BigQuery 是一個 cluster, 按需付費; Redshift 本次測試僅僅使用了一臺 server, 肯定處于劣勢.

0x03 查詢時間對比

查詢時間對比

大多數(shù)情況下, BigQuery 都是完勝的, Athena 都是完敗的, 不過考慮到 BigQuery 內(nèi)部存儲格式已經(jīng)使用了優(yōu)化后的 Capacitor, 如果在跑不過 Athena 就更說不過去了.

0x04 查詢費用對比

查詢費用對比

費用上來說, BigQuery 和 Redshift 由于走的是不同的設(shè)計, 收費大不相同: BigQuery 跟 Athena 很像, 存儲額外收費, 查詢實際用量收費; 而 Redshift 確是按小時(或者通過 RI 包年) 收費, 很難對比費用究竟哪個劃算. 不過可以看出的是, 由于 Athena 在存儲上使用的 CSV, 每次查詢費用上比 BigQuery 貴了好幾倍, 真的應(yīng)該找機(jī)會試試 Parquet 格式.

0x05 每次查詢讀取的數(shù)據(jù)量

每次查詢讀取的數(shù)據(jù)量

查詢讀取的數(shù)據(jù)量, Redshift 沒有給出對應(yīng)的數(shù)據(jù), 而 Redshift 和 Athena 都有詳細(xì)的數(shù)據(jù), 畢竟是按照這個收費的. 可以看出:

  • BigQuery 由于使用了 Capacitor, 讀取量有很大優(yōu)勢, 呼喚 Parquet
  • Athena 雖然傻傻的由于 CSV 格式讀取量接近于全部, 但 885.8GB 與全部數(shù)據(jù)量997GB 差了很多, 看示例查詢并沒有任何 LIMIT 操作, 因此不涉及讀取一部分?jǐn)?shù)據(jù)的情況, 那為何少讀取了這么多? 有優(yōu)化? 還是....?

總結(jié)

其實這種涉及到不同云計算廠商的產(chǎn)品間的比較, 看看就行了, 畢竟云計算廠商的選型也不會僅僅基于 SQL 查詢的性能, 還是要看綜合考量, 比如你家業(yè)務(wù)跑在 AWS, 你非要選 BigQuery, 來回 copy 數(shù)據(jù)不蛋疼死. 同一云計算廠商的不同產(chǎn)品間的比較, 確是很有必要, 看清楚性能, 在做產(chǎn)品選型的時候心里有底.

針對 AWS 來說, Athena 是快速上手查詢數(shù)據(jù)的首選, 但直接查詢文本格式的數(shù)據(jù)也有些傷錢, 還是要借助 ORC/Parquet 才劃算. Redshift 這種包月/包年型的, 確實降低了運維成本, 但系統(tǒng)容量規(guī)劃的時候要考慮存儲和計算資源兩個因素, 雖然 Spectrum 也是可以臨時查詢一些數(shù)據(jù)的, 但也是有成本的.

YY 一下, 要是 Spectrum 本身不收費了, 估計 Redshift 競爭力就更上一層樓了: 熱數(shù)據(jù)存儲在 Redshift 內(nèi)部, 其他日志一律走 Spectrum, 交互式查詢還有誰能比?

-- EOF --

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖硝岗,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡媚狰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門阔拳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崭孤,“玉大人,你說我怎么就攤上這事糊肠”娉瑁” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵货裹,是天一觀的道長嗤形。 經(jīng)常有香客問我,道長弧圆,這世上最難降的妖魔是什么赋兵? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮搔预,結(jié)果婚禮上霹期,老公的妹妹穿的比我還像新娘。我一直安慰自己拯田,他們只是感情好历造,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般帕膜。 火紅的嫁衣襯著肌膚如雪枣氧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天垮刹,我揣著相機(jī)與錄音达吞,去河邊找鬼。 笑死荒典,一個胖子當(dāng)著我的面吹牛酪劫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寺董,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼覆糟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遮咖?” 一聲冷哼從身側(cè)響起滩字,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎御吞,沒想到半個月后麦箍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡陶珠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年挟裂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揍诽。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡诀蓉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暑脆,到底是詐尸還是另有隱情渠啤,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布添吗,位于F島的核電站埃篓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏根资。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一同窘、第九天 我趴在偏房一處隱蔽的房頂上張望玄帕。 院中可真熱鬧,春花似錦想邦、人聲如沸裤纹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹰椒。三九已至锡移,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漆际,已是汗流浹背淆珊。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留奸汇,地道東北人施符。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像擂找,于是被迫代替她去往敵國和親戳吝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容