Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 420|回复: 0

[默认分类] Hadoop的加速发动机Impala

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-2 10:43:34 | 显示全部楼层 |阅读模式

    应用场景

      在使用Hive的过程中,编写了HQL语句,发现HQL执行过程是非常慢的,因为hive采用的是把HQL转化成hadoop的MapReduce任务,然后编译,打包成jar包,分发到各个server上去执行,这个过程会很慢很慢!而impala也可以执行SQL,但是比Hive快很多,而Impala根本不用Hadoop的Mapreduce机制,直接调用HDFS的API获取文件,在内存中快速计算!
    但是Impala也并不是完全比Hive好。Impala的容错机制没有Hive好,而且没有Hive那么成熟。

      
       所以一般使用以下方法来决定使用哪个:
      
      
       如果是ETL任务使用Hive
       
    如果是实时的热查询则用Impala
      

    1. Impala介绍

      Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和Hbase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。
    1.1 Impala的优点

      Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。
      省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),Impala直接通过相应的服务进程来进行作业调度,速度快了很多。
      Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。
      通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。
      用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。
      使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。

    1.2 Impala的功能

      Impala可以根据Apache许可证作为开源免费提供。
      Impala支持内存中数据处理,它访问/分析存储在Hadoop数据节点上的数据,而无需数据移动。
      使用类SQL查询访问数据。
      Impala为HDFS中的数据提供了更快的访问。
      可以将数据存储在Impala存储系统中,如Apache HBase和Amazon s3。
      Impala支持各种文件格式,如LZO,序列文件,Avro,RCFile和Parquet。

    2. Impala VS Phoenix
      现有hbase的查询工具有很多如:Hive,Tez,Impala,Shark/Spark,Phoenix等。

      phoenix,中文译为“凤凰”,很美的名字。Phoenix是由saleforce.com开源的一个项目,后又捐给了Apache基金会。它相当于一个java中间件,提供jdbc连接,操作hbase数据表。
    但是在生产环境中,不可以用在OLTP中。在线事务处理的环境中,需要低延迟,而Phoenix在查询HBase时,虽然做了一些优化,但延迟还是不小。所以依然是用在OLAT中,再将结果返回存储下来。
      Phoenix的团队用了一句话概括Phoenix:”We put the SQL back in NoSQL” 意思是:我们把SQL又放回NoSQL去了!这边说的NoSQL专指HBase,意思是可以用SQL语句来查询Hbase,你可能会说:“Hive和Impala也可以啊!”。但是Hive和Impala还可以查询文本文件,Phoenix的特点就是,它只能查Hbase,别的类型都不支持!但是也因为这种专一的态度,让Phoenix在Hbase上查询的性能超过了Hive和Impala!
      所以Impala可以针对文本文件,impala可以操作hdfs,hive,hbase等,而Phoenix只针对Hbase。

                $(function () {                $("pre.prettyprint code").each(function () {                    var lines = $(this).text().split("\n").length;                    var $numbering = $("").addClass("pre-numbering").hide();                    $(this).addClass("has-numbering").parent().append($numbering);                    for (i = 1; i ").text(i));                    };                    $numbering.fadeIn(1700);                });            });        
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-19 15:04 , Processed in 0.402868 second(s), 54 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表