impala介绍

目录结构参考cloudera manager impala  guide

impala概述

impala提供了对hdfs文件格式的数据的高性能、低延迟SQL查询。
查询的快速响应使得能够对分析查询进行交互式探索和调优,
而不是传统上与SQL-on-Hadoop技术相关联的长批作业。
impala与hive数据库集成,共享两个组件之间的数据库和表。
与Hive的高级集成以及与HiveQL语法的兼容性允许您使用Impala或Hive创建表、发出查询、加载数据等。

impala的优点

 Impala与现有的CDH生态系统集成。
Impala提供对存储在hdfs中的数据的访问,而不需要执行MapReduce作业
Impala可以直接从HDFS文件系统访问数据。IMPRA还提供了一个SQL来访问HBASE数据库系统中的数据
Impala通常在几秒钟或几分钟内返回结果,而不是Hive查询完成通常需要的几分钟或几个小时。
Impala正在率先使用Parquet文件格式,这是一种针对数据仓库场景中典型的大规模查询而优化的列式存储格式。

impala概念与架构

1.组件
包含三个组件
Impala Daemon是在集群的每个DataNode上运行的守护进程
职责是:
它读取和写入数据文件;
接受从Hue、JDBC或ODBC发送的查询;
并行化查询并在集群中分布工作;
并将中间查询结果发送回中央协调器节点。
Impala Statestore 集群中只需要一个节点上运行
职责是:
检查集群中所有DataNode上的Impala守护进程的健康状况,
并将其发现连续地传递给每个守护进程。
如果Impala守护进程由于硬件故障、网络错误、软件问题或其他原因而脱机,则状态表通知所有其他Impala守护进程,
以便将来查询可以避免向不可达节点发出请求。

Impala Catalog Service 
物理表现上是一个catalogd进程在机器上
职责是:
负责元数据的在不同的impala daemon上的同步
如果在impala中创建表,不需要刷新元数据,如果在hive中
创建表,只需要在一台机器上执行刷新命令就行了

