数据存储

使用相同的存储数据池都支持把数据存储于HDFS, HBase。

元数据:

两者使用相同的元数据

SQL解释处理:

比较相似都是通过词法分析生成执行计划。

执行计划:

Hive: 依赖于MapReduce执行框架,执行计划分成 map->shuffle->reduce->map->shuffle->reduce…的模型。如果一个Query会 被编译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。

Impala: 把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询,而不用像Hive那样把它组合成管道型的 map->reduce模式,以此保证Impala有更好的并发性和避免不必要的中间sort与shuffle。

数据流:

Hive: 采用推的方式,每一个计算节点计算完成后将数据主动推给后续节点。

Impala: 采用拉的方式,后续节点通过getNext主动向前面节点要数据,以此方式数据可以流式的返回给客户端,且只要有1条数据被处理完,就可以立即展现出来,而不用等到全部处理完成,更符合SQL交互式查询使用。

内存使用:

Hive: 在执行过程中如果内存放不下所有数据,则会使用外存,以保证Query能顺序执行完。每一轮MapReduce结束,中间结果也会写入HDFS中,同样由于MapReduce执行架构的特性,shuffle过程也会有写本地磁盘的操作。

Impala: 在遇到内存放不下数据时,当前版本1.0.1是直接返回错误,而不会利用外存,以后版本应该会进行改进。这使用得Impala目前处理Query会受到一 定的限制,最好还是与Hive配合使用。Impala在多个阶段之间利用网络传输数据,在执行过程不会有写磁盘的操作(insert除外)

调度

Hive任务的调度依赖于Hadoop的调度策略。

Impala的调度由自己完成,目前的调度算法会尽量满足数据的局部性,即扫描数据的进程应尽量靠近数据本身所在的物理机器。但目前调度暂时还没有考虑负载均衡的问题。从Cloudera的资料看,Impala程序的瓶颈是网络IO,目前Impala中已经存在对Impalad机器网络吞吐进行统计,但目前还没有利用统计结果进行调度。

容错

Hive任务依赖于Hadoop框架的容错能力,可以做到很好的failover

Impala中不存在任何容错逻辑,如果执行过程中发生故障,则直接返回错误。当一个Impalad失败时,在这个Impalad上正在运行的所有query都将失败。但由于Impalad是对等的,用户可以向其他Impalad提交query,不影响服务。当StateStore失败时,也不会影响服务,但由于Impalad已经不能再更新集群状态,如果此时有其他Impalad失败,则无法及时发现。这样调度时,如果谓一个已经失效的Impalad调度了一个任务,则整个query无法执行。

三、Impala Shell

1、Impala 外部shell

不进入Impala内部,直接执行的ImpalaShell

例如:

$impala-shell -h -- 通过外部Shell查看Impala帮助

$impala-shell -p select count(*) from t_stu -- 显示一个SQL语句的执行计划

下面是Impala的外部Shell的一些参数:

-h (--help) 帮助

-v (--version) 查询版本信息

-V (--verbose) 启用详细输出

--quiet 关闭详细输出

-p 显示执行计划

-i hostname (--impalad=hostname) 指定连接主机格式hostname:port 默认端口21000, impalad shell 默认连接本机impalad

- r(--refresh_after_connect)刷新所有元数据

-q query (--query=query) 从命令行执行查询,不进入impala-shell

-d default_db (--database=default_db) 指定数据库

-B(--delimited)去格式化输出

--output_delimiter=character 指定分隔符

--print_header 打印列名

-f query_file(--query_file=query_file)执行查询文件,以分号分隔

-o filename (--output_file filename) 结果输出到指定文件

-c 查询执行失败时继续执行

-k (--kerberos) 使用kerberos安全加密方式运行impala-shell

-l 启用LDAP认证

-u 启用LDAP时,指定用户名

2、Impala内部Shell

#impala shell进入

#普通连接

impala-shell

#impala shell命令

#查看impala版本

select version;

#特殊数据库

#default,建立的没有指定任何数据库的新表

#_impala_builtins,用于保存所有内置函数的系统数据库

#库操作

#创建

create database tpc;

#展示

show databases;

#展示库名中含有指定(格式)字符串的库展示

#进入

use tpc;

#当前所在库

select current_database();

#表操作

#展示(默认default库的表)

show tables;

#指定库的表展示

show tables in tpc;

#展示指定库中表名中含有指定字符串的表展示

show tables in tpc like 'customer*';

#表结构

describe city; 或 desc city;

#select insert create alter

#表导到另一个库中(tcp:city->d1:city)

