尽管 Hadoop 技术的运用越来越广泛,而且一直在增长,但是很多企业仍然面对着一个问题,即寻找恰当的方法来快速经济地开发基于Hadoop 的应用。有一种方法可以大大简化这类应用,就是使用领域特定语言(DSL)。
在底层MapReduce API 之上,最为流行的一种Java 领域特定语言就是 Cascading 。Cascading 是在 2007 年底作为一种领域特定语言引入的,用于实现面向大规模数据工作流的函数式编程。它基于“管道(Plumbing)”这种隐喻将数据处理定义为构建于我们熟悉的一组元素之上的工作流,这些元素是: Pipe、Tap、元组行、Filter、Join、Trap 等。
本周,Cascading 发布了该产品的最新版本——Cascading 2.5,将支持 Hadoop 2,以及 YARN。根据该公司的新闻稿,该产品的新特性有以下几点:
- 支持 Hadoop 2 及其新特性,支持 YARN。希望升级到 Hadoop 2 的 Cascading 用户,能够无缝地迁移其应用,并且能够使用像 YARN 这样的较新的高级特性。
- 对复杂的连接(JOIN)操作有额外的性能改进,对于处理后的数据在 HDFS 上的动态分区和存储进行了优化,使其更为高效。
- 与其他 Hadoop 厂商以及 Hadoop 即服务的提供者有了更广的兼容性,包括兼容 Cloudera、Hortonworks、MapR、Intel、Altiscale、 Qubole 及 Amazon EMR 等,不论在本地(on-premise)还是在云端,为 Cascading 用户提供了更丰富的部署选择。
同时,Concurrent 还发布了 Cascading Lingual 的 GA 版本。Cascading Lingual 是一个开源项目,该项目对访问基于 Hadoop 的数据提供了全面的 ANSI SQL 接口。该项目还涵盖了超过 7 千条从成熟的工业标准 OLAP 工具继承而来的 SQL-99 语句。根据 Concurrent 的说法:
为 Hadoop 生态系统内的任何工具都带来了最广泛的 SQL 覆盖。它有两方 面创新:使 Hadoop 变得简单、容易使用;只需要一条 SQL 语句,就能很 简单地将多个数据存储集成到 Hadoop 中。
InfoQ 有幸同 Concurrent 公司的创始人及首席技术官 Chris K Wensel 讨论了有关 Cascading 最新版本的一些话题。
InfoQ:当您提到 Cascading 2.5 对 YARN 的支持时,具体指的是什么?是 MapReduce 代码使用了 YARN 资源管理器,还是实际上利用 YARN 创建了一个新的特定于 Cascading 的应用管理器?
Wensel:Cascading 2.5 隐性地支持 YARN。因为 Cascading 2.5 支持 Hadoop 2,所以它也支持 YARN 功能。Cascading 实际上并未利用 YARN 进行应用开发。
InfoQ:对于利用 Apache Tez 进一步改进 Cascading 应用的性能,您是否有具体的计划?
Wensel:是的,在我们的产品发展路线图上的确有关于 Tez 的计划,我们会在适当的时间向公众宣布相应更新。
InfoQ:您能针对复杂连接的优化及性能提高为我们解释一下吗?
Wensel:我们更新了 API,以支持更为复杂、定制的连接类型。比如:在某些特定情况下 Cascalog 能够利用这个特性。
InfoQ:在您看来,我们对于基于 SQL 处理的强调是否会限制 Hadoop 为依托的应用开发?不论 SQL 有多棒,它只是对于解决某类问题有些好处,而对于利用 Hadoop 的企业而言,这只是应用的一个有限子集。
Wensel:SQL 几乎能够支持其余 99% 的开发人员、分析师以及遗留系统使用 Hadoop。是的,你的确可能遇到使用 SQL 会有所限制的情况,但是对于大部分问题而言,90% 都可以通过 SQL 来表述。Cascading 给人们提供了选择。你不妨问问自己这个问题:有谁愿意写一堆 Java 代码来完成一句 SQL 语句就能实现的操作?又有谁愿意写几百行 SQL 语句来取代最好是用 Java 来编写并测试的某个操作?Cascading 给广大开发人员带来了灵活性。
查看英文原文: Cascading 2.5 Supports Hadoop 2
感谢臧秀涛对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论