写点什么

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:2620237
用户头像

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

关注

评论

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

【我和openGauss的故事】带有out参数的存储过程及自定义函数的重载测试

daydayup

详细的Java学习路线+Java每个阶段核心知识点+Java工作就业方向

java易二三

Java 编程 程序员 计算机 基础

Spring高手之路11——BeanDefinition解密:构建和管理Spring Beans的基石

砖业洋__

spring BeanDefinition Bean配置

如何用IoT边缘连接器实现云端应用控制PLC?

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

父子线程共用线程池

soap said

山东布谷科技详解Android端直播应用源码保持优质直播质量的技术(三):可变比特率

山东布谷科技

android 软件开发 源码搭建 直播应用源码 可变比特率

5个高并发场景优化的衡量指标

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

学生管理系统架构设计文档

艾瑾行

MaxCompute发布按量付费闲时版,计算成本最高节省66.66%!

阿里云大数据AI技术

MaxCompute

Spring Boot 最佳实践

越长大越悲伤

Java spring Spring Boot

加速未来!汽车之家App应用性能优化总结与后续展望

之家技术

前端 性能 App 质量 质量赋能

汽车之家铸精品工程

之家技术

质量 质量赋能 质量监控 质量指标

盘点一对一直播源码的那些小功能

山东布谷网络科技

源码 社交APP 一对一直播

MTK 2.9.2 迁移Oracle 11g 至 openGauss 5.0.0操作指南

daydayup

如何在短视频中合成“虚拟数字人”?

阿里云CloudImagine

云计算 剪辑 视频云 数字人

【我和openGauss的故事】为集群增加VIP

daydayup

【开源三方库】Aki:一行代码极简体验JS&C++跨语言交互

OpenHarmony开发者

OpenHarmony

汽车之家APP端到端全链路治理最佳技术实践

之家技术

质量 质量赋能 端到端 质量监控 质量指标

【我和openGauss的故事】openGauss 5.0.0企业版x86单机安装

daydayup

openGauss数据库源码解析系列文章—安全管理源码解析(五)

daydayup

仪表板修改优化实操案例

搞大屏的小北

数据看板 大屏布局 大屏设计 大屏设计优化 数据看板优化

大语言模型推理性能优化之七策

Baihai IDP

人工智能 大模型 白海科技 推理优化 大模型推理

Java 文字转图片输出,Java 输出透明背景图片,Java文字转图片防爬虫

java易二三

Java 程序员 爬虫 计算机 电脑

openGauss数据库源码解析系列文章—安全管理源码解析(五)

daydayup

倒计时2天 | 第六届openGauss技术文章征集活动最新初审合格名单(截至8.3)

daydayup

【我和openGauss的故事】可视化运维平台openGauss Datakit带你轻松玩转openGauss 5.0

daydayup

华为发布数字资产继承功能

HarmonyOS SDK

华为 HarmonyOS HMS Core

【我和openGauss的故事】 openGauss 5.0.0 事务相关语法

daydayup

【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGauss

daydayup

小模型赋能大电网,手机拍照来建档

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

汽车之家页面性能监控建设实践

之家技术

质量 质量赋能 质量监控 质量指标 质量检测

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