1.什么是impala?
Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。
Impala组成
- 客户端:包括JDBC、ODBC、Hue、Impala Shell等,用于执行查询或完成管理任务;
- Hive Metastore:存储可用于Impala数据的信息,包括可用数据库及其结构。当执行Impala Sql语句进行schema对象的创建、修改及删除,或加载数据到表中等操作时,相关元数据的变化,通过单独的catalog服务自动广播到所有Impala节点;
- Cloudera Impala(Impalad进程):运行于数据节点的Impala程序,用于协调和执行查询。每一个Impala的实例可以获取、解析以及协调Impala客户端传来的查询。查询是被分布到各Impala节点间,这些节点作为workers,并行执行查询片段;
- HDFS、HBase、kudu:数据的实际存储位置。
impala查询执处理过程
- 用户程序通过JDBC、ODBC、Impala Shell等Impala 客户端发送Sql语句给Impala;
- 用户程序连接到集群中任意Impalad进程,这一进程作为整个查询的协调器;
- Impala解析、分析查询,确定哪些任务由集群中哪一Impalad实例执行,并生成最优执行计划;
- Impalad实例访问对应HDFS、HBase服务,获取数据;
- 每一个Impalad实例将数据返回给协调器Impalad,由其发送结果给客户端。
2.环境准备
install kudu
详见代码仓库kudu模块里面的docker目录
install impala
css
代码解读
复制代码
docker run -d --name kudu-impala --add-host kudu-master-1:{ip} --add-host kudu-master-2:{ip} --add-host kudu-master-3:{ip} -p 21000:21000 -p 21050:21050 -p 25000:25000 -p 25010:25010 -p 25020:25020 --memory=4096m apache/kudu:impala-latest impala
需要注意增加主机映射关系,不然impala找不带kudu的机器。 访问http://127.0.0.1:25000/