鉴于最近与 Hadoop 相关的事物呈爆炸性增长,出现与 Hadoop 生态系统相关的产品和实现也就不足为奇了。受到 Google Dremel 启发,Apache 的 Drill 项目是对大数据集进行交互式分析的分布式系统。Drill 并不会试图取代已有的大数据批处理框架(Big Data batch processing framework),如 Hadoop MapReduce 或流处理框架(stream processing framework),如 S4 和 Storm 。相反,它是要填充现有空白的——对大数据集的实时交互式处理
类似于 Dremel, Drill 实现基于对嵌套、树状数据的处理。在 Dremel 中,这个数据基于 protocol buffers ——嵌套的、基于模式的数据模型(nested schema-based data model)。Drill 计划通过添加其它基于模式的实现来扩展这个数据模型,例如 Apache Avro 以及模式化程度更低的 JSON 和 BSON 。除了单独的数据结构,Drill 还计划支持小的数据连接(baby joins)——连接到小型的可加载到内存中的数据结构。
Dremel 只基于一种嵌套数据的类 SQL 查询语言,Drill 与之不同,它计划引入几种(可插拔)的查询语言。Drill 的实现将会包含:
· DrQL——针对嵌套数据的类 SQL 查询语言,它与 Google BigQuery/Dremel 兼容。这样,BigQuery 应用能够与 Drill 协同工作。
· Mongo 查询语言
为了实现高性能查询处理,Drill 计划专门引入一种分布式可扩展的执行引擎(例如,类似于 Dryad )。这个引擎将会提供数据本地化、容错以及基于列和基于行的等级处理。
Drill 的初期目标是明确细化的需求和架构,然后开发包含执行引擎和 DrQL 的初步实现。
目前,确定初期需求和定义整体系统架构之类的重要工作已经完成。下一步就是实现主要的 Drill 组件。有些组件的原型源于其它项目的某一部分,如 OpenDremel 中的解析器。
InfoQ 有幸与这个项目的核心开发人员 Ted Dunning 来讨论 Drill。
InfoQ:Drill 这个新项目最让你感兴趣的是什么?
Dunning:这个新项目提供了构建社区的机会,这是一种目前开源社区所忽略的计算模型。这个社区会基于对这种计算方式感兴趣的共识来创建,社区将会比项目所产生的代码更重要。在 Apache 有一种说法,社区比代码重要。 在 Hadoop 上我们可以明确看到这一点,拥有了社区和对接口的共识就会产生光明的市场前景。我们需要做像 Dremel 一样的事物。对于一个公司来讲,不会私下开发这一系列的功能,然后将结果公之于众。我们需要就像 Hadoop 那样,构建共识和社区。
InfoQ: Drill 将会主要用在什么应用上呢?
Dunning: 我认为,Drill 是对 map-reduce 和实时计算的很好补充。有些应用会产生扁平表,这些表将会用于那种特定的探索式分析,这种应用中 Drill 模式的查询也会大有可为。这将便于创建拥有较强数据钻取功能和漂亮可视化界面的 dashboard 界面。
我还认为,在一台单机上运行 Drill 来处理非格式(non-columnar)化的数据也很棒。当你只是聚合或简单分析平面文件的时候,这将是替代诸如 AWK、Perl、Python 这种脚本语言的一种有意思的选择。
InfoQ: 你觉得 Drill 实现最大的复杂性和挑战是什么?
Dunning: 执行 Drill 查询有三个主要的过程。首先,你需要对查询进行解析。这不仅仅是词法分析,因为你还要处理一些语义上比较微妙的东西,这存在于现实世界的任意解析语言中。其次,你需要将解析器产生的逻辑执行计划转变成实际计划(physical plan),在其中要考虑到有多少执行者(worker)、基础文件是什么格式、存储了什么以及执行引擎有什么样的功能。最后,你必须真正高效的执行实际计划。这可能会用某种类型的 JIT 编译器将部分实际计划转使换成本地代码。综合这些阶段,你要考虑如何在集群的环境中协调这些执行过程。
依我看来,解析器已经基本解决。名为 Optiq 的高级查询优化器也可用了,尽管它还不能处理嵌套数据。这样,执行引擎是还未完成的主要代码,以及粘合整个过程的代码。我猜,我们首先将会有一个初级版本的执行引擎,但随着时间的推进会有不断升级的引擎。
InfoQ: 有哪些公司对 Drill 的开发感兴趣呢?
Dunning: 确实有很多,而且还在迅速增加。我们参与了所有主要商用 Hadoop 发布版本的邮件列表和员工聚会。我们还得到了其他一些公司的关注,如 Concurrent and Drawn to Scale、Big Data Craft 和 Hadapt。实际上,Big Data Craft 甚至从以色列派遣了一名代表到第一届 Drill 用户组,并展现 OpenDremel 项目(现在这个项目已经并入到 Drill 中了)的进展。我们也曾经参与并得到诸如 Intel 和 Twitter 这样的大公司的关注。海湾地区的 Drill 用户组已经有超过 200 名会员,开发者的邮件列表大致处于相同的水平。
所以,来自各种公司的兴趣非常浓厚。
但是,我需要指出,参与 Apache 项目的通常是个人。这些个人是由谁雇佣或赞助超出了 Apache 关心的范围。有些公司愿意给人这样的印象,他们拥有或控制某些 Apache 项目。Apache Drill 不会像这样,始终欢迎所有个人的参与。
InfoQ: 你们最早的 Drill 代码什么时候能获取呢?
Dunning: 这取决于社区。我们从 Open Dremel 获取的解析器将会很快到位。紧接着就是修改后的计划器和查询优化器。所有人都在猜测何时能有可用的发布版本。也就是说,对于想贡献或参与这个项目的人来说,有很多事可以去做。
评论