Concurrent 发布 Lingual——一种用于 Hadoop 的领域专用语言

  • Boris Lublinsky
  • 夏雪

2013 年 3 月 28 日

话题:大数据语言 & 开发架构AI

Cascading 是一个流行的应用框架,是一个面向企业数据流的模式语言。Cascading 可以定义复杂的数据处理流程,创建面向复杂数据的框架。这些框架可被用来作为领域专用语言 (DSLs)进行脚本编写。

Lingual最新增加到Cascading扩展套件中的新的基于 SQL 的领域专用语言,整合了Optiq (一个动态数据管理框架)的能力和 Cascading 基于 Hadoop 的执行。Lingual 的目标,是降低熟悉 SQL、JDBC 和传统 BI 工具的开发人员和数据分析师使用 Hadoop 的门槛。它所提供的能力,被公司誉为“真正用于 Cascading 和 Hadoop 的 SQL”。

据 Chris Wensel(Cascading 技术总监兼创始人)表示,Lingual 的目标是提供符合 ANSI 标准的 SQL 接口,该接口被设计为与所有知名的 Hadoop 发行版兼容——无论是自建的还是在云环境中的。它可以从传统数据仓库中“剪贴”已有的 ANSI 标准 SQL 代码,这样一来,用户就能够直接访问被锁在 Hadoop 集群中的数据。它也可以从 Hadoop 乃至大量各种不同的 BI 工具中查询并导出数据。

使用 Lingual,公司可以通过标准的技术把已有的技术和产品投资平移到 Hadoop 上,立刻就能够发挥它们的价值。如果分析师和开发人员熟悉 SQL、JDBC 或者传统的 BI 工具,可以现在马上很容易地在 Hadoop 上创建大数据应用,从而大幅提升工作效率,提前将产品推向市场。

Lingual 并不打算为 Hadoop 集群中上 PB 级别的数据提供次秒级(sub-second)的响应时间。公司更为重视的目标是,简化应用向 Hadoop 迁移的过程——实际上,最大的挑战主要集中在关系型数据库或大规模并行处理数据库向 Hadoop 的迁移。

Lingual 发行版包括

  • 在 Cascading 框架上层构建的 ANSI 标准 SQL 解析器与优化器
  • 大规模非结构化数据之中的关系型数据编目视图
  • 用来测试和提交 Hadoop 查询的 SQL shell
  • 以 JDBC 驱动程序集成现有的 BI 工具和应用服务器

InfoQ 有幸与 Concurrent 股份有限公司的技术总监兼创始人 Chris K Wensel 讨论了 Lingual。

InfoQLingual 看上去很像 Apache Hive。您能谈一下 Lingual 相比 Hive 最主要的优势吗?

WenselLingual 首要的目标集中在 ANSI 标准的兼容性上。Hadoop 从来都不是单独使用的,你既可以把数据从 HDFS 位桶(bit-bucket)转入备选工具(如 R 或 Mondrian),也可以把现有的工作负载转移到 Hadoop 上,以发挥其性价比的优势。无论是哪种情况,很大的可能性是你本来就熟悉 SQL,或者你正迁移的“应用”或查询已经是基于 SQL 来做的,甚至还有可能是你正使用的工具只能识别 SQL。所以,提供基于标准的 SQL 接口非常重要。

为了达成这个目标,我们做了很多测试。我们现在已经从 Mondrian 测试套件中提取了 6000 多个复杂 SQL 查询,并且我们已经达到了 90% 的测试覆盖,而且,还计划从流行的工具中吸收增加更多的测试。

Lingual 并不打算做成一个提供人类级别响应时间的专用查询工具。因此,我们建议使用一个适当的分布式 MPP(大规模并行处理)风格的数据库。我不建议在非 Hadoop 设计的场景下使用 Hadoop。

这就是说,我们提供了一个遵循 JDBC 驱动程序的标准,可以使用 Cascading 的“本地模式”去测试非本地数据的查询,这种方式不需要依赖 Hadoop 去提升测试速度。

在 ANSI 标准依丛性目标之上,Lingual 运行于 Cascading 的上层,所以任何针对 Cascading 的改进,或者任何新的“规划师”(除了专门为 Hadoop 准备的),以及本地内存处理,连同 Cascading 现有的健壮性、灵活性、可扩展性、标准性(很多公司已经在计算场景中应用了标准化的 Cascading)一起,都将被 Lingual 继承过来。

InfoQ:我们从现有的产品描述上还无法非常清晰地了解 Lingual 如何定义和维护关系型数据库编目。您可以解释一些实现细节吗?它是否需要准备好特定的文件,或者使用类似于 Hive SerDe 的机制去提供现有数据与表结构定义的映射?

Wensel在最初的发布里有一个内置的“单用户”编目。我们将在短期内提供 HCatalog 集成及(或)一个备选的方案。当前,元数据编目是一个琐细的(并可由人工编辑的)JSON 文档,它可以保存在本地文件系统或 HDFS(甚至 S3)上,可以允许基本的共享。

至于读 / 写数据方面,Lingual 将整合提供所有 Cascading(以及 Cascalog、Scalding 等等)的支持。这些都通过 Lingual 的命令行接口进行管理。

用户不必使用任何“Cascading 特有的”格式去查询数据。

用户可以从命令行中把一个文件简单地注册为一张表,如果一切顺利的话,在该文件中可以找到任何元数据(列和类型)信息。我们将在接下来的工作中把它逐步细化,把编目工具中最新的可支持的数据格式也添加进来。

InfoQ Lingual 的安全模型是如何考虑的?它是否基于文件访问权限?是否可以被 JDBC 驱动程序支持?

Wensel目前没有考虑去扩展 Hadoop 当前的安全模型。

查看英文原文:Concurrent Releases Lingual, a SQL DSL for Hadoop


感谢杨赛对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

大数据语言 & 开发架构AI