walter的drill笔记之一 简介
原文链接 http://www.xiangguo.li/big-data-system/2014/07/28/drill1
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
{% include JB/setup %}
Drill:大数据的交互式分析
简介
Drill是开源世界中“交互式”的数据分析系统。目标是可以组建超过10000台机器的集群,并且可以在秒级处理PB级别或者万亿条数据。Hadoop作为大数据处理的事实标准,设计目标是实现大数据处理的高吞吐量。MapReduce处理一个数据,需要分钟级的时间。而业界对交互式的低延迟的数据分析和挖掘提出了新的需求,Google的Dremel希望将处理时间缩短到秒级。当前Dremel已经为Google的bigquery提供服务。Drill作为Google Dremel的开源实现,并非Hadoop的替代品,只是其补充。和Dremel一样,Drill可以高效的处理嵌套式数据格式。此外,Drill加入了额外的特性,支持更广泛的查询语言,数据格式和数据源。
概念模型
现在Drill的已经完成了初始的需求,架构。实现了一个包括一个执行引擎和DrQL的初始系统。和Hadoop一样,Drill想要支持多种存储系统(通过文件系统API)和文件格式(通过输入输出API)。同时,Drill希望支持多种查询语言,数据格式和数据源。 Drill的架构分为了四个组件:
- 查询语言:这一层是用来分析用户的查询并生成一个查询计划。初始目标是支持类似Dremel和Goolgle BigQuery 使用的 SQL-Like语言,我们叫做DrQL。当然,Drill也会支持更多的查询语言,比如Mongo Query Language, Cascading 和 Plume。
- 低延迟的分布式执行引擎:这一层是用来执行物理计划,提供在10000台服务器上高效分析PB级别数据的扩展性和容错性。Drill的执行引擎参考了一些分布式执行引擎(Dremel,Dryad,Hyracks, CIEL, Stratosphere)和列式存储。这里要提一下,Drill的执行引擎非常灵活,同时支持基于列的查询和基于行的查询。
- 嵌套式数据类型:这一层是为了支持多种数据格式。初始目标是支持Dremel使用的基于列的格式。后期准备支持Protocol Buffers/Dremel, Avro/AVRO-806/Trevni, CSV,JSON, BSON , YAM等格式。
- 可扩展的数据源:这一层用来支持多种数据源,目前计划支持Hadoop和Hbase。
Drill的发布计划
- Milestone 1: 基本功能 2013年9月份已发布 JDBC,分布式执行,Parquet and JSON可读
- Milestone 2: 执行时验证 性能,全排序,节点缓存,诊断工具,度量,parquet写
- Milestone 3:查询完善 TPC-H, Hive UDF, Hive read SerDe and HBase
- Milestone 4:用户交互完善 Pushdown,优化,复杂的向量操作,Hive metastore,额外的文件格式
- Milestone 5:产品质量 ODBC,额外的优化器,稳定性,资源调度
相关资料
本博文从老博客http://litongbupt.iteye.com转移过来。