一、前述

Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点 是CDH平台首选的PB级大数据实时查询分析引擎.一般公司选择使用CDH部署集群,可以考虑下Impala。

二、具体原理

优点:

1、基于内存进行计算,能够对PB级数据进行交互式实时查询、分析

2、无需转换为MR,直接读取HDFS数据

3、C++编写,LLVM统一编译运行

4、兼容HiveSQL

5、具有数据仓库的特性,可对hive数据直接做数据分析

6、支持Data Local

7、支持列式存储

8、支持JDBC/ODBC远程访问

缺点:

1、对内存依赖大

2、C++编写  开源?!

3、完全依赖于hive

4、实践过程中  分区超过1w  性能严重下降

5、稳定性不如hive

6. 此外,Impala不支持HiveQL以下特性:

可扩展机制,例如:TRANSFORM、自定义文件格式、自定义SerDes
XML、JSON函数
某些聚合函数:
covar_pop, covar_samp, corr, percentile, percentile_approx, histogram_numeric, collect_set
Impala仅支持:AVG,COUNT,MAX,MIN,SUM
多Distinct查询
UDF、UDAF
以下语句:
ANALYZE TABLE (Impala:COMPUTE STATS)、DESCRIBE COLUMN、DESCRIBE DATABASE、EXPORT TABLE、IMPORT TABLE、SHOW TABLE EXTENDED、SHOW INDEXES、SHOW COLUMNS、

架构:

解释:

真正计算进程:

整条sql的分发。中心功能。将任务分发给对应的executor计算。汇总结果返回给客户端:

解析器,解析执行计划:

executor 关联子查询,没有子查询就没有关联了:

Statestore Daemon(负责健康集群)
实例*1 - statestored
负责收集分布在集群中各个impalad进程的资源信息、各节点健康状况,同步节点信息.
负责query的调度

Catalog Daemon(分发元数据信息)
实例*1 - catalogd
分发表的元数据信息到各个impalad中
接收来自statestore的所有请求

Impala Daemon(真正处理节点)
实例*N – impalad
接收client、hue、jdbc或者odbc请求、Query执行并返回给中心协调节点
子节点上的守护进程,负责向statestore保持通信,汇报工作

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)执行查询文件,以分号分隔
-o filename(--output_file filename)结果输出到指定文件

-c 查询执行失败时继续执行(一般项目升级的时候,二期可以执行一期的业务看下具体哪些业务语句失败了)

-k(--kerberos) 使用kerberos安全加密方式运行impala-shell
-l 启用LDAP认证
-u 启用LDAP时,指定用户名

Impala Shell(控制台内部执行时命令)

help
connect <hostname:port> 连接主机,默认端口21000

refresh <tablename> 增量刷新元数据库
invalidate metadata 全量刷新元数据库

explain <sql> 显示查询执行计划、步骤信息(不执行sql)
set explain_level 设置显示级别(0,1,2,3)

shell <shell> 不退出impala-shell执行Linux命令

profile (查询完成后执行) 查询最近一次查询的底层信息

实例:

去格式化:

 
指定规则。

可以用于以后的结果的使用!!!!

备注:

1.在hive中创建表不会同步到impala
2.StateStore 健康检查和Daemon 计算节点一般不会再一个节点上.
3.StateStore 健康检查和元数据同步catalog在一个节点上。
4.Hive中创建的表 impala中执行全量更新,其他条件下最好不用。

Impala HBase整合(实际上hive与hbase整合即可,共用同一套元数据)

Impala可以通过Hive外部表方式和HBase进行整合,步骤如下:

步骤1:创建hbase 表,向表中添加数据
create 'test_info', 'info'
put 'test_info','1','info:name','zhangsan'
put 'test_info','2','info:name','lisi'
步骤2:创建hive表
CREATE EXTERNAL TABLE test_info(key string,name string )
ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,info:name")
TBLPROPERTIES
("hbase.table.name" = "test_info");

步骤3:刷新Impala表
invalidate metadata

Impala 存储&&分区

Impala 存储&&分区

Impala 性能优化

1.执行计划
查询sql执行之前,先对该sql做一个分析,列出需要完成这一项查询的详细方案
命令:explain sql、profile。

2.要点:

1、SQL优化,使用之前调用执行计划
2、选择合适的文件格式进行存储
3、避免产生很多小文件(如果有其他程序产生的小文件,可以使用中间表)
4、使用合适的分区技术,根据分区粒度测算
5、使用compute stats进行表信息搜集
6、网络io的优化:
   a.避免把整个数据发送到客户端
   b.尽可能的做条件过滤
   c.使用limit字句
   d.输出文件时,避免使用美化输出
