对大数据进行“钻取”

鉴于最近与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获取的解析器将会很快到位。紧接着就是修改后的计划器和查询优化器。所有人都在猜测何时能有可用的发布版本。也就是说,对于想贡献或参与这个项目的人来说,有很多事可以去做。

查看英文原文:“Drilling” Through the Big Data

你可能感兴趣的:(对大数据进行“钻取”)