共计 2354 个字符,预计需要花费 6 分钟才能阅读完成。
以前只用过 Hive 与 impala 两个类 SQL 查询系统,最近又将 Hortonworks 开源的 Stinger 与 Apache 的 Drill 做了些调研。累死累活搞了一天的资料,头都大了。为了纪念我那逝去的脑细胞,特将这些信息整理出来。
由于调查时间比较短(一天的时间都头晕眼花了,再长点估计我就要过劳死了),所写之处难免会有差错,欢迎大家指正
总体来说虽然 impala、stinger、drill 三个系统都是类 SQL 实时查询系统,但是它们的侧重点完全不同。而且它们也不是为了替换 Hive 而生,hive 在做数据仓库时还是很有价值的。
目前来说只有 impala 比较成熟(人 家标称要使用 CDH 版本 Hadoop,如果要使用 apache 的,要做好测试的心里准备)。
其它两个系统还都处理孵化状态,但是前景非常不错。
Impala
这个系统是 Cloudera 开源的,时间大约是在 12 年下半年。虽然到现在才一年的时间但是已经有很多人在使用。社区也比较活跃,大家可以在 github 上面看到项目的开发人员与代码提交情况(地址:https://github.com/cloudera/impala)。个人感觉开发者虽然有其它几个公司,但是还是以 cloudera 为主。这样也造就了 impala 开发的比较快速,虽然到现在才一年左右的时间,但是 impala 已经可以很稳定的运行。
impala 主要是为 hdfs 与 hbase 数据提供实时 SQL 查询。它是根据 google 的 dremel 论文实现的一套分布式系统,自用户提交的 SQL 开始都是基于自身的分析器与执行器。下图是其架构图
(图片来源自 impala 安装使用说明书)
由 于完全脱离了 M / R 技术,自身根据 HDFS 的文件分布来调整计算,所以速度较 Hive 有很大提升。根据我个人使用部分 TPC 基准测(为什么是部分?没理 由,我只选了一部分 SQL 来跑),impala 虽然性能提升不像 Cloudera 标称的达到 hive 的一百倍,但是在比较复杂的情况下达到 40-70 倍性 能提高还是有的。
就日常使用来说,标称是支持大部分 SQL-92 标准(我也不清楚这个标准到底有多少,专业的童鞋给点解读呗!!)。根据我 是测试,日常用的 SQL 都没有问题。并且 impala 支持 JDBC 与 ODBC 的连接,这对于我们的使用也是很必要的,基于此特点我们可以开发对应业务系统 的 UI 部分,从而不用要求业务人员自己下 SQL 了(这是为数不多的展现工作成果的时候了)。
其次就是 impala 支持的文件格式,我们存取 数据的时候肯定要应景的选择压缩与否以及文件的存储格式。impala 支持常用的 Text、Sequence、avro 格式,压缩方面支持 Snappy、bzip、gzip 以及 deflate 压缩应该可以满足我们大部分的使用场景了。
而最棒的是它的 UDF 功能可以直接使用 hive 的 udf 库,而不需要修改任何代码,使用 hive 的童鞋可以庆祝了,很多任务不需要任何改变即可平滑切换 impala。不过因为 impala 使用的是 C 开发的,所以 impala 还是鼓励大家写一个 c 下面的 udf 来提高性能。
drill
开源时间跟 impala 差不多,只不过属于 Apache,。这个系统的目标很宏大 – 抽象所有数据源,做成统一接口。底层支持 hbase、mongoDB、HDFS、Cassandra 等数据源。
它的数据接口都是插件化,理论上支持各种查询语言,SQL 自然也不例外,不过目前这个系统还是 Apache 的一个孵化项目,很多功能尚未完成与稳定。但是可以预见,这个系统如果完成是很有影响力的。下图为 drill 的架构图。
(图片来源https://cwiki.apache.org/confluence/display/DRILL/High-level+Architecture)
Stinger
Hortonworks 开源的一个实时类 SQL 查询系统,也是声称可以提升较 hive 100 倍的速度(悲崔的 hive,都拿它来当反面教材)。目前处于其计划中三个阶段的最后一个阶段。
综合来看 Hortonwork 做的事是在 hive 等分析系统的现有基上加了一个优化层,所有的事都要经过它的优化层 Tez(此框架是基于 Yarn)来处理,以减少不必要的工作以及资源开销。虽然它也对 HIVE 进行了很多的优化与加强,但是这个效果就要看子系统 Tez 的表现的了。Tez 目前也是 apache 的孵化项目,Stringer 如果要稳定可以商用依然还有很多路要走。
从下面的示意图大家可以了解 Tez 所处的位置。
相关阅读:
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13