NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

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

关注

评论

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

玩转Angular系列:组件间各种通信方式详解

echeverra

angular

解锁智能合约的力量:区块链入门教程

领创集团Advance Intelligence Group

区块链 智能合约 以太坊

我的sql没问题为什么还是这么慢|MySQL加锁规则

做梦都在改BUG

Java MySQL 数据库

一文读懂PaddleSpeech中英混合语音识别技术

飞桨PaddlePaddle

语音识别 百度飞桨

借助阿里云 AHPA,苏打智能轻松实现降本增效

阿里巴巴云原生

阿里云 容器 云原生 AHPA

玩好 StarRocks,大厂 offer 接不完!|字节跳动、小红书、京东物流、唯品会、腾讯音乐要的就是你!

StarRocks

数据库

运维训练营第16周作业

好吃不贵

最佳实践 | 基于腾讯云MRCP-Server打造简单智能外呼系统

牵着蜗牛去散步

人工智能 腾讯云 腾讯 语音识别 智能外呼系统

Spring中Autowired注解到底怎么实现的

做梦都在改BUG

Java spring 框架

2022 IoTDB Summit:Dr.Feinauer《Apache IoTDB 在德国汽车生产线多级数据同步中的应用实践》

Apache IoTDB

数据库·

从智能进化模型看用友BIP的AI平台化能力

YonBuilder低代码开发平台

基于 eBPF 的 Serverless 多语言应用监控能力建设

阿里巴巴云原生

阿里云 Serverless 云原生

深度访谈 Vland CTO:像乐高一样搭建元宇宙

万事ONES

元宇宙 访谈

GitLab 专家分享|关于 DevSecOps ,你需要知道这几点

极狐GitLab

DevOps DevSecOps 极狐GitLab 研发运维 安全左移

安全高效 | AIRIOT智慧工地管理解决方案

AIRIOT

物联网 智慧工地

龙蜥LoongArch架构研发全揭秘,龙芯开辟龙腾计划技术合作新范式

OpenAnolis小助手

操作系统 龙蜥社区 龙腾计划 龙芯中科 LoongArch

【技术干货】第1篇:有道实况OCR技术

有道技术团队

阿里云云原生每月动态 | 聚焦实战,面向开发者的系列课程全新上线

阿里巴巴云原生

阿里云 云原生

《数据治理行业实践白皮书》正式发布,开辟数据治理新范式(附下载)

袋鼠云数栈

数据治理

解读场景化视频制作工具的实现过程

阿里云视频云

云计算 智能生产

探究计算机视觉新兴能力:如何通过提示检索提高性能?

Zilliz

计算机视觉

跨境数据传输是日常业务中经常且至关重要的组成部分

镭速

前端已死?我看未必,但「低代码」已剑指前端程序员

引迈信息

面试 Vue 前端 低代码

请你喝一杯 Corretto?谈一谈 JDK 的新选择

亚马逊云科技 (Amazon Web Services)

Java jdk

听说你没法在 JRE 中使用 arthas?不,你可以

阿里巴巴云原生

Java 阿里云 容器 云原生

3.基于Label studio的训练数据标注指南:文本分类任务

汀丶人工智能

信息抽取 数据标注 文本分类 labelstudio

2022 IoTDB Summit:中国核电刘旭嘉《工业时序数据库 Apache IoTDB 在核电的应用实践》

Apache IoTDB

用户案例 数据库·

再次飙升GitHub榜首!这份“保姆级”的SpringBoot笔记,不服不行

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

鲁班软件使用明道云优化项目管理的全过程

明道云

一文吃透 Go 内置 RPC 原理

捉虫大师

Go RPC

在云原生和裸金属环境开展NFS存储性能比对测试

QE_LAB

云原生 性能测试

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