alter table city rename to d1.city

#列是否包含null值

select count(*) from city where c_email_address is null

#hive中 create、drop、alter,切换到impala-shell中需要如下操作

invalidate metadata

#hive中 load、insert、change表中数据(直接hdfs命令操作),切换到impala-shell中需要如下操作

refresh table_name

3、参考文章

java使用impala存放多条sql_Impala基于内存的SQL引擎的详细介绍相关推荐

  1. 3、Spark2x 基于内存的计算引擎

    Spark2x 基于内存的计算引擎 一.Spark 概述 Spark 是一种基于内存进行计算的分布式批处理引擎,他的主要工作是执行以下几种计算: (1) 数据处理,可以进行快速的数据计算工作,具备容错 ...

  2. java 类 重新加载_Java动态类加载和重新加载的详细介绍

    本篇文章给大家带来的内容是关于Java动态类加载和重新加载的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Java中可以在运行时加载和重新加载类,虽然并不像我们想像中那么简 ...

  3. Java让数据库执行一条sql_java数据库编程——执行SQL 语句

    [0]README [1]java数据库编程--执行SQL 语句相关 1)执行 SQL 命令前, 首先需要创建一个 Statement 对象: 要创建 statement 对象,不需要调用 Drive ...

  4. PbootCMS制作个性分页条之单页/总页数效果详细介绍教程

    第一步:PbootCMS 单页/总页数 分页条效果 显示上一页,下一页,首页,尾页,和当前页,以及当前页位于总页数的位置 这种分页效果简洁明了,适合博客站和咨询站等网站使用 <!-- 分页 -- ...

  5. java数组如何pop_Js数组的操作push,pop,shift,unshift等方法详细介绍

    js中针对数组操作的方法还是比较多的,今天突然想到来总结一下,也算是温故而知新吧.不过不会针对每个方法进行讲解,我只是选择其中的一些来讲. 首先来讲一下push和pop方法,这两个方法只会对数组从尾部 ...

  6. java用redis缓存的步骤_Java 使用Redis缓存工具的图文详细方法

    开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java ...

  7. java criteria限制条数_java架构—Oracle SQL性能优化

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先 ...

  8. 模仿微视视频录制、支持按下录制抬起暂停以及断点进度条(基于javacv)

    apk下载视频录制apk下载, 项目源码地址为https://github.com/qdrzwd/VideoRecorder 补充:感谢雷军辉提供的文档 wiki: http://www.elesos ...

  9. 【java毕业设计】基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现,文章 ...

最新文章

  1. 朋友在小厂待到三十多岁了 现在跳槽能找到什么样的工作
  2. Win8怎么查看IP地址
  3. String 类详解
  4. 如何将sql数据导入到oracle数据库,将SQLServer的数据导入到Oracle数据库的方法-Oracle...
  5. 【转】使用Jmeter针对ActiveMQ JMS Point To Point压力测试
  6. 高斯核函数参数确定_高斯过程
  7. Linux(Ubuntu) lib 缺失问题
  8. ZYNQ PS端输出不准确时钟供PL使用
  9. 转贴XML的写法建议
  10. iOS7以上: 实现如“日历”的 NavigationBar
  11. 牛课-跳跃游戏1,2,3
  12. Docker运维笔记-Docker端口映射
  13. LaTex编辑器编辑公式
  14. VUE学习笔记------奕长苏
  15. 新颖的自我介绍_有关最新颖的自我介绍
  16. 爱软测学员面试外企测试工程师英文面试小结
  17. 深入理解Java虚拟机-高效并发
  18. php mysql弹幕_PHP开发弹幕系统
  19. 高职c语言技能试题,高职上机C语言试卷A.doc
  20. 辅助类GenericOptionsParser,Tool和ToolRunner

热门文章

  1. Matlab代码的耗时分析、优化、加速
  2. mysql characteristic_MySQL存储过程定义中的特性(characteristic)的含义
  3. 计算机科学之前说,国内计算机科学十强大学是哪些?前2名没悬念,后面几所都不好说...
  4. 必填校验加变色,点击颜色消失
  5. 修改telnet提示并非_俊翔:修改ECU数据解除奔驰GL350尿素限制
  6. 《鸿蒙理论知识05》HarmonyOS概述之下载与安装软件
  7. gitlab或者gitee生成/添加SSH公钥的解决办法
  8. 处理网络请求qs、图片转base64的优劣
  9. java textfield类方法_java.awt.TextField类
  10. c语言错误重定义,C语言的重定义错误求解