Concurrent发布Lingual——一种用于Hadoop的领域专用语言
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。
InfoQ :Lingual 看上去很像Apache Hive。您能谈一下Lingual相比Hive最主要的优势吗?
Wensel :Lingual首要的目标集中在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中文站投稿或者参与内容翻译工作,请邮件至 [email protected]。也欢迎大家通过新浪微博( @InfoQ)或者腾讯微博( @InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。