【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:276131
用户头像

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

关注

评论

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

阿里云 EMAS & 魔笔:6 月产品动态

移动研发平台EMAS

阿里云 消息推送 移动开发 低代码开发 移动测试

入围 | StoneDB 顺利晋级“2022 年中国开源创新大赛”决赛,并荣获 “2022中国优秀开源项目/社区”奖项

StoneDB

MySQL 数据库 StoneDB

什么是CI/CD?让你的项目变得更加敏捷!

这我可不懂

CI/CD Github Action

低代码平台实用吗?有哪些大型企业在用低代码?

优秀

低代码

活动回顾 | StoneDB亮相2023数据技术嘉年华:增强AP、升级TP、信创替换,让万千DBA用得更省心,企业用得更省钱

StoneDB

数据技术 StoneDB 数据技术嘉年华

OpenTiny 前端组件库正式开源啦!面向未来,为开发者而生

OpenTiny社区

开源 Vue 前端 UI组件库 angluar

神州数码:我们和阿里云是市场和技术的共同体

新云力量

云计算 阿里云 神州数码

华为云“All in ”大模型:革命性助推!华为盘古3.0点燃人工智能巨星之梦

EquatorCoco

华为云 盘古大模型 大模型 数智化

API全场景零码测试机器人——ATGen带来“超自动化”测试模式

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

国家电投江西公司与特斯联设立合资公司 发掘资本在新能源行业的潜在投资机遇

TE智库

数字税务时代的革新利器:低代码开发平台助力税务办公数字化大步迈进!

快乐非自愿限量之名

人工智能 低代码 数智化 税务云

华为云SI伙伴新路径启航,携手全面开拓市场新空间

新消费日报

消除企业信息孤岛的低代码开发平台

力软低代码开发平台

Region Failover在GreptimeDB 集群中的实现

Greptime 格睿科技

时序数据库 云原生数据库 failover region datanode

数智浪潮!低代码开发平台扬帆迈向智慧诊疗领域新纪元!

不在线第一只蜗牛

人工智能 低代码 数智化 医疗健康

提高开发质量的 5 个必要实践

互联网工科生

Java Code Review 开发质量

终结对列存数据库的偏见!SAP HANA数据库的高效事务处理 | StoneDB学术分享会 #7 原创 读论文的StoneDB StoneDB

StoneDB

MySQL 数据库 StoneDB

软件测试/测试开发丨Windows系统chromedriver安装与环境变量配置

测试人

软件测试 windows 环境变量 测试开发 chromedriver

Gluten + Celeborn: 让 Native Spark 拥抱 Cloud Native

阿里云大数据AI技术

后端 企业号 7 月 PK 榜 Push Shuffle

一站式运维管家 ChengYing 主机接入原理解析

袋鼠云数栈

开源 运维

从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA

汀丶人工智能

人工智能 自然语言处理 深度学习 知识图谱 智能搜索

领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)

汀丶人工智能

人工智能 深度学习 nlp 知识图谱 智能问答

MySQL生态的下一代HTAP数据库创新与实践 | StoneDB邀您参加第12届数据技术嘉年华(2023 DTC)

StoneDB

MySQL 数据库 StoneDB

超级App快速开发的一种创新模式

FinFish

小程序 小程序生态 超级app 小程序化

MySQL:我的从库竟是我自己!?

爱可生开源社区

春分将至,发版当时:StoneDB-5.7-v1.0.3版本正式发布!优化主备能力,提高主从同步性能,众多细节优化,快来体验~

StoneDB

版本更新 StoneDB

OWASP 定义的大模型应用最常见的10个关键安全问题

华为云PaaS服务小智

云计算 华为云 代码检查 华为开发者大会

低代码平台之流程自动化测试

鲸品堂

低代码 企业号 7 月 PK 榜

StoneDB 开源社区月刊 | 202303期

StoneDB

MySQL 数据库 StoneDB

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