Impala 技术点梳理
1.优点
1.1 快!
主节点生成执行计划树并分发执行计划至各节点并行执行的拉式获取数据(MR:推式获取数据)
计算的中间结果不写入磁盘
1.2 便利
提供SQL语义,可以方便的进行复杂的数据分析任务
2.缺点
2.1 啃内存
对于内存的依赖过于严重,内存溢出直接导致技术任务的失败
2.2 SQL支持度低
不支持UDF,不支持UPDATE/DELTE操作,不支持同一SELECT中多个DISTINCT
3.内存优化
3.1 SQLOperations that Spill to Disk
即在内存不足时将数据存入磁盘进行计算。这是在Impala 1.4 for CDH4、CDH5.1开始支持的功能,以增加了磁盘IO,延长了运算时间为代价,避免了内存溢出的问题。
开启方式:
impalashell中执行
setDISABLE_UNSAFE_SPILLS=0
或
setDISABLE_UNSAFE_SPILLS=FALSE
赋值为1或TRUE则是关闭
注意:该功能也是有限制的:
不是所有的SQL语句都能触发,例如union关键字还是会触发内存溢出错误;
各个节点的内存峰值限制不能过低,低于运算所需分配给各个节点的最小内存;
运算explain输出的各个节点预估内存不能过分高于各个节点的实际物理内存;
当触发“Spill to Disk”功能时有其他并发查询,仍会触发内存溢出错误;
对磁盘的空间有一定的要求,磁盘运算的数据会写入到impala各个节点的临时目录下,增加了磁盘I/O,并且会引发不可控制的磁盘占用。
所以,这个功能不是内存优化的首选方案
3.2 SQL优化
1.Compute Stats
COMPUTE STATS 是统计表的结构以及数据信息(表、分区、列的数据量和数据分布信息)并存储在到数据库中,集群根据统计信息优化数据分析操作。
看似只是Impala中一条获取表的统计信息的简单语句,但在整个分析任务调度过程中却起着相当重要的作用。该语句获取的统计信息不仅在Impala对JOIN、GROUP BY、ORDER BY、UNION、DISTINCT等资源高消耗的查询进行优化时会使用到,而且对HBase的表也同样起作用。
使用:
compute STATS [table_name]
查看统计结果
SHOW TABLE STATS [table_name]
2.执行计划 (Explain)
通过在SQL语句前面加上 explain 执行,并就可以查看到该SQL的具体执行计划情况(实际上并未真正执行)
执行计划是从底层显示Impala如何读取数据,如何在各节点之间协调工作,组合并传输中间结果,并获得最终结果集的全过程。
执行计划可以提供给我们的帮助:
(1)通过读取的数据量,我们可以判断分区策略是否有效,并结合集群大小预估读取这些数据需要的实际等。
(2)可以看到执行过程中聚合、排序、统计函数、交互的顺序及具体执行细节,可以从更高级别看到中间结果在不同节点间的流向。
(3)我们可以看到操作是否被Impala不同的节点并行执行,以及各节点所需内存预估值。
(4)通过配置EXPLAIN_LEVEL参数,可以了解到更详细的输出信息。取值从0~3,对应的执行计划信息越来越详细。
Impala 技术点梳理的更多相关文章
- .NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标
文章出自:http://www.cnblogs.com/ice-river/p/3475041.html 一 .NET平台技术体系梳理 .NET平台应用领域众多(桌面开发,web开发,移动开发),不断 ...
- #WPF的3D开发技术基础梳理
原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关 ...
- Java架构技术知识点梳理
Java程序员应该加以重视: 吃透基础技术 养成良好的阅读源码的习惯 有长期的技术学习规划 下面,我们来一起逐条看看,特别是第 3 个方法. 想要做到年薪50万,首先你自己必须是高水平的程序员! 能年 ...
- Web前端开发--JS技术大梳理
什么是JS JavaScript是一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语 ...
- React技术栈梳理
一.react是什么? react是一个js框架,可以用它来编写html页面,使用react后我们可以完全抛弃html(只需要一个主index文件),而用纯js来编写页面: 二.为什么要使用react ...
- C#基础知识梳理索引
C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...
- .NET平台技术体系
.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标 一 .NET平台技术体系梳理 .NET平台应用领域众多(桌面开发,web开发,移动开发),不断有新的编程爱好者开始学习或从其他平台转移到 ...
- fir.im Weekly - 人人都需要的 IT 技能图谱
AlphaGo 与李世石的人机世纪大战落下帷幕,不禁让人思考<失控> 中说道的 "机器正在生物化,而生物正在工程化 ".作为人类,在未来能否保全最后的智力骄傲成为一个疑 ...
- Android Wear(手表)开发 - 学习指南
版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...
随机推荐
- Android设置透明状态栏和透明导航栏
Android透明状态栏只有在4.4之后有. 在代码中加入下面几行代码即可实现
- luarocks安装以及lfs安装
一.先安装lua: brew install lua 我本机的安装路径为:/usr/local/Cellar/lua/5.3.4_2 二.安装luarocks 下载luarocks的安装包: http ...
- PCI 设备详解二
上篇文章主要从硬件的角度分析了PCI设备的特性以及各种寄存器,那么本节就结合LInux源代码分析下内核中PCI设备的各种数据结构以及相互之间的联系和工作机制 2016-10-09 注:一下代码参考LI ...
- Python并行编程(三):线程同步之Lock
1.基础概念 当两个或以上对共享内存操作的并发线程中,如果有一个改变数据,又没有同步机制的条件下,就会产生竞争条件,可能会导致执行无效代码.bug等异常行为. 竞争条件最简单的解决方法是使用锁.锁的操 ...
- php 计算gps坐标 距离
在计算机或GPS上经纬度经常用度.分.秒和度.度.分.分.秒.秒的混合方式进行表示,度.分.秒间的进 制是60进制,度.度.分.分. 秒.秒的进制是100进制,换算时一定要注意.可以近似地认为每个纬度 ...
- onNewIntent 作用
按 home 键,再打开app,会调用onNewIntent() 按 back 键,再打开app,会调用onCreate() public class MainActivity extends Act ...
- java-mybaits-00401-Mapper-输入输出
Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 1.parameterType(输入类型) 1.1.#{}与${} #{} ...
- C/C++结构体总结
1 #include"iostream" 2 using namespace std; 3 4 struct TestStruct 5 { 6 ...
- webservice使用方法
1,右击项目选择-->添加服务引用: 填写一个 命名空间名称; 2, 实例化 命名空间名称 ; 选择 带client的服务名称进行初始化 3,开始调用方法 // 带参数的webservice ...
- 在python3下对数据分块(8x8大小)使用OpenCV的离散余弦变换DCT
在MATLAB中有blkproc (blockproc)对数据处理, 在python下没找到对应的Function, 这里利用numpy 的split(hsplit和vsplit) 对数据分块处理成8 ...