本文源自cloudera官网上的Impala文档,原名为《Impala Performance Guidelines and Best Practices》。主要介绍了为了提升impala性能应该考虑的一些事情,这些条目算是对于性能提升最基本的约束了,条目分别如下:

  • 1、选择合适的文件存储格式,既然使用impala,无非就是为了一个目的:性能好/资源消耗少,Impala为了做到通用性,也就是为了更好的hive无缝连接,支持了大部分Hive支持的文件格式,例如Text、Avro、RCFile、Parquet等(不支持ORC),但是为了实现更快的ad-hoc查询(基本上都是OLAP查询,查询部分列,聚合,分析),我们基本上都会选择使用Parquet格式作为数据文件存储格式,即使你的数据导入到hive中存储的使用的是其它格式(甚至通过自定义serde解析,例如Json),仍然建议你新建一个Parquet格式的表,然后进行一次数据的转换。因此这个条目可以看做是:请选用Parquet作为文件存储格式!

  • 2、选择合适的Partition粒度,分区的个数通常是根据业务数据来的,通常时间分区(例如日期/月份)是少不了的,例如对于一个支持多终端的应用,可能在时间分区下面再加一层终端类型的分区,设置对于每一个终端的不同操作在进行一层分区,根据唯物辩证法,凡事都需要保持一个度,那么就从两个极端的情况下来分析分区的粒度如何确定:1:分区过少:,整个表不使用分区,或者只有一个日期的分区,这样会导致频繁的查询某一个终端的数据不得不扫描整天的数据甚至整个表的数据,这是一种浪费;2、分区过多,对于每一个要统计的维度都创建一个分区,这样对于任何一个维度=’xxx’的查询都只需要扫描精确需要的数据,但是这样会导致大量的数据目录,进而导致大量的文件需要扫描,这对于查询优化器是一个灾难。因此最终的建议是:根据查询需求确定分区的粒度,根据每一个分区的成员个数预估总的分区数,保证一个表的分区数不超过30000(经验之谈?),避免过小的分区。

  • 3、尽量分区的成员的长度,目前分区字段可以支持数值类型和字符串,但是这里推荐尽可能的使用合适的整数(一般用0-256就可以保存一个分区成员的映射了,否则分区会很多)而非原始的字符串,可以在外面建立字符串到整数的映射以保存原始信息,这个约束的主要原因是每一个分区会占用一个目录,每一个目录名又会在NameNode中占用一定的内存,所以不光光是对于Impala而言,对于使用Hadoop的用户而言,尽量减小文件目录的长度。

  • 4、选择合适的Parquet Block大小,在条目1中已经明确,要使用Impala获得较快的查询性能,那么就老老实实的使用Parquet作为存储格式,而每一个Parquet的Block大小又有什么影响呢,这里暂且把Block的大小理解成一个Parquet分区的大小,在存储上表现为文件大小,如果文件过大,那么会导致这个文件只会一个Impalad进程处理,这样大大降低了Impala的并行处理能力;而如果文件过小则会导致大量的小文件,在带来并发执行的同时也会带来大量的随机I/O的影响,因此需要对于特定的数据进行不同的parquet Block大小测试以寻求最适合该数据集的Block大小。

  • 5、收集表和分区的统计信息,在执行完数据导入之后,建议使用 COMPUTE STATS语句收集表的统计信息,当然也可以只收集某一个分区的统计信息。

  • 6、减少返回结果大小,如果需要统计聚合,直接在SQL中完成,尽可能的在where中执行过滤而不要查出来之后在应用端做过滤,对于查询结果尽可能使用LIMIT限制返回结果集大小;避免大量的结果展示在终端,可以考虑通过INSERT xxx的方式把结果输出到文件,或者通过impala-shell参数将结果重定向。

  • 7、对于执行性能较差的查询使用EXPLAIN分析原因。

  • 8、最后,查询操作系统配置、查看系统使用负载,可以使用Query Profile工具来探测。

上面的这些条目是最基本的应对性能调优的方案,主要包括:使用Parquet格式存储数据、分区粒度要确定好,保证整个表的分区数不要太多(目录不要太多),每一个分区下不要存在过多的小文件(选择合适的Parquet文件大小),收集统计信息使得查询优化器能够选择更好的查询方案,最后要学会使用EXPLAIN和Profile功能分析性能问题所在。

