一、概述

Impala 是参照google 的新三篇论文Dremel(大批量数据查询工具)的开源实现,功能类似shark(依赖于hive)和Drill(apache),impala 是clouder 公司主导开发并开源,基于
hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。是使用cdh 的首选PB 级大数据实时查询分析引擎。(也可以单独安装使用,但一般都是和CDH一起使用;) 参考:
https://www.cloudera.com/products/open-source/apache-hadoop/impala.html http://impala.apache.org/
Impala可以直接在存储在HDFS,HBase或Amazon Simple Storage Service(S3)中的Apache Hadoop数据上提供快速,交互式的SQL查询。 除了使用相同的统一存储平台,
Impala和Apache Hive一样还使用相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue中的Impala查询UI)。 Impala是用于查询大数据的工具的补充。 Impala不会替代基于MapReduce的批处理框架,如Hive。 基于MapReduce的Hive和其他框架最适用于长时间运行的批处理作业,
例如涉及批处理Extract,Transform和Load(ETL)类型作业的工作。

二、impala架构

Impala属于无主模型,没有再使用缓慢的 Hive+MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和
Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。 由于impala是基于hive的,impala表的元数据信息依然存储在Hive Metastore中;

Statestore Daemon

该进程负责搜集集群中Impalad进程节点的健康状况,它通过创建多个线程来处理Impalad的注册订阅,并与各节点保持心跳连接,不断地将健康状况的结果转发给所有的
Impalad进程节点。一个Impala集群只需一个statestored进程节点,当某一节点不可用时,该进程负责将这一信息传递给所有的Impalad进程节点,再有新的查询时不会把请
求发送到不可用的Impalad节点上。 statestored也是允许挂掉的,不会影响集群运行,因为impalad节点之间也会保持通信,但是当statestored和某一部分impalad都挂掉了,就会出问题,因为没有了statestored,
而impalad节点之间并不能识别出是否有某些impalad挂了,依然会与挂掉的impalad通信,此时就会出问题;

Catalog Daemon:

把impala表的metadata分发到各个impalad 中,说他是基于hive 的,所以就需要metadata数据分到impalad 中,以前没有此进程,就是手动来进行同步的。虽然之后加入了,
但是也没有那么智能,并不是保证所有的数据都能同步,比如你插入一些数据,他可以把数据发到其他节点,但是比如创建表ddl 语句,建议去手动做一下。接收来自
statestore 的所有请求,当impala deamon节点插入或者查询数据时候(数据改变的时候),他把自己的操作结果汇报给state deamon,然后state store 请求catelog deamon,告知重
新更新元数据信息给impalad 中,所以catalog deamon 与statedeamon 放到一台机器上,而且不建议在此机器上再去安装impala deamon 进程,避免造成提供查询造成集群管
理出问题;

Impala Daemon

与DataNode运行在同一节点上,是Impala的核心组件,在每个节点上这个进程的名称为Impalad。该进程负责读写数据文件;接受来自Impala-shell、Hue、JDBC、ODBC等客
户端的查询请求(接收查询请求的Impalad为Coordinator),Coordinator通过JNI调用java前端解释SQL查询语句,生成查询计划树,再通过调度器把执行计划分发给具有相应
数据的其它节点分布式并行执行,并将各节点的查询结果返回给中心协调者节点Coordinator,再由该节点返回给客户端。同时Impalad会与State Store保持通信,以了解其
他节点的健康状况和负载。

Impalad 里面的三个组件

impalad:
impala statestore 和catalog server两个角色,就具备集群调节的功能;
真正的工作就是在impalad节点上,客户端执行查询的时候可以选一个impalad节点来执行,此时这个节点的内存要配置大一些,因为最后要汇总查询结果;
当选定impalad节点后,此节点上的Query coordinato进程会进行协调,找到与此查询相关的数据块在哪些机器节点上,然后由每个节点的Query executor进程负责查询;
也可以写一个轮询或者权重算法,当有查询任务时,负载到一批impalad节点上,解决高并发问题; Query planner(查询解析器):
接收来自SQL APP和ODBC等的查询,然后将查询转换为许多子查询(执行计划),相当于一个代理; Query coordinator(中心协调节点):
将这些子查询分发到各个节点上 Query executor(查询执行器):
真正负责子查询的执行,然后返回子查询的结果,这些中间结果经过聚集之后最终返回给用户。

三、impala安装

安装就不说了,对于熟悉CDH的朋友来说,是很简单的,完全图形化操作;

一般有两种方式:

1、cloudermanager安装(建议)

方便、快捷

2、手动安装(不建议)

没试过,估计有坑

四、impala shell

外部shell:

外部shell也就是在Linux命令行里配合"impala-shell"命令使用的;

-h (--help) 帮助
-v (--version) 查询版本信息-V(--verbose) 启用详细输出
--quiet 关闭详细输出
-p 显示执行计划
-i hostname(--impalad=hostname) 指定连接主机 格式hostname:port 默认端口21000
-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)执行查询文件,也就是执行SQL文件,文件内容以分号分隔
-o filename(--output_file filename) 结果输出到指定文件
-c 查询执行失败时继续执行,也就是跳过失败的sql语句
-k(--kerberos) 使用kerberos安全加密方式运行impala-shell
-l 启用LDAP认证
-u 启用LDAP时,指定用户名Impala Shell

