写点什么

8 个值得关注的 SQL-on-Hadoop 框架

  • 2014-06-27
  • 本文字数:3417 字

    阅读完需:约 11 分钟

数据的操作语言是 SQL,因此很多工具的开发目标自然就是能够在 Hadoop 上使用 SQL。这些工具有些只是在 MapReduce 之上做了简单的包装,有些则是在 HDFS 之上实现了完整的数据仓库,而有些则介于这两者之间。这样的工具有很多,来自于 Shoutlet 的软件开发工程师 Matthew Rathbone 最近发表了一篇文章,他列举了一些常用的工具并对各个工具的应用场景和未来进行了分析。

Apache Hive

Hive 是原始的 SQL-on-Hadoop 解决方案。它是一个开源的 Java 项目,能够将 SQL 转换成一系列可以在标准的 Hadoop TaskTrackers 上运行的 MapReduce 任务。Hive 通过一个 metastore(本身就是一个数据库)存储表模式、分区和位置以期提供像 MySQL 一样的功能。它支持大部分 MySQL 语法,同时使用相似的 database/table/view 约定组织数据集。Hive 提供了以下功能:

  • Hive-QL,一个类似于 SQL 的查询接口
  • 一个命令行客户端
  • 通过中央服务支持元数据共享
  • JDBC 驱动
  • 多语言 Apache Thrift 驱动
  • 一个用于创建自定义函数和转换的 Java API

何时使用它?

Hive 是一个几乎所有的 Hadoop 机器都安装了的实用工具。Hive 环境很容易建立,不需要很多基础设施。鉴于它的使用成本很低,我们几乎没有理由将其拒之门外。

但是需要注意的是, Hive 的查询性能通常很低,这是因为它会把 SQL 转换为运行得较慢的 MapReduce 任务。

Hive**** 的未来

Hortonworks 目前正在推进 Apache Tez 的开发以便于将其作为新的 Hive 后端解决现在因为使用 MapReduce 而导致的响应时间慢的问题。

Cloudera Impala

Impala 是一个针对 Hadoop 的开源的“交互式”SQL 查询引擎。它由 Cloudera 构建,后者是目前市场上最大的 Hadoop 供应商之一。和 Hive 一样,Impala 也提供了一种可以针对已有的 Hadoop 数据编写 SQL 查询的方法。与 Hive 不同的是它并没有使用 MapReduce 执行查询,而是使用了自己的执行守护进程集合,这些进程需要与 Hadoop 数据节点安装在一起。Impala 提供了以下功能:

  • ANSI-92 SQL 语法支持
  • HIVE-QL 支持
  • 一个命令行客户端
  • ODBC 驱动
  • 与 Hive metastore 互操作以实现跨平台的模式共享
  • 一个用于创建函数和转换的 C++ API

何时使用它?

Impala 的设计目标是作为 Apache Hive 的一个补充,因此如果你需要比 Hive 更快的数据访问那么它可能是一个比较好的选择,特别是当你部署了一个 Cloudera、MapR 或者 Amazon Hadoop 集群的时候。但是,为了最大限度地发挥 Impala 的优势你需要将自己的数据存储为特定的文件格式( Parquet ),这个转变可能会比较痛苦。另外,你还需要在集群上安装 Impala 守护进程,这意味着它会占用一部分 TaskTrackers 的资源。Impala 目前并不支持 YARN。

Impala的未来

Cloudera 已经开始尝试将 Impala 与 YARN 集成,这让我们在下一代 Hadoop 集群上做 Impala 开发的时候不再那么痛苦。

Presto

Presto 是一个用 Java 语言开发的、开源的“交互式”SQL 查询引擎。它由 Facebook 构建,即 Hive 最初的创建者。Presto 采用的方法类似于 Impala,即提供交互式体验的同时依然使用已有的存储在 Hadoop 上的数据集。它也需要安装在许多“节点”上,类似于 Impala。Presto 提供了以下功能:

  • ANSI-SQL 语法支持 (可能是 ANSI-92)
  • JDBC 驱动
  • 一个用于从已有数据源中读取数据的“连接器”集合。连接器包括:HDFS、Hive 和 Cassandra
  • 与 Hive metastore 交互以实现模式共享

何时使用它?

Presto 的目标和 Cloudera Impala 一样。但是与 Impala 不同的是它并没有被一个主要的供应商支持,所以很不幸你在使用 Presto 的时候无法获得企业支持。但是有一些知名的、令人尊敬的技术公司已经在产品环境中使用它了,它大概是有社区的支持。与 Impala 相似的是,它的性能也依赖于特定的数据存储格式( RCFile )。老实地说,在部署 Presto 之前你需要仔细考虑自己是否有能力支持并调试 Presto,如果你对它的这些方面满意并且相信 Facebook 并不会遗弃开源版本的 Presto,那么使用它。

