SQL On Hadoop框架了解

    本文主要是对最近了解的一些SQL On Hadoop的框架做一个简单的总结。虽然现在NoSQL伴随着大数据应用崛起,但是SQL仍然是最受欢迎的操作手段,比如Spark SQL,Hive SQL等等。

 

为什么要SQL On Hadoop:

    最长使用的HDFS和HBase并不支持SQL,所以诞生了一大批SQL On Hadoop工具,这些工具有些是在MapReduce上做了包装,有些是在HDFS上实现了完整的一套数据仓库。

 

Hive:

    Hive可以理解成是MapReduce的一个封装,使用HiveSQL,Hive可以生成MR或者Spark作业,然后执行,Hive适合离线批处理作业。Hive是由Facebook在2007年开发,现在是Apache的*项目。

    虽然Hive的性能不是最快的,但是Hive 是最流行的,原因主要有如下两个:

        1. Hive 是Hadoop 的默认SQL 选项,每个版本都支持。而其他的要求特定的供应商和合适的用户;

        2. Hive 已经在减少和其他引擎的性能差距。

SQL On Hadoop框架了解

 

 

Impala:

    底层是使用C++写的,收到Google的Dremel项目启发,2012年由Cloudera开发,现在是Apache开源项目。

    Impala适合交互式查询任务,与Hive配合使用,对Hive的结果数据集进行实时分析。Impala和Hive的关系如下图所示:

SQL On Hadoop框架了解

    个人理解Impala快的地方是没有实行MR框架,而是使用了类似流式计算的方式,把查询分成执行计划树,而不是一连串的MR任务。分发执行计划之后,数据会按照计划树进行流式传递灰机,减少了中间结果写入磁盘,再从磁盘读取数据的开销。

 

Phoenix:

    其实应该叫它SQL On HBase。专门为了Hbase而生,支持事务,高并发读写,方便的二级索引,支持JDBC等等优点。下图是从参考中找到的性能比较图。

SQL On Hadoop框架了解

 

Presto:

    presto是Facebook开源的大数据查询引擎,为了解决hive查询慢产生。使用java编写,数据全部在内存中处理,作用和Impala类似。原生集成了Hive、Hbase和关系型数据库。

 

 

 

参考:

    https://blog.****.net/WYpersist/article/details/80146767

    https://www.cnblogs.com/bonelee/p/6625434.html

    https://www.cnblogs.com/qingyunzong/p/8707885.html(Hive架构)

    https://www.cnblogs.com/linbingdong/p/5832112.html(phoenix与其他的比较)