内部shell:

内部sell,也就是使用“impala-shell”命令连接进impala后使用的;

help 帮助选项
connect <hostname:port> 连接到某个impalad 实例,默认端口21000
refresh <tablename> 增量刷新元数据库
invalidate metadata 全量刷新元数据库,性能消耗较大
explain <sql> 显示查询执行计划、步骤信息
set explain_level 设置显示级别( 0,1,2,3),越高信息越详细
shell <shell> 不退出impala-shell执行Linux命令
impala>shell ls /home
profile (查询完成后执行) 查询最近一次查询的底层信息

五、web监控

impala提供了StateStore和Catalog进程的web监控页面;

StateStore:

http://ip:25020

Catalog:

http://ip:25010

impala入门的更多相关文章

  1. Impala入门笔记

    From:http://tech.uc.cn/?p=817 问题背景: 初步了解Impala的应用 重点测试Impala的查询速度是否真的如传说中的比Hive快3~30倍 写作目的: 了解Impala ...

  2. 《开源大数据分析引擎Impala实战》目录

    当当网图书信息: http://product.dangdang.com/23648533.html <开源大数据分析引擎Impala实战>目录 第1章  Impala概述.安装与配置.. ...

  3. [impala] impala 简介

    [简介] Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据.已有的Hive系统虽然也提供了SQL语义,但由于H ...

  4. 入门大数据---安装ClouderaManager,CDH和Impala,Hue,oozie等服务

    1.要求和支持的版本 (PS:我使用的环境,都用加粗标识了.) 1.1 支持的操作系统版本 操作系统 版本 RHEL/CentOS/OL with RHCK kernel 7.6, 7.5, 7.4, ...

  5. Impala快速入门

    一.简介 Cloudera公司推出,提供对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能.基于Hive使用内存计算,兼顾数据仓库,具有实时.批处理.多并发的优点.是CDH平台首选的PB ...

  6. Spark入门实战系列--10.分布式内存文件系统Tachyon介绍及安装部署

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Tachyon介绍 1.1 Tachyon简介 随着实时计算的需求日益增多,分布式内存计算 ...

  7. Spark入门实战系列--1.Spark及其生态圈简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...

  8. Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身是 ...

  9. sparkSQL1.1入门

    http://blog.csdn.net/book_mmicky/article/details/39288715 2014年9月11日,Spark1.1.0忽然之间发布.笔者立即下载.编译.部署了S ...

随机推荐

  1. 数据迁移最快方式,多线程并行执行 Sql插入

    前言: 由于系统升级,新开发的系统对数据验证,及数据关联做了很多优化,现需要将原历史版本的数据迁移到新系统中:原数据库大约有 1千多万数据,大约 50个表. 历史数据库命名为:A. 新系统库暂命名为 ...

  2. linux 查找被删除但是未被释放空间的文件 并释放资源

    使用du -sh  和df -h 查看/data目录,发现结果相差一半,后来了解到: 使用rm命令删除文件时,只有当该文件不存在任何link才会被删除 当有进程访问这个文件时,这个文件的实际占用空间就 ...

  3. Spring源码系列 — BeanDefinition

    一.前言 回顾 在Spring源码系列第二篇中介绍了Environment组件,后续又介绍Spring中Resource的抽象,但是对于上下文的启动过程详解并未继续.经过一个星期的准备,梳理了Spri ...

  4. WPF MVVM框架(5)

    前面几章节所讲到的内容, 基本上属于前端XAML的使用方法, 那么本章及后面的章节, 则会侧重于UI与业务分离如何分离 . UI与业务逻辑之间的互操作性,, 下面将介绍WPF中, 比较主流的MVVM框 ...

  5. Struts2框架简单介绍

    如需,了解Struts2详情,请点击,传送门 工作原理 在Struts2 框架中的处理大概分为以下步骤: 1.客户端初始化一个指向servlet容器(例如Tomcat)的请求. 2.这个请求经过一系列 ...

  6. 小鸟初学Shell编程(五)输入输出重定向

    重定向作用 一个进程默认会打开标准输入.标准输出.错误输出三个文件描述符. 重定向可以让我们的程序的标准输出.错误输出的信息重定向文件里,那么这里还可以将文件的内容代替键盘作为一种标准输入的方式. 重 ...

  7. webpack加载css文件及其配置

    webpack加载css文件及其配置 当我们写了几个css文件之后如果想要引用到html中去的话我们最开始的方式就是通过link标签将css文件导入进去,但是如果我们的css文件有很多的话,一个个的导 ...

  8. pushad与popad

    版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-08-24,00:40:12作者By-----溺心与沉浮----博客园 PUSHAD与POPAD 这两条指令其实就是讲EAX,E ...

  9. 记一条复杂的PHP中写的关于查询的mysql语句

    $sql="select p.*,q.md from xz_laptop as p inner join xz_laptop_pic as q on p.lid=q.lid title li ...

  10. day10 作业

    猜年龄升级版 ''' 1. 可以直接玩猜年龄游戏,不需要登录 2. 登录成功后玩猜年龄游戏 3. 猜年龄猜中后,可以选择两次奖品 4. 注册的用户名不能重复注册 ''' import random p ...