写点什么

EMC 颜开分析 Dremel 原理,如何在 3 秒内分析 1PB 数据

  • 2012-09-02
  • 本文字数:2285 字

    阅读完需:约 7 分钟

上周,InfoQ 中文站对 Google 的大数据分析工具 PowerDrill 做了简单介绍。今天,我们来看看服务于 EMC 的大数据专家颜开在博客文章中对 Dremel 的分析。

在这篇文章中,颜开首先提到了 Dremel 的 5 个主要特点:

  • Dremel 是一个大规模系统。在一个 PB 级别的数据集上面,将任务缩短到秒级,无疑需要大量的并发。磁盘的顺序读速度在 100MB/S 上下,那么在 1S 内处理 1TB 数据,意味着至少需要有 1 万个磁盘的并发读! Google 一向是用廉价机器办大事的好手。
  • Dremel 是 MR 交互式查询能力不足的补充。和 MapReduce 一样,Dremel 也需要和数据运行在一起,将计算移动到数据上面。所以它需要 GFS 这样的文件系统作为存储层。在设计之初,Dremel 并非是 MapReduce 的替代品,它只是可以执行非常快的分析,在使用的时候,常常用它来处理 MapReduce 的结果集或者用来建立分析原型。
  • Dremel 的数据模型是嵌套 (nested) 的。互联网数据常常是非关系型的。Dremel 还需要有一个灵活的数据模型,这个数据模型至关重要。Dremel 支持一个嵌套 (nested) 的数据模型,类似于 JSON。
  • Dremel 中的数据是用列式存储的。使用列式存储,分析的时候,可以只扫描需要的那部分数据的时候,减少 CPU 和磁盘的访问量。同时列式存储是压缩友好的,使用压缩,可以综合 CPU 和磁盘,发挥最大的效能。
  • Dremel 结合了 Web 搜索和并行 DBMS 的技术。首先,他借鉴了 Web 搜索中的“查询树”的概念,将一个相对巨大复杂的查询分割成较小较简单的查询。大事化小,小事化了,能并发的在大量节点上跑。其次,和并行 DBMS 类似,Dremel 可以提供了一个 SQL-like 的接口,就像 Hive 和 Pig 那样。

颜开提到了一个 Dremel 的应用场景。

美女数据分析师有一个新的想法要验证,需要在上亿条数据上面跑一个查询,看看结果和她的想法是不是一样,她可不希望等太长时间,最好几秒钟结果就出来。当然她的想法不一定完善,还需要不断调整语句。然后她验证了想法,发现了数据中的价值。最后,她可以将这个语句完善成一个长期运行的任务。

对于 Google, 数据一开始是放在 GFS 上的。可以通过 MapReduce 将数据导入到 Dremel 中去,在这些 MapReduce 中还可以做一些处理。然后分析师使用 Dremel,轻松愉悦的分析数据,建立模型。最后可以编制成一个长期运行的 MapReduce 任务。

接下来,颜开详细分析了 Dremel 的列存储和嵌套数据模型,并得出结论:

就像其他数据分析系统一样,数据结构确定下来,功能就决定了一大半。对于 Dremel 的数据查询,必然是“全表扫描”,但由于其巧妙的列存储设计,良好的数据模型设计可以回避掉大部分 Join 需求和扫描最少的列。

对于 Dremel 的查询方式,颜开指出:

Dremel 可以使用一种 SQL-like 的语法查询嵌套数据。由于 Dremel 的数据是只读的,并且会密集的发起多次类似的请求。所以可以保留上次请求的信息,还优化下次请求的 explain 过程。

……

Dremel 是一个多用户的系统。切割分配任务的时候,还需要考虑用户优先级和负载均衡。对于大型系统,还需要考虑容错,如果一个叶子 Server 出现故障或变慢,不能让整个查询也受到明显影响。

……

Dremel 还有一个配置,就是在执行查询的时候,可以指定扫描部分分区,比如可以扫描 30% 的分区,在使用的时候,相当于随机抽样,加快查询。

颜开还在博客中列出了对 Dremel 的测试结果,包括列存测试、和 MapReduce 的对比测试、树状计算 Server 测试、扩展性测试、容错测试等等。

对于 Dremel 和 Hadoop 的关系,颜开指出:

Dremel 的公开论文里面已经说的很明白,Dremel 不是用来替代 MapReduce,而是和其更好的结合。Hadoop 的 Hive,Pig 无法提供及时的查询,而 Dremel 的快速查询技术可以给 Hadoop 提供有力的补充。同时 Dremel 可以用来分析 MapReduce 的结果集,只需要将 MapReduce 的 OutputFormat 修改为 Dremel 的格式,就可以几乎不引入额外开销,将数据导入 Dremel。使用 Dremel 来开发数据分析模型,MapReduce 来执行数据分析模型。

Hadoop 无论存储结构还是计算方式都没有 Dremel 精致。对 Hadoop 实时性的改进也一直是个热点话题。要想在 Hadoop 中山寨一个 Dremel,并且相对现有解决方案有突破,笔者觉得 Hadoop 自身需要一些改进。一个是 HDFS 需要对并发细碎的数据读性能有大的改进,HDFS 需要更加低的延迟。再者是 Hadoop 需要不仅仅支持 MapReduce 这一种计算框架。其他部分 Hadoop 都有对应的开源组件,万事俱备只欠东风。