Shark

Shark 是由 UC Berkeley 大学使用 Scala 语言开发的一个开源 SQL 查询引擎。与 Impala 和 Presto 相似的是,它的设计目标是作为 Hive 的一个补充,同时在它自己的工作节点集合上执行查询而不是使用 MapReduce。与 Impala 和 Presto 不同的是 Shark 构建在已有的 Apache Spark 数据处理引擎之上。Spark 现在非常流行,它的社区也在发展壮大。可以将 Spark 看作是一个比 MapReduce 更快的可选方案。Shark 提供了以下功能:

  • 类似于 SQL 的查询语言支持,支持大部分 Hive-QL
  • 一个命令行客户端(基本上是 Hive 客户端)
  • 与 Hive metastore 交互以实现模式共享
  • 支持已有的 Hive 扩展,例如 UDFs 和 SerDes

何时使用它?

Shark 非常有趣,因为它既想支持 Hive 功能又想极力地改善性能。现在有很多组织正在使用 Spark ,但是不确定有多少在用 Shark。我并不认为它的性能能够赶上 Presto 和 Impala,但是如果你已经打算使用 Spark 那么可以尝试使用一下 Shark,特别是 Spark 正在被越来越多的主要供应商所支持。

Apache Drill

Apache Drill 是一个针对 Hadoop 的、开源的“交互式”SQL 查询引擎。Drill 现在由 MapR 推动,尽管他们现在也支持 Impala。Apache Drill 的目标与 Impala 和 Presto 相似——对大数据集进行快速的交互式查询,同时它也需要安装工作节点(drillbits)。不同的是 Drill 旨在支持多种后端存储(HDFS、HBase、MongoDB),同时它的一个重点是复杂的嵌套数据集(例如 JSON)。不幸的是 drill 现在仅在 Alpha 阶段,因此应用还不是很广泛。Drill 提供了以下功能:

  • ANSI SQL 兼容
  • 能够与一些后端存储和元数据存储交互(Hive、HBase、MongoDB)
  • UDFs 扩展框架、存储插件

何时使用它?

最好别用。该项目依然在 Alpha 阶段,因此不要在生产环境中使用它。

HAWQ

Hawq 是 EMC Pivotal 公司的一个非开源产品,作为该公司专有 Hadoop 版本“Pivotal HD”的一部分提供。Pivotal 宣称 Hawq 是“世界上最快的 Hadoop SQL 引擎”,已经发展了 10 年。然而这种观点难以得到证实。很难知道 Hawq 到底提供了哪些特性,但是可以收集到下面这些:

  • 完整的 SQL 语法支持
  • 能够通过 _Pivotal Xtension__ 框架(PXF)_ 与 Hive 和 HBase 互操作
  • 能够与 Pivotal GemFire XD(内存实时数据库)互操作

何时使用它?

如果你使用由 Pivotal 公司提供的 Hadoop 版本那么就使用它,否则不使用。

BigSQL

Big Blue 有它自己的 Hadoop 版本,称为 Big Insights 。BigSQL 作为该版本的一部分提供。BigSQL 用于使用 MapReduce 和其他能够提供低延迟结果的方法(不详)查询存储在 HDFS 中的数据。从 BigSQL 的文档中可以了解到它大概提供以下功能:

  • JDBC 和 ODBC 驱动
  • 广泛的 SQL 支持
  • 可能有一个命令行客户端

何时使用它?

如果你是 IBM 的客户那么就使用它,否则不使用。

Apache Phoenix

Apache Phoenix 是一个用于 Apache HBase 的开源 SQL 引擎。它的目标是通过一个嵌入的 JDBC 驱动对存储在 HBase 中的数据提供低延迟查询。与之前介绍的其他引擎不同的是,Phoenix 提供了 HBase 数据的读、写操作。它的功能有:

  • 一个 JDBC 驱动
  • 一个命令行客户端
  • 批量加载数据的机制
  • 能够创建新表,或者映射到已有的 HBase 数据

何时使用它?

如果你使用 HBase 那么就使用它。尽管 Hive 能够从 HBase 中读取数据,但是 Phoenix 还提供了写入功能。不清楚它是否适合产品环境和事务,但是作为一个分析工具它的功能无疑足够强大。

Apache Tajo

Apache Tajo 项目的目的是在 HDFS 之上构建一个先进的数据仓库系统。Tajo 将自己标榜为一个“大数据仓库”,但是它好像和之前介绍的那些低延迟查询引擎类似。虽然它支持外部表和 Hive 数据集(通过 HCatalog ),但是它的重点是数据管理,提供低延迟的数据访问,以及为更传统的 ETL 提供工具。它也需要在数据节点上部署 Tajo 特定的工作进程。Tajo 的功能包括:

  • ANSI SQL 兼容
  • JDBC 驱动
  • 集成 Hive metastore 能够访问 Hive 数据集
  • 一个命令行客户端
  • 一个自定义函数 API