Impala优化基本方案相关推荐

  1. qt listwidget 关键字颜色_关键字排名优化工具方案

    关键字排名j67745优化工具方案,企业经常采用SEO优化,以获得更好的排名和更好的流量自己的网站.搜索引擎优化有哪些方法?或者什么更有效? 北京seo优化如何稳定网站排名,seo优化首先需要做好内容 ...

  2. python延迟5s_Python做扫描,发包速度实在是太慢了,有优化的方案吗?

    用python做 syn scan 但是这个速度实在是太感人了,有没有优化的方案?不想写C的 代码如下: #coding: utf-8 import threading,time,os,argpars ...

  3. 模板:容斥优化多重方案背包

    所谓容斥优化多重方案背包,就是利用容斥去优化统计方案的多重背包 (逃) 前言 考场上因为不会这个玩意活活把100分正解挂成了70 qwq 思想还是很妙的 就是先当完全背包做,然后扣去多统计的情况 注意 ...

  4. OPTIRRA研究: TNF拮抗剂维持期优化减量方案[EULAR2015_SAT0150]

    OPTIRRA研究: TNF拮抗剂维持期优化减量方案   SAT0150 OPTIMISING TREATMENT WITH TNF INHIBITORS IN RHEUMATOID ARTHRITI ...

  5. win10计算机系统优化设置,有效提升Win10运行速度的基本优化设置方案

    升级Win10系统使用一段时间后,很多用户遇到了运行速度变慢的问题,其实这需要进行一些Win10系统的基本优化设置,下面小编给大家分享有效提升Win10运行速度的基本优化设置方案. 方案一:升级Win ...

  6. 宝塔linux 4g2h优化方案,5G优化案例:5G NSA组网下4G锚点基站X2配置优化研究方案案例.docx...

    5G NSA 组网下 4G 锚点基站 x2 配置优化研究方案案例 5G NSA组网下4G锚点基站x2配置优化研究方案案例 XX XX年 XX月 目 录 TOC \o "1-3" \ ...

  7. 【厚积薄发】Unity UI 显隐(共存)关系的优化处理方案

    这是第146篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间10分钟,认真读完必有收获. UWA 问答社区:answer.uwa4d.com UWA QQ群 ...

  8. python 优化加速方案

    也看了知乎上关于python加速方案,有好多方案,但是感觉没全记住,这里把自己需要总结的记下来, 原文:https://www.zhihu.com/question/24695645?sort=cre ...

  9. 网站站内优化新方案,SEO运营人员值得一看

    网站在建设完成之后,就会有大量的优化工作来提升网站的排名和权重.网站优化可分为站内优化和站外优化.随着互联网的不断进步和改变,搜索引擎的规则也在升级更新,那么我们该如何在时代的潮流下进行站内优化呢? ...

最新文章

  1. GitHub宝藏项目标星1.6w+,编程新手有福了
  2. 我来阅读lodash源码——Math(一)
  3. python下三角代码分析_空间分析:2-3。用Python生成Delaunay三角形,23Python,德劳内
  4. UA SIE545 优化理论基础0 优化建模3 线性回归的参数估计问题
  5. 真正决定分辨准确率的是图片重叠的区域
  6. Elasticsearch启动问题:max number of threads [3753] for user [XX] is too low, increase to at least [4096]
  7. 移动硬盘计算机无法打开硬盘,移动硬盘无法识别
  8. WPF MVVM实例三
  9. vue登录如何存储cookie_vue项目实现表单登录页保存账号和密码到cookie功能
  10. STM32那点事(4)_DMA(下)
  11. mysql关于学校的专业院系_大学里分的院校和分专业系有什么不同
  12. [转载]IEEE754标准的浮点数表示
  13. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-1.数据信息安全--微信授权一键登录功能介绍...
  14. 公司年会不知道送什么?2021平价高颜值蓝牙耳机推荐
  15. 图像处理笔记1一上采样与下采样
  16. C# 阿拉伯数字转换为中文数字/中文数字转换为阿拉伯数字
  17. MediaSession框架
  18. 软件测试面试该如何谈薪
  19. java安装报错循环冗余检查_Java中循环冗余校验的实现方式介绍
  20. 计算机wold标题文字加背景,office word文档添加背景图片以及背景颜色来美化枯燥乏味的文字...

热门文章

  1. CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载)
  2. CISP证书 +转来文章:漫谈信息安全认证(CISP与CISSP)
  3. Android_adb_Wifi_无线调试,脱离数据线/
  4. mysql中的强制索引_你如何强制MySQL中的查询使用索引?
  5. android 获得ram大小,Android中获取(RAM)总运存大小和可用运存大小
  6. html网页怎么播放无损,无损音质和标准音质有什么区别
  7. PDPS软件:机器人固定点焊虚拟仿真操作方法
  8. React 组件封装之 Tree 树形控件
  9. 酒吧类型与其娱乐项目设置
  10. 进制转换:十进制转六进制/转八进制