https://hub.docker.com/r/fedormalyshkin/cdh6-impala-kudu
https://github.com/fedor-malyshkin/docker-cdh6-impala-kudu
https://github.com/base-big-data/docker-cdh6-hadoop
https://github.com/base-big-data/docker-cdh6-hive
https://github.com/base-big-data/docker-cdh6-hive-postgresql
https://github.com/base-big-data/docker-cdh6-impala
docker run -d -p 8050:8050 -p 8051:8051 -p 21000:21000 -p 21050:21050 -p 25000:25000 -p 25010:25010 -p 25020:25020 -p 50070:50070 -p 50075:50075 --name cdh6-impala-kudu fedormalyshkin/chd6-impala-kudu
Impala Web UIs URL
Impala State Store Server http://localhost:25010
Impala Catalog Server http://localhost:25020
Impala Server Daemon http://localhost:25000
Impala由三种进程组成:
Impalad
impalad是impala主要的工作计算进程,负责接收client的请求,变成协调者角色,然后解析查询请求,拆分成不同的任务分发给其他的Impalad节点进程。每个Impalad工作节点进程接收到请求后,开始执行本地查询(比如查询hdfs的datanode或者hbase的region server),查询结果返回给协调者。协调者搜集到请求数据合并返回给client。
通过上面的图也能看出,每个Impalad又包含三种角色,当接收到client的请求时,由planner解析查询sql,拆分成一个个可以并行的小任务;然后通过coordinator发送给其他的节点;其他的节点接收请求后,由excutor执行本地查询。
StatStore
状态管理进程,负责搜集各个节点的健康状况,当某个节点挂掉时,负责通知其他的节点不要往这个节点发送任务。statestore由于只负责状态通知,因此当这个进程挂掉并不影响impalad查询,只是可能会发送任务到挂掉的节点,集群的鲁棒性差一些而已。
Catalog
元数据变化同步进程,由于每个impalad都可以作为coordinator角色,那么当一个节点接收到数据变更,比如alter指令,其他的节点如何知晓呢?就可以通过catalog来同步,每个节点的变化都通知给catlog进程,它再同步给其他的节点,每个节点都维护一份最新的元数据信息,这样就不怕查询的数据不一致了。
http://www.htmltoo.com/