2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

有关Redis你掌握好这22点,大厂面试基本稳了!

Java全栈架构师

数据库 程序员 后端 Java 面试 redis 底层原理

啃完这32W字的Java程序员面试题,大厂面试分分钟搞定!

收到请回复

Java 云计算 开源 架构 编程语言

建木持续集成平台v2.5.5发布

Jianmu

开源 DevOps 低代码 CI/CD 无代码

海龟绘图简单科普

吉师职业混子

9月月更

抢抓国际标准 中国“原创”企业成国际事务处理性能委员会(TPC)新成员

科技热闻

为什么Kubernetes和容器与机器学习密不可分?

京东科技开发者

人工智能 机器学习 Kubernetes 容器 ML

ESP32-C3 VScode开发环境搭建(基于ESP-IDF—Windows和Ubuntu双环境)

矜辰所致

vscode 开发环境 ESP32-C3 9月月更

OSCAR开源产业大会|中国信通院可信开源评估最新结果正式发布

Ada@SegmentFault

Spring 注册 Bean 在配置中的定义和使用 Autowired

HoneyMoose

9月大厂Java岗面试原题复盘,双非2年经验成功内推进入阿里!

收到请回复

Java 云计算 开源 架构 编程语言

字节Java大神精心编写的《Java开发者面试百宝书》,助你一臂之力!

收到请回复

Java 云计算 开源 架构 编程语言

利用Python开发App实战

千锋IT教育

什么是帮助中心?企业该怎样制作帮助中心页面?

Baklib

企业 帮助中心

【数据结构】带头+双向+循环链表(增、删、查、改)的实现_【附源码、图片示例】_ [初阶篇_ 复习专用]

Dream-Y.ocean

c 双向循环链表 9月月更

DCAT亮相WAIC 2022浦东分会场——元宇宙博览会暨数字光影大会

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

速度与安全可兼得!改造异步布局大幅提升客户端布局性能

小红书技术REDtech

性能优化 安卓 客户端 Andriod

面试必问的AOP,我今天用它实现了系统告警

程序员小毕

spring 源码 程序员 Java 面试 aop

「Gitea篇」如何用Git平台账号登录建木CI

Jianmu

DevOps 持续集成 gitops 建木

瑞云科技总经理邹琼出席2022世界人工智能大会投融资主题论坛

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

《OSCAR开源产业大会丨《全球开源生态研究报告(2022年)》重磅发布》

Ada@SegmentFault

易周金融分析 | 易观千帆发布7月城商行农商行APP盘点;养老理财产品跨行代销布局提速

易观分析

金融 理财产品

元宇宙会议来了,3DCAT助力2022长宁区科技创新主题论坛开展

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

如何进行高效的文档管理?这三点很重要!

Baklib

文档管理 企业文档管理工具

面试复盘 | 2022届 大疆秋招 测试开发 完整面经

Java-fenn

Java

中山市等级测评机构有哪些单位?电话号码是多少?

行云管家

等保测评 等级测评 中山市

云管平台的优势有哪些?哪家云管平台好?

行云管家

云计算 云管平台 云管理

「番外篇」如何用Git平台账号登录建木CI with docker-compose.yml

Jianmu

DevOps 低代码 CI/CD gitops 无代码

一款开源的基于 Angular 的电商 Storefront 开发框架介绍

汪子熙

typescript 前端开发 angular 电商 9月月更

Wordpress 如何添加 Ads.txt 文件

HoneyMoose

千行百业,可信开源,2022 OSCAR开源产业大会成功召开

Ada@SegmentFault

Maven 中依赖使用的版本号

HoneyMoose

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