颜开接下来提到几个与 Dremel 类似的开源实现:

  • OpenDremel/Dazo

可以在 GoogleCode 上找到 http://code.google.com/p/dremel/ 。目前还没有发布。作者声称他已经完成了一个通用执行引擎和 OpenStack Swift 的集成。笔者感觉其越走越歪,离 Dremel 越来越远了。

  • Apache Drill

Drill 是 Hadoop 的赞助商之一 MapR 发起的。有和 Dremel 相似的架构和能力。他们希望 Drill 最终会像 Hive、Pig 一样成为 Hadoop 上的重要组成部分。Drill 支持更标准的数据结构,还有更大的灵活性,支持多重查询语言,多种接口。

目前 Drill 包括四个组件:

  • 类似 Google BigQuery 的查询语言,支持嵌套模型,名为 DrQL。
  • 低延迟分布式执行引擎,可以支持大规模扩展和容错。可以运行在上万台机器上计算数以 PB 的数据。
  • 嵌套数据模型,和 Dremel 类似。也支持 CSV、JSON、YAML 类似的模型。这样执行引擎就可以支持更多的数据类型。
  • 支持多种数据源,现阶段以 Hadoop 为数据源。

颜开在文中提到:伯克利分校的教授 Armando Fox 说过一句话——“如果你曾事先告诉我 Dremel 声称其将可做些什么,那么我不会相信你能开发出这种工具”。

读者如果希望了解更多 Dremel 的实现细节,请到颜开的博客上去看这篇文章

2012-09-02 20:276423
用户头像

发布了 479 篇内容, 共 167.0 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

WhatsApp 如何启用端到端加密备份数据

CatTalk

facebook 安全 端到端加密

分布式缓存技术

黄敏

元宇宙NFT区块链游戏系统开发

涨薪60%,从美团干到阿里p7,这份Github上的面试笔记把所有Java知识都写出来了

Java 程序员 架构 面试 后端

云栖大会|盛宴之下,共赴一场视频云的进化论

阿里云CloudImagine

阿里云 音视频 WebRTC 视频云 云栖大会

字节、快手、阿里、腾讯这两年的广告推荐技术进展

博文视点Broadview

安全稳定便捷! 融云赋能“轻云会议”满足政府在线会议需求

融云 RongCloud

云计算 音视频 通信 会议 视频云

在Vue中使用JSX,很easy的

华为云开发者联盟

JavaScript Vue Vue3 JSX 渲染函数

太绝了吧! 终于有人能把TCP/IP 协议讲的明明白白了

程序员 架构 面试 后端 java

Python代码阅读(第37篇):获取两个列表中相同的元素

Felix

Python 编程 Code Programing 阅读代码

J2PaaS低代码平台的开源,将进一步助力企业数字化

J2PaaS低代码平台

低代码 低代码开发 低代码开发平台

Alibaba最新神作!耗时182天肝出来的1015页分布式全栈手册太香了

编程 程序员 IT 计算机 java

Python 的 sum():Pythonic 的求和方法

华为云开发者联盟

Python 列表 元组 Pythonic 求和

DataOps(数据运维)指南 - 数据管理的新时代

码语者

DataOps

Elasticsearch 快照相关(qbit)

qbit

2021Flexera云报告:企业积极拥抱多云,但云上成本仍然居高不下

行云管家

区块链 云计算 企业上云 上云

Apache ShardingSphere 在京东白条场景的落地之旅

SphereEx

开源 数据架构 架构设计 ShardingSphere SphereEx

211本+985硕+计算机专业投面百度,坐等一周迎来三面,已拿offer

Java 学习 程序员 架构 大厂面试

Elasticsearch 分片速度、进度及故障排查(qbit)

qbit

elasticsearch shard

19. 删除链表的倒数第N个数(链表)

黄敏

解读鸿蒙轻内核的监控器:异常钩子函数

华为云开发者联盟

鸿蒙 钩子函数 任务栈 OpenHarmony 异常钩子函数

第 17 章 -《Linux 一学就会》- Linux计划任务与日志的管理

学神来啦

Linux 运维 linux学习 linux云计算 linux基础

构建数字合作格局 赋能政企行业通信——首届WECC 2021即将召开

融云 RongCloud

音视频 IT, 通信 通信云 会议

详解物联网Modbus通讯协议

华为云开发者联盟

物联网 通信 Modbus 通讯协议 TCP通信

面试官提问:如何通过sql方式将数据库表行转列?

Java 数据库 sql 面试 后端

主数据与主数据管理(数据治理)

KoLee

数据治理 数字化 主数据管理 主数据

遭 GitHub 连夜封杀下架?被泄露的阿里内部 Java 面试手册到底有多强?

收到请回复

Java 面试 阿里 大厂Offer

三面阿里,有惊无险成功拿到offer定级P7,只能说是真的难

Java 编程 java架构

听首歌的时间,简单复习下 python 网络编程之 socket,美不美?滚雪球学python第4季14篇

梦想橡皮擦

10月月更

写给初学者,一文搞懂大数据学习、岗位、面试及简历

五分钟学大数据

大数据

Android技术分享| 【自习室】自定义View代替通知动画(1)

anyRTC开发者

android 音视频 WebRTC 在线教育 移动开发

EMC颜开分析Dremel原理,如何在3秒内分析1PB数据_Google_郑柯_InfoQ精选文章