【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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 的实现细节,请到颜开的博客上去看这篇文章

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2012-09-02 20:276127
用户头像

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

关注

评论

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

专题:基于云的技术架构设计实践

hackstoic

DevOps 云原生 技术架构 内容合集 签约计划第二季

MySQL设置数据库为只读

Simon

MySQL

4个优化方法,让你能了解join计算过程更透彻

华为云开发者联盟

数据 高性能 哈希表 join 标识对齐

电商系统微服务拆分及架构设计

stars

架构训练营 电商微服务分析

给弟弟的信第11封|Java学习路线

大菠萝

28天写作

如何优雅地在Vue页面中引入图片

编程江湖

前端开发

CSDN热榜、华为云博客都可用来练习Python scrapy 爬虫

梦想橡皮擦

12月日更

为什么一半的人员能够完成超过去年的事情?(13/28)

赵新龙

28天写作

vivo浏览器的快速开发平台实践-总览篇

vivo互联网技术

敏捷开发 浏览器 开发平台

Linux系统学习攻略《Linux一学就会》:Linux系统启动原理及故障排除

侠盗安全

Linux linux运维 运维工程师 云计算架构师 linux电子书

再获信通院权威认证,优等生华为云GaussDB数据库凭什么?

华为云开发者联盟

数据库 opengauss 华为云 GaussDB 信通院

Redis(二):内存模型及回收算法

IT巅峰技术

Java redis 架构师 分布式缓存 redis分布式

什么是 Java Marker Interface(标记接口)

Jerry Wang

Java jdk volatile 28天写作 12月日更

Vue3进阶(贰):Vue3 新特性

No Silver Bullet

Vue3 12月日更

react源码解析7.Fiber架构

buchila11

React

云图说|DRS数据对比——带您随时观测数据一致性

华为云开发者联盟

数据库 华为云 DRS 数据迁移

【LeetCode】统计「优美子数组」Java题解

Albert

算法 LeetCode 12月日更

lancet: 一个全面、高效、可复用的go语言工具函数库

柳叶刀

Go web go modules

Flutter 将整个App变为灰色(勿忘国殇 警钟长鸣)【Flutter专题21】

坚果

flutter 28天写作 12月日更

react源码解析8.render阶段

buchila11

React

关于人脸识别的一个应用案例

为自己带盐

人脸识别 28天写作 百度智能云 12月日更

MySQL性能优化:EXPLAIN 执行计划与join

秋水

MySQL性能优化 执行计划 内容合集 签约计划第二季

对话中移上研院,分享DevOps及运维观点

龙智—DevSecOps解决方案

DevOps 运维 中移上研院

大数据基石之Hadoop的读写流程与2.X架构

编程江湖

大数据 hadoop

模块六课后作业-拆分电商系统为微服务

断水风春

架构实战营

文件写入的6种方法,你知道几种

编程江湖

JAVA开发

java开发之Java ORM 框架推荐

@零度

Java Java ORM ​ObjectiveSQL

现代配置指南——YAML 比 JSON 高级在哪?

杨成功

json 大前端 架构师 yaml 签约计划第二季

初识 AspectJ ~

阿策小和尚

28天写作 Android 小菜鸟 12月日更

详细解读MySQL中的B+Tree 落地形式

秋水

MySQL优化 内容合集 签约计划第二季 B+tree

权威认可!腾讯云TDSQL通过信通院数据库服务商运维运营服务能力评估

腾讯云数据库

tdsql 国产数据库

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