《Impala实战》—— 读后总结

Posted xingoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Impala实战》—— 读后总结相关的知识,希望对你有一定的参考价值。


导读


关于Impala书籍很少,也能看出这项技术的流行程度一般般《Impala实战》—— 读后总结。但是出于HBase查询方便的角度,还是硬着头皮看看这本过时很久的书籍。好在Impala更新的不是很多,所以还具有一定的参考价值。书籍内容大多来自官方文档,推荐指数只能给2星:★★☆☆☆


1 背景


    Impala是Cloudera开源的实时查询项目,目标是基于统一的SQL快速查询各种存储系统,如HDFS、Kudu、HBase等。Impala原意为高角羚,该项目的特点就是快速。Impala舍弃MapReduce,基于C++实现针对硬件做了很多的优化,支持数据本地性。

《Impala实战》—— 读后总结


2 组件角色


《Impala实战》—— 读后总结

在Impala中有三种角色的组件:

  • Impalad:Impala的核心组件,用于sql的解析、任务分发、执行。

  • Statestore:检测节点是否故障,如果有故障,那么impalad在分发任务时会忽略该节点。

  • Catalog:同步元数据变化,正常每个impalad都缓存一份hive元数据,当数据变更时,通过该服务同步给所有的Imaplad。


读写时,每个Impalad都可以作为接收者。详细的流程如下:

《Impala实战》—— 读后总结

  1. 通过jdbc等驱动发送查询sql

  2. imaplad接收到请求,解析sql,生成查询计划

  3. impalad变成coordinator角色,分发查询计划到各个impalad节点

  4. impalad接收其他的coordinator发过来的查询请求,执行本地查询

  5. impalad执行本地扫描,然后把结果返回给coordinator

  6. coordinator汇总结果,返回给client客户端


3 安装部署


在CM中安装Impala非常简单,添加服务后,选中对应的角色主机即可。如果只想查询HBase,那么每台RegionServer的主机上部署一个Impalad即可。statestore和catalog可以部署在另一个节点上。


《Impala实战》—— 读后总结

《Impala实战》—— 读后总结

4 使用优化


Impala的使用跟Hive其实没什么两样,都是标准的sql语法,就不再啰嗦了。可以再总结下相关的优化经验:


4.1 查询的时候一定要尽可能减少返回的数据量,可以设置limit大小

4.2 如果查询HBase一定要充分利用HBase的rowkey,缩小扫描范围

4.3 可以使用explain命令分析查询计划

《Impala实战》—— 读后总结


4.4 可以使用profile命令分析上一个sql的耗时情况

比如下面的场景,就可以观察到scan的耗时

《Impala实战》—— 读后总结


4.5 通过CM的静态服务资源池限制Impala的资源使用,避免干扰其他组件

5 参考资料


5.1 官方文档

https://www.cloudera.com/documentation/enterprise/5-7-x/topics/impala_tutorial.html


5.2 唯一的一本书,其实就是翻译的官方文档:


https://item.jd.com/1470868681.html


5.3 原理论文

http://cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf



往期相关推荐:


2


xingoo

专注大数据与机器学习



以上是关于《Impala实战》—— 读后总结的主要内容,如果未能解决你的问题,请参考以下文章

《开源大数据分析引擎Impala实战》目录

新书放送:开源大数据分析 引擎Impala实战 / 演讲名篇鉴赏辞典

Impala内存优化实战案例

视频干货分析实战|10-Impala性能调优

Java实现impala操作kudu

impala语句翻译过程中总结