`
coolsunchen
  • 浏览: 61623 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

8个值得关注的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 for 10 years

    Hadoop 10周年生日之际,CSDN主办的“Hadoop英雄会——暨Hadoop 10周年生日大趴”,明略数据的资深工程师梁堰波分享目前主流的 SQL on Hadoop 框架。

    大数据开发的技巧总结以及入门教程知识点总结.docx

    SQL on Big Data:掌握Hive、Spark SQL、Impala等SQL-on-Hadoop工具,用于大数据查询与分析。 数据可视化:了解如何将大数据分析结果通过Tableau、PowerBI等工具呈现。 数据压缩:熟悉Snappy、Gzip等数据压缩算法...

    php-thrift-sql:一个通过Thrift连接到Hive或ImpalaPHP库

    PHP ThriftSQL ThriftSQL.phar存档旨在提供对PHPSQL-on-Hadoop框架的访问。 它将Thrift和各种服务包捆绑在一起,并公开了用于在各种框架上运行查询的通用接口。 当前支持以下引擎: 蜂巢-在HiveServer2节俭接口,...

    TQ2440平台下的模拟NES游戏,也可以通过手机蓝牙控制NES-game-simulated-on-TQ2440.zip

    C#是.NET框架的一部分,这意味着它可以与其他.NET语言(如Visual Basic .NET、F#等)以及.NET框架中的各种库和工具进行交互使用。 【引流】 编程语言和开发技术:如Java、$C++、Python、JavaScript、Ruby等。 数据库...

    大数据hadoop,spark教程.zip

    大数据教程.zip 0.大数据的4个特征 0.大数据的三个发展方向 0.大数据涉及到的技术 1.初识Hadoop 2.第一个MapReduce程序 3.Hive 4.把别处的数据搞到Hadoop上 ...SQL On Hadoop框架 最终的:大数据平台

    大数据图标大全.docx

    Kudu Kudu is a columnar storage manager developed for the Apache Hadoop platform Tajo A big data warehouse system on Hadoop Trafodion Transactional SQL-on-Hadoop Database Phoenix OLTP and operational...

    盘点SQLonHadoop中用到的主要技术

    本文并不是要去比较所谓“交互式查询哪家强”,而是试图梳理出一个统一的视角,来看看各家系统有哪些技术上相通之处。以下是作者原文:考虑到系统使用的广泛程度与成熟度,在具体举例时一般会拿Hive和Impala为例,...

    大数据应用测试经验总结.pdf

    功能 功能 命令 命令 查看⽬录 hadoop fs -ls dir 上传⽂件 hadoop fs -put ${local file} ${hdfs file} 创建⽬录 hadoop fs -mkdir ${dirname} 获取⽂件 hadoop fs -get ${hdfs file} ${local file} 删除多个⽂件...

    java7源码-NetCloud:基于structs、servevlet、hibernate和mysql的在线磁盘

    java7 源码 1. NetCloud A Online ...hibernate集合框架,配有sql文件。 1.2. 部署环境 1.2.1. Linux安装mysql ubuntu使用APT仓库;centos使用YUM仓库。 在MySQL官网ART仓库中找到下载链接: sudo wget ...

    大数据离线计算.pdf

    离线计算架构 计算⼯具有 Hive、Pig、Spark SQL、Presto、MapReduce ,⽀持 Alluxio 的存储架构,形成了离线计算引擎 Hadoop集群 hadoop实现了⼀个分布式的基础框架,核⼼设计就是:hdfs和mapreduce hdfs分布式存储...

    第七章-《大数据导论》大数据处理平台.pdf

    数据复制多份存放不同节点以增加可用性和可靠性 特点:高容错性 + 高扩展性 Apache Hadoop Apache软件基金会下面的一个开源项目 一个分布式系统基础框架 HDFS: Hadoop分布式文件系统,负责数据存储 MapReduce:一种...

    大数据与大数据技术.pptx

    云 以 H a d o o p 为核心的大数据产品系列 数据集成与准备 SQL on Hadoop Text here 流计算 机器学习 开源开发技术 数据挖掘 以 H a d o o p为核心的大数据产品 大数据软件产品 Statistica 数据 可视化 Vortex ...

    大数据与大数据技术(1).pptx

    云 以 H a d o o p 为核心的大数据产品系列 数据集成与准备 SQL on Hadoop Text here 流计算 机器学习 开源开发技术 数据挖掘 以 H a d o o p为核心的大数据产品 大数据软件产品 Statistica 数据 可视化 Vortex ...

    开源的分布式内存文件系统 Tachyon.zip

    如果你喜欢用Hive作为Hadoop的数据仓库,那么你一定会喜欢Shark,因为它代表了“Hive on Spark”。 AMPLab的最新目标就是Hadoop分布式文件系统(HDFS),不过HDFS在可用性和速度方面一直受人诟病,所以AMPLab创建了...

    基于大数据平台数据分析技术选型调研.pdf

    基于⼤数据平台数据分析技术选型调研 技术选型调研 ⼤⽅向任务 分布式平台 选出⼏个可⾏的⽅案 分析优缺点 任务细分: 数据源存储的问题 ⽀持分布式的深度学习组件 业内端到端的解决⽅案有哪些——可借鉴的架构⽅案 ...

Global site tag (gtag.js) - Google Analytics