http://www.infoq.com/cn/news/2014/06/sql-on-hadoop

数据的操作语言是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这些引擎。

值得关注的sql-on-hadoop框架的更多相关文章

  1. 在Java、Web和移动开发方面最值得关注的12大开源框架

    在这篇文章中,我将分享一些值得开发者学习的优秀框架,以提高他们在移动开发.Web 开发以及大数据方面的开发技能. 1.AngularJS 这是一个JavaScript框架,我已经把它加入到我的2018 ...

  2. 十六款值得关注的NoSQL与NewSQL数据库--转载

    原文地址:http://tech.it168.com/a2014/0929/1670/000001670840_all.shtml [IT168 评论]传统关系型数据库在诞生之时并未考虑到如今如火如荼 ...

  3. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  4. 转:程序员最值得关注的10个C开源项目

    程序员最值得关注的10个C开源项目 1. Webbench Webbench 是一个在 linux 下使用的非常简单的网站压测工具.它使用 fork ()模拟多个客户端同时访问我们设定的 URL,测试 ...

  5. SQL on Hadoop中用到的主要技术——MPP vs Runtime Framework

    转载声明 本文转载自盘点SQL on Hadoop中用到的主要技术,个人觉得该文章对于诸如Impala这样的MPP架构的SQL引擎和Runtime Framework架构的Hive/Spark SQL ...

  6. 盘点SQL on Hadoop中用到的主要技术

    转载自:http://sunyi514.github.io/2014/11/15/%E7%9B%98%E7%82%B9sql-on-hadoop%E4%B8%AD%E7%94%A8%E5%88%B0% ...

  7. .NET开发人员值得关注的七个开源项目 .

    NET开发人员值得关注的七个开源项目 软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的 ...

  8. 从hadoop框架与MapReduce模式中谈海量数据处理

    http://blog.csdn.net/wind19/article/details/7716326 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显 ...

  9. 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)

    转自:http://blog.csdn.net/v_july_v/article/details/6704077 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到 ...

  10. 全球AI界最值得关注的十位科学家

    全球AI界最值得关注的十位科学家   我们可以看到AI已经从象牙塔里的高冷研究,逐步转换为科技公司.互联网公司的最核心竞争力.AI代表了这时代人类的前沿智慧,也正达到一种科学的极致. 这两天在美国加利 ...

随机推荐

  1. 韩剧TV APP案例分析

    产品 选择产品:韩剧TV 版本:Android版 选择理由:节假日坐车回家时使用较多次数的APP,刚好国庆坐车回家时正在使用,所以选择了这款APP. 第一部分:调研.评测 第一次上手体验 刚打开APP ...

  2. 学习jenv

    背景 生活不只是眼前的苟且, 还有诗和远方. 上个月工作需要启动了一个小项目, 按最初的计划会用JDK8. 但当计划报上去后, 运维部门出于后续升级维护的考虑, 不允许使用已经出来4年多的JDK8了, ...

  3. Internet History, Technology and Security (Week 9)

    Week 9 Security: Web Security We are now on the second to last week of the class and finishing up ou ...

  4. Beta阶段DAY3

    一.提供当天站立式会议照片一张 二.每个人的工作 1.讨论项目每个成员的昨天进展 刘阳航:尝试改进UI,美化界面. 林庭亦:调整难度设置. 郑子熙:尝试改进UI,美化界面. 陈文俊:调整难度设置. 2 ...

  5. 使用IPMI操作Dell服务器

    机房里有5台实验用的Dell R710服务器,为了低碳环保,我决定只在工作日白天开启它们,其余时间全部关闭.我选择在linux下用ipmitool结合计划任务来实现,这里只记录ipmitool工具的用 ...

  6. [Linux] 关于 history 命令的简单使用

    1. 如果不想记录当前 会话操作的命令的话 可以使用命令 set +o history 但是这个命令有一个坏处, 他自己被记住了... 2. 还有一个办法 就是 在退出登录之前执行命令 history ...

  7. poj 2299 Ultra-QuickSort(树状数组求逆序数)

    链接:http://poj.org/problem?id=2299 题意:给出n个数,求将这n个数从小到大排序,求使用快排的需要交换的次数. 分析:由快排的性质很容易发现,只需要求每个数的逆序数累加起 ...

  8. HDU4791_Alice's Print Service

    全场最水题. 保留打印a[i]份分别需要的钱,从后往前扫一遍,保证取得最优解. 查找的时候,二分同时判断最小值即可. 注意初值的设定应该设定为long long 的无穷大. #include < ...

  9. struts2针对mvc的框架 spring针对解耦与事务的框架

    struts2针对mvc的框架 spring针对解耦与事务的框架

  10. python2 python3共存解决方案

    作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...