7、使用profile输出底层信息计划,在做相应环境优化

 备注:

中间表 可以解决insert语句造成的小表问题 。建立一个同样的表结构的表,insert  select查出来相当于放入一个表里面,即小文件规模减小。
可以解决 格式不支持问题。利用中间表转一下,将结果放到中间表,写入本来的表。

【Impala篇】---Hue从初始到安装应用的更多相关文章

  1. hue框架介绍和安装部署

    大家好,我是来自内蒙古的小哥,我现在在北京学习大数据,我想把学到的东西分享给大家,想和大家一起学习 hue框架介绍和安装部署 hue全称:HUE=Hadoop User Experience 他是cl ...

  2. 环境篇:DolphinScheduler-1.3.1安装部署及使用技巧

    环境篇:DolphinScheduler-1.3.1安装部署 1 配置jdk JDK百度网盘:https://pan.baidu.com/s/1og3mfefJrwl1QGZGZDZ8Sw 提取码:t ...

  3. WordPress安装篇(4):YUM方式安装LNMP并部署WordPress

    YUM方式安装软件的优点就是简单.方便.快捷,本文介绍在Linux上如何使用YUM方式快速安装LNMP并部署WordPress.使用Linux CentOS 7.9 + Nginx 1.18 + My ...

  4. WordPress安装篇(1):使用PHPStudy安装WordPress

    我是"小白",既不会编程也不懂CSS能自己搭建网站吗?可以的!只要你会用鼠标,懂打字就能搭建出属于你自己的网站.要怎么样才能做到昵?让我们一起来看看如何实现的吧.在Windows环 ...

  5. 批处理命令篇--配置免安装mysql 5.6.22, 以及1067错误的一个解决方法

    mysql 服务启动出现1067错误的一个解决方法: 当服务启动出现1067错误时,可查看“windows 事件查看器”,发现类似错误提示 Can't find messagefile 'F:\    ...

  6. linux学习:【第1篇】初识Linux及安装

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第1篇]初识Linux及安装 写在前面 学习之初看了一段文章,很有感触,所以也 ...

  7. XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相)

    XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相) 2014-08-15 22:04 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表 ...

  8. 【Redis篇】Redis集群安装与初始

    一.前述   本文将单台节点不同端口模拟集群方式. 二.具体搭建 前提是安装好redis具体可参考http://www.cnblogs.com/LHWorldBlog/p/8463269.html 1 ...

  9. Python开发【初始篇】:Linux下安装Python3

    Linux系统默认自带python2.6的版本,这个版本被系统很多程序所依赖,所以建议不要轻易删除,除非你能解决其他程序的依赖问题.如果使用最新的Python3需要进行编译安装源码包,这样就对系统默认 ...

随机推荐

  1. Definition of matrix norms

    In my previous post, I introduced various definitions of matrix norms in \(\mathbb{R}^{n \times n}\) ...

  2. stylus 样式

  3. (转载)Linux终端复用神器-Tmux使用

    Linux终端复用神器-Tmux使用 转载地址:https://blog.51cto.com/652465/2094738 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于Open ...

  4. Navicat Premium 12.1.11.0安装与激活

    本文介绍Navicat Premium 12.1.11.0的安装.激活与基本使用. 博主所提供的激活文件理论支持Navicat Premium 12.0.x系列和Navicat Premium 12. ...

  5. 简单使用WebSocket实现聊天室

    环境需求:flask,websocket第三方包 目录结构 web中实现群聊 ws_群聊.py文件 # 实现一个websocket 先下载包 gevent-websocket from flask i ...

  6. [C++一本通-图论算法] 例4-4 最小花费

    题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 输入输 ...

  7. hadoop2-elasticsearch的安装

    本文主要讲elasticsearch-2.2.1的安装过程. 准备工作: 1.搭建虚拟机 你需要先参考 hadoop2集群环境搭建 把你的虚拟机搭建起来-hadoop环境可以先不用搭建(完成步骤1到步 ...

  8. MongoDB 用Robomong可视化工具操作的 一些简单语句

    一.数据更新 db.getCollection('表名').update({ "字段":{$in:["值"]} }, //更新条件 {$set:{ " ...

  9. php获取当前时间的毫秒数

    floor(microtime()*1000); 用microtime能输出当前的秒的后面8位小数 乘以1000取整数就行了

  10. Vue知识点总结

    1.属性名已$开头的都是内部提供的属性 2.为什么使用事件修饰符的原因:methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节 3.v-if 如果值为false,元素在页面中不存在:值为t ...