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

标签: concurrent lingual hadoop | 发表时间:2013-03-28 22:59 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

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)关注我们,并与我们的编辑和其他读者朋友交流。

您可能也会喜欢

相关 [concurrent lingual hadoop] 推荐:

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

- - InfoQ cn
Cascading 是一个流行的应用框架,是一个面向企业数据流的 模式语言. Cascading可以定义复杂的数据处理流程,创建面向复杂数据的框架. 这些框架可被用来作为 领域专用语言(DSLs)进行脚本编写. Lingual是 最新增加到 Cascading 扩展套件中的新的基于SQL的领域专用语言,整合了 Optiq (一个动态数据管理框架)的能力和Cascading基于Hadoop的执行.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Hadoop使用(一)

- Pei - 博客园-首页原创精华区
Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracker组成. 其中NameNode,secondary NameNode,JobTracker运行在Master节点上,DataNode和TaskTracker运行在Slave节点上.

Hadoop MapReduce技巧

- - 简单文本
我在使用Hadoop编写MapReduce程序时,遇到了一些问题,通过在Google上查询资料,并结合自己对Hadoop的理解,逐一解决了这些问题. Hadoop对MapReduce中Key与Value的类型是有要求的,简单说来,这些类型必须支持Hadoop的序列化. 为了提高序列化的性能,Hadoop还为Java中常见的基本类型提供了相应地支持序列化的类型,如IntWritable,LongWritable,并为String类型提供了Text类型.

Hadoop TaskScheduler浅析

- - kouu's home
TaskScheduler,顾名思义,就是MapReduce中的任务调度器. 在MapReduce中,JobTracker接收JobClient提交的Job,将它们按InputFormat的划分以及其他相关配置,生成若干个Map和Reduce任务. 然后,当一个TaskTracker通过心跳告知JobTracker自己还有空闲的任务Slot时,JobTracker就会向其分派任务.

HADOOP安装

- - OracleDBA Blog---三少个人自留地
最近有时间看看hadoop的一些东西,而且在测试的环境上做了一些搭建的工作. 首先,安装前需要做一些准备工作. 使用一台pcserver作为测试服务器,同时使用Oracle VM VirtualBox来作为虚拟机的服务器. 新建了三个虚拟机以后,安装linux,我安装的linux的版本是redhat linux 5.4 x64版本.

Hadoop Corona介绍

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/hadoop-corona/hadoop-corona/. Hadoop Corona是facebook开源的下一代MapReduce框架. 其基本设计动机和Apache的YARN一致,在此不再重复,读者可参考我的这篇文章 “下一代Apache Hadoop MapReduce框架的架构”.

Hadoop RPC机制

- - 企业架构 - ITeye博客
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. Hadoop底层的交互都是通过 rpc进行的. 例如:datanode和namenode 、tasktracker和jobtracker、secondary namenode和namenode之间的通信都是通过rpc实现的.

Hadoop Rumen介绍

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce/hadoop-rumen-introduction/. 什么是Hadoop Rumen?. Hadoop Rumen是为Hadoop MapReduce设计的日志解析和分析工具,它能够将JobHistory 日志解析成有意义的数据并格式化存储.

Hadoop contrib介绍

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce/hadoop-contrib/. Hadoop Contrib是Hadoop代码中第三方公司贡献的工具包,一般作为Hadoop kernel的扩展功能,它包含多个非常有用的扩展包,本文以Hadoop 1.0为例对Hadoop Contrib中的各个工具包进行介绍.