【Impala篇】---Hue从初始到安装应用


一、前述

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 显示执行计划 -ihostname(--impalad=hostname) 指定连接主机 格式hostname:port 默认端口21000 -r(--refresh_after_connect)刷新所有元数据 -qquery(--query=query)从命令行执行查询,不进入impala-shell

-ddefault_db(--database=default_db)指定数据库 -B(--delimited)去格式化输出 --output_delimiter=character 指定分隔符 --print_header 打印列名 -f query_file(--query_file=query_file)执行查询文件,以分号分隔 -o filename(--output_filefilename)结果输出到指定文件 -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查出来相当于放入一个表里面,即小文件规模减小。

可以解决 格式不支持问题。利用中间表转一下,将结果放到中间表,写入本来的表。

TinyMind推荐书籍:《Python程序设计基础实战教程》

著名计算机专家韦玮力作,入门Python,这一本就够啦,入手地址:https://item.jd.com/12312761.html


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号