Impala优化基本方案

本文源自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功能分析性能问题所在。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容