何时使用它?

虽然 Tajo 的一些基准测试结果非常漂亮,但是基准测试可能会有一些偏见,不能对其完全信任 。Tajo 社区现在也不够繁荣,在北美也没有主要的 Hadoop 供应商支持它。但是如果你在南韩, Gruter 是主要的项目赞助者,如果你使用他们的平台那么可能会得到他们良好的支持,否则的话最好还是使用 Impala 或者 Presto 这些引擎。


感谢郭蕾对本文的审校。

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

2014-06-27 23:2620175
用户头像

发布了 321 篇内容, 共 118.4 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

如何通过Java代码在Word中创建可填充表单

在下毛毛雨

Java 表单 word文档

跟着字节AB工具DataTester,5步开启一个实验

字节跳动数据平台

大数据 云服务 AB testing实战 ab测试 企业号 3 月 PK 榜

终于有人把Java面试高分Guide总结得如此系统,堪称傻瓜式笔记总结

采菊东篱下

java面试

开源订单管理系统

源字节1号

开源 软件开发 小程序开发

软件工程高效学 | 软件的内涵与危机

TiAmo

软件工程 软件开发

不可错过!Arm 、Intel 及阿里云等资深技术专家现场解读系统安全

OpenAnolis小助手

系统安全 Meetup 龙蜥社区 sig 机密计算

好用的Java开发工具:IntelliJ IDEA 2022v2022.3.3汉化激活版

真大的脸盆

Java Mac Mac 软件 Java 开发

中国全屋智能市场将达万亿级,仅3.5%住宅渗透率拥有巨大潜力

Geek_2d6073

百度文库接入文心一言,国内首个生成式AI文档服务即将上线

Geek_2d6073

软件测试/测试开发丨接口测试必备技能-常见接口协议解析

测试人

软件测试 自动化测试 测试开发

还在stream中使用peek?不要被这些陷阱绊住了

程序那些事

Java java8 程序那些事 JDK20

初学后端,如何做好表结构设计?

王中阳Go

Go golang 数据库 表结构 golang 面试

ByteHouse:基于ClickHouse 的实时计算能力升级

字节跳动数据平台

大数据 云原生 flink 消费 kafka Clickhouse 企业号 3 月 PK 榜

百度CTO王海峰:全栈AI技术加持,打造新一代大语言模型文心一言

飞桨PaddlePaddle

CloudCanal 落地 StarRocks 数据迁移同步的实践与思考

StarRocks

数据库

苹果M1芯片的Mac怎么关闭SIP?M1 mac关闭Sip方法教程!

互联网搬砖工作者

Flink 在中泰证券的实践与应用

Apache Flink

大数据 flink 实时计算

腾讯大神耗时三年,立足实际开发的巅峰之作,详解高并发程序设计

做梦都在改BUG

Java 程序设计 高并发

2023中国儿童防敏市场发展洞察

易观分析

医疗 防敏 儿童

企业数智化转型不仅是可行的,还是必行!

加入高科技仿生人

人工智能 低代码 制造业 数智化

全网爆火!阿里内部产出的Java面试核心手册震撼开源了,太香了

开心学Java

Java 面试 春招 java Java八股文 Java 面试题

龙蜥自动化平台 SysOM 2.1 热补丁中心介绍 | 第 74 期

OpenAnolis小助手

直播 系统运维 龙蜥大讲堂 SysOM 补丁

金三银四互联网大厂精选1160道Java面试题答案整理(2023最新版)

架构师之道

编程 程序员 java面试

使用流水线插件实现持续集成、持续部署

北京好雨科技有限公司

Kubernetes CI/CD rainbond

快速掌握网站监控关键数据:仪表盘的创建与管理

云智慧AIOps社区

监控 监控宝 监控工具 云智慧 网站监控

NFTScan 与 DeBox 达成合作,双方在 NFT 社交数据层面展开合作

NFT Research

NFT

面试被怼:技术更新这么快,你还不懂响应式微服务就out了

做梦都在改BUG

Java spring 微服务 响应式

adobe安装提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”

互联网搬砖工作者

软件测试/测试开发丨一文带你了解接口测试价值与体系

测试人

软件测试 自动化测试 测试开发

软件测试/测试开发丨app自动化测试(iOS)元素定位(新手篇)

测试人

软件测试 自动化测试 测试开发

强烈推荐!阿里架构师纯手写的大型分布式项目《凤凰架构》手册

开心学Java

分布式 分布式系统 java 构架

8个值得关注的SQL-on-Hadoop框架_语言 & 开发_孙镜涛_InfoQ精选文章