笔记: GCE BigQuery vs AWS Redshift vs AWS Athena

用 SQL 分析数据, AWS 有 Redshift 和去年 re:Invent 2016 上发布了基于 Presto 的 Athena, 用于查询 S3 上的数据, Google 的 GCE 有 BigQuery. 我只有 Presto 的使用经验, 一直想了解一下其他几个. 读了一篇关于几个查询引擎对比的文章: GCE BigQuery vs AWS Redshift vs AWS Athena, 做点儿笔记.

文中涉及的性能数据均来自原文, 本人未经任何验证, 正确与否不负任何责任.

0x00 背景

AWS 方案

在 AWS 上想使用 SQL 查询数据, 除了 EMR 中的 Hive/Presto/Spark 外, 可选的还有 Redshift(Spectrum) 和 Athena.

Redshift 是 AWS 很早就发布的数据仓库产品, 在 Spectrum 功能发布之前, 用户需要将数据 Copy 到 Redshift 集群中, 因此集群扩容就要考虑计算和存储两个方面的因素, 而且如果查询时想 Join 在 S3 上的 Hive table 却不可能实现, 很是蛋疼; 今年 AWS 发布了 Redshift 的新功能 Spectrum: 允许用户直接从 Redshift 中创建 External Table, 查询在 S3 上的数据, 算是解决了这一痛点, 彻底打通了所有数据. 值得一提的是, 虽然在 AWS 内部访问 S3 是不收取流量费用的, 而且 Redshift 集群本身已经付费, 但 Redshift Spectrum 查询 S3 上的数据却是按照查询读取的数据量, 每个 TB 需要 5$ 的费用的, 具体参见 官方文档 Redshift Spectrum 定价

AWS Redshift 和 Athena

为了容易理解 Redshift Spectrum, 举个 SQL 查询的例子: t_users 表和 t_user_city 表都存储在 Redshift 上, t_orders 表存储在 S3. 那么如下查询的执行计划如图:

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 上发布的基于 Presto 的产品, 可以说是 SQL as a Service, 无需部署, 按照查询读取的数据量收费. 使用 Athena 要注意的就是文件格式的学问了, 傻乎乎的存 CSV 文本进去, 肯定不如 Parquet 等格式查询起来划算. 不过将 Presto 做成一个 Service 出来卖钱, 架构上肯定有很多挑战, 有时间可以倒是可以 YY 一下: 如果让我设计 Athena, 该如何实现.

Google 的 BigQuery

Google 早在 2010年就有发表了一篇 paper: Dremel: Interactive Analysis of Web-Scale Datasets, 介绍了自己已经用了不知道多少年的黑科技 Dremel, 教大家怎么做人咳咳.

云计算领域, Google 发布了 BigQuery, 将 Dremel 包装成服务拿出来给大家用(关于 Dremel 推荐阅读 大数据那些事(23):我是怎么分析Dremel系统的). 具体 BigQuery 的设计可以参见官方博客 BigQuery under the hood, 基本上就是从存储到网络到调度都是基于原来的黑科技, 比如 Borg 啥的, 存储格式也换成了最近的 Capacitor, 参见官方博客: Inside Capacitor, BigQuery’s next-generation columnar storage format

BigQuery Architecture
BigQuery Architecture

从用户的角度来说, BigQuery 跟 Redshift + Spectrum 一样, 支持两种模式的存储: BigQuery 内部存储和外部存储, 其中外部存储支持了 Google BigTable, Cloud Storage 和 Cloud Drive, 基本上涵盖了所有的 GCE 的存储服务; 但从系统层面上来说, BigQuery 更像是自带优化后的存储的 Athena: 一个大集群按需付费, 存储额外收费, 但使用的不是原生格式而是优化后的 Capacitor.

BigQuery

0x02 数据 load 时间对比

文中使用的测试数据集是 CSV size: 997GB (~1TB). 测试的场景是从 S3/Google Cloud Storage 加载到对应的 Redshift 或者 BigQuery, 由于 Athena 是直接查询 S3 上的数据, 因此不需要加载, 或许这是 Athena 的唯一优势了

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 查询时间对比

查询时间对比

大多数情况下, BigQuery 都是完胜的, Athena 都是完败的, 不过考虑到 BigQuery 内部存储格式已经使用了优化后的 Capacitor, 如果在跑不过 Athena 就更说不过去了.

0x04 查询费用对比

查询费用对比

费用上来说, BigQuery 和 Redshift 由于走的是不同的设计, 收费大不相同: BigQuery 跟 Athena 很像, 存储额外收费, 查询实际用量收费; 而 Redshift 确是按小时(或者通过 RI 包年) 收费, 很难对比费用究竟哪个划算. 不过可以看出的是, 由于 Athena 在存储上使用的 CSV, 每次查询费用上比 BigQuery 贵了好几倍, 真的应该找机会试试 Parquet 格式.

0x05 每次查询读取的数据量

每次查询读取的数据量

查询读取的数据量, Redshift 没有给出对应的数据, 而 Redshift 和 Athena 都有详细的数据, 毕竟是按照这个收费的. 可以看出:

  • BigQuery 由于使用了 Capacitor, 读取量有很大优势, 呼唤 Parquet
  • Athena 虽然傻傻的由于 CSV 格式读取量接近于全部, 但 885.8GB 与全部数据量997GB 差了很多, 看示例查询并没有任何 LIMIT 操作, 因此不涉及读取一部分数据的情况, 那为何少读取了这么多? 有优化? 还是....?

总结

其实这种涉及到不同云计算厂商的产品间的比较, 看看就行了, 毕竟云计算厂商的选型也不会仅仅基于 SQL 查询的性能, 还是要看综合考量, 比如你家业务跑在 AWS, 你非要选 BigQuery, 来回 copy 数据不蛋疼死. 同一云计算厂商的不同产品间的比较, 确是很有必要, 看清楚性能, 在做产品选型的时候心里有底.

针对 AWS 来说, Athena 是快速上手查询数据的首选, 但直接查询文本格式的数据也有些伤钱, 还是要借助 ORC/Parquet 才划算. Redshift 这种包月/包年型的, 确实降低了运维成本, 但系统容量规划的时候要考虑存储和计算资源两个因素, 虽然 Spectrum 也是可以临时查询一些数据的, 但也是有成本的.

YY 一下, 要是 Spectrum 本身不收费了, 估计 Redshift 竞争力就更上一层楼了: 热数据存储在 Redshift 内部, 其他日志一律走 Spectrum, 交互式查询还有谁能比?

-- EOF --

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容