2.开发程序 
impala的核心是sql,可以通过jdbc和odbc接口去开发更多应用,对于特殊的应用
可以用java或c++通常udf函数去实现
impala的sql语法
impala的语法和hive的语法上高度兼容
IMPARA SQL侧重于查询,包括相对较少的DML。
没有更新或删除语句。
impala的接口访问
impala-shell执行去执行
hue界面访问
JDBC
ODBC
3.impala如何融入hadoop的生态系统
3.1impala工作与hive
impala与Hive共享元数据信息,在高版本上使用Impala COMPUTE STATS语句来进行表
信息统计
3.2impala元数据
对于具有大量数据和/或许多分区的表,检索表的所有元数据可能非常耗时,在某些情况下需要几分钟。
因此,每个IMPLA节点缓存所有这些元数据以重用对同一表的未来查询。
如果更新了表定义或表中的数据,
则集群中的所有其他Impala守护进程必须在对该表发出查询之前接收最新的元数据,
替换过时的缓存元数据。
在Impala1.2和更高版本中,元数据更新是Impala Catalog Service自动协调的,
用于通过Impala发布的所有DDL和DML语句。
对于通过Hive发布的DDL和DML,或者手动修改HDFS中的文件,您仍然使用REFRESH语句(当新的数据文件被添加到现有表时)
或者INVALIDATE METADATA语句(对于完全新的表,或者在删除表、执行HDFS重新平衡操作之后,或者删除数据文件。
如果知道在Impala之外只更改了特定的表,则可以为每个受影响的表发出REFRESH table_name,以便只检索这些表的最新元数据。
3.3impala与hbase
HBASE是作为IMPRA数据存储介质的HDFS的替代品。
它是一个建立在HDFS之上的数据库存储系统,没有内置SQL支持。
许多Hadoop用户已经配置并存储了大量的(通常稀疏的)数据集。
通过在Impala中定义表并将它们映射到HBase中的等效表,您可以通过Impala查询HBase表的内容,
甚至执行包括Impala表和HBase表的联接查询

impala部署安装 

impala指南

1.impala简单使用
使用impala去查询数据
加载csv数据
主要在创建表的时候location指向指定的数据就行了
sql命令描述表结构
简单的查询例子
2.高级特性
分区表
在hive与impala切换,主要在一些hive操作数据后,在impala中刷新元数据
cross join笛卡儿积
总结来说就是Impala 1.2.2以后的版本支持笛卡儿积这种,以前的不支持
如果是大表的话,会占用大量资源
解决parquet文件不知道表结构的情况
关键步骤
create external table airlines_external
like parquet 'hdfs://demo_host.example.com:8020/user/impala/1.parq'
stored as parquet location 'hdfs://demo_host.example.com:8020/user/impala/staging/airlines';
show table stats airlines_external 查看表的统计信息
show files in airlines_external 展示表的所有文件信息
describe airlines_external 现在就能查看表的结构了

impala管理

impala sql相关

1.注释
--
/*
*
*/

2.数据类型

数据类型备注
bigint-9223372036854775808 .. 9223372036854775807
booleadtrue,false
char字符不变
doubal 
float 
Int-2147483648 .. 2147483647
smaint -32768 .. 32767
string 
timestramp2015-04-09 14:07:46.58046500
tinyint-128 .. 127
varchar可变的字符长度

3.sql操作

操作类型备注
算术操作+-*/div %&|~^
between操作BETWEEN lower_bound AND upper_bound
比较操作=, !=, <>
 <, <=, >, >=
存在操作EXISTS (subquery)
 NOT EXISTS (subquery)
in操作expression IN (expression [, expression])
expression IN (subquery)
not in 操作expression NOT IN (expression [, expression])
 expression NOT IN (subquery)
IS NULLOperator
 expression IS NULL
 expression IS NOT NULL
like操作string_expression LIKE wildcard_expression
string_expression NOT LIKE wildcard_expression
逻辑操作 and or

4.架构对象与对象名称

别名,就不介绍了
数据库 
函数 show functions in _impala_builtins like '*subs*'; impala函数数据库是
       _impala_builtins
标识符
表  内部表,一删除表数据就没了
    外部表,删除表只是表没了,数据还在
    文件格式,更改文件格式必须重新加载数据,最好使用parquet文件格式
视图 与mysql差不多,用的比较少,不介绍了

5.sql 语句

DDL语句
    ALTER TABLE Statement
    ALTER VIEW Statement
    COMPUTE STATS Statement
    CREATE DATABASE Statement
    CREATE FUNCTION Statement
    CREATE ROLE Statement (CDH 5.2 or higher only)
    CREATE TABLE Statement
    CREATE VIEW Statement
    DROP DATABASE Statement
    DROP FUNCTION Statement
    DROP ROLE Statement (CDH 5.2 or higher only)
    DROP TABLE Statement
    DROP VIEW Statement
    GRANT Statement (CDH 5.2 or higher only)
    REVOKE Statement (CDH 5.2 or higher only)
DML语句
    INSERT Statement
    LOAD DATA Statement
alter table 
alter view
compute stats 收集表的统计信息,保存到元数据中,
              下次再进行这样的联接查询,可以进行自动的优化
              精确的统计信息帮助Impala为连接查询构造有效的查询计划,从而提高性能并减少内存使用。
            准确的统计可以帮助Impala有效地将工作分配到Parquet表中,从而提高性能并减少内存使用。
            准确的统计可以帮助Impala估计每个查询所需的内存,这对于使用资源管理特性(如准入控制和YARN资源管理框架)非常重要。
            统计数据帮助Impala实现高并发性、充分利用可用内存,并避免与其他Hadoop组件的工作负载发生冲突。
create database
create function创建自定义函数
create role创建角色
create table 创建表
create view 创建视图
describe 描述表
drop database 删除数据库
drop function 删除函数
drop role删除角色
drop stats 删除统计信息
drop table 删除表
drop view 删除视图
explain 查看执行计划
grant 授予角色
insert 插入数据,两种方式一种直接插入,一种select 插入
invalidate metadata 刷新元数据
load data 加载数据,通常两种方式,一种从本地加载,一种从hdfs加载
refresh table 刷新表的元数据
revoke收回权限
select 查询
join 连接
order by 排序
group by 分组
haveing 对分组的结果过滤
limit 限制查询结果
offset 从序列哪个值开始
union 数据合并
subqueries 子查询
with 
distinct 去重
参数设置
show 参数
    SHOW FILES Statement
    SHOW ROLES Statement
    SHOW CURRENT ROLE
    SHOW ROLE GRANT Statement
    SHOW GRANT ROLE Statement
    SHOW DATABASES
    SHOW TABLES Statement
    SHOW CREATE TABLE Statement
    SHOW CREATE VIEW Statement
    SHOW TABLE STATS Statement
    SHOW COLUMN STATS Statement
    SHOW PARTITIONS Statement
    SHOW FUNCTIONS Statement
truncate 数据清空
内置函数
算术函数
位函数
类型转换函数
日期时间函数
状态函数
字符串函数
杂项函数
聚合函数
分析函数
用户自定义函数
sql在impala与hive上不同之处

性能优化

1.方法

选择合适的数据文件格式
避免产生大量的小文件
根据实际数据量选择分区粒度,
Impala可以避免读取不相关的数据,从而可能节省磁盘I/O的大量开销。
为分区列使用合适的数据类型
选择合适的parquet文件块大小
使用compute stats 收集表列信息
返回客户端的结果最小化
使用explain查询计划
从机器本身来考虑
热点分析,有的impala守护进程需要花理多的时间来处理数据

2.
 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wending-Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值