1、Impala架构原理目录1.应用场景应用场景2.组件架构与功能3.关键流程4.常用命令和流程5.性能调优.Page 1应用场景Impala,是一个MPP架构的大数据分析引擎,提供交互式、即时Sql查询能力。.Page 2应用场景.Page 3ImpalaSQL语言参考兼容SQL-92,部分兼容SQL-2003Impala支持大多数与Hive相同的语句和子句,包括但不限于 JION、AGGREGATE、DISTINCT、UNION ALL、ORDER BY、LIMIT 以及 FROM 子句中的(非相关)子查询。Impala 还支持 INSERT INTO 和 INSERT OVERWRITE。I
2、mpala 支持名称和语义与等效 Hive 数据类型相同的数据类型:string、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、BOOLEAN、STRING、TIMESTAMP应用场景.Page 4Impala支持的文件格式文件类型文件类型格式格式编码方式编码方式是否支是否支持创建表持创建表是否支是否支持插入持插入Text非结构化LZO、gzip、bzip2、Snappy是,没有 STORED AS 子句的 CREATETABLE,默认文件格式为未压缩文本是RCFile结构化Snappy、gzip、deflate、bzip2是否目录1.应用场景2.组件架构与
3、组件架构与功能功能3.关键流程4.常用命令和流程5.性能调优.Page 5Hive MetastoreHDFS NNStateStoreCatalogQuery PlannerHDFS DNQuery CoordinatorQuery Exec EngineQuery PlannerHDFS DNQuery CoordinatorQuery Exec EngineQuery PlannerHDFS DNQuery CoordinatorQuery Exec EngineJDBC/ODBCApplicationImpala ClusterHaProxy组件架构与功能Impala使用了Hive的元
4、数据,.Page 6组件架构与功能.Page 7、组件名称组件名称描述描述Haproxy负载均衡节点,负责均匀分发查询会话到各Impalad节点。主备机制,提供高的可用性。Catalog元数据管理节点,负责元数据的载入与修改。主备机制,提 供高的可用性。Statestore状态同步节点,负责在Catalogd和各Impalad节点之间同步元数据、Impalad节点状态。主备机制,提供高的可用性。Impala工作节点,提供JDBC/ODBC/CLI查询服务,负责语句的解析 执行计划的生成与优化、调度协调多个Impalad节点完成查 询。目录1.应用场景2.组件架构与功能3.关键流程关键流程4.常
5、用命令和流程5.性能调优.Page 8关键流程StateStore注册1.Catalog启动后,向StateStore注册2.Impalad启动后,向StateStore注册3.StateStore向注册者周期性的发送心跳,心跳中携带注册者所关注 的信息StateStoreCatalogImpaladImpaladImpalad12.Page 9关键流程元数据加载1.Catalog从Hive Metastore和 HDFS Name Node中载入读取元 数据2.在StateStore的下次心跳探测中回带新版的元数据信息3.在StateStore对各Impalad的下次 心跳中,新一版的元数据
6、信息被发送给各ImpaladHiveMetastoreHDFS NNStateStoreCatalogImpaladImpaladImpalad123.Page 10关键流程元数据修改1.DDL语句被提交到某一Impalad2.Impalad请求Catalog进行元数据 修改3.Catalog请求Hive Metastore进行元数据修改4.更新后的元数据版本随StateStore的下次心跳回带到StateStore5.StateStore在对Impalad的下次心 跳中携带新版元数据信息,完成 元数据的同步Hive MetastoreHDFS NNStateStoreCatalogImpal
7、adImpaladImpalad34521DDL语句.Page 11关键流程查询流程1.HaProxy将查询随机分给某一Impalad2.该Impalad将承担Corrdinator的角色,负责语句的解析、执行 计划的生成与优化、执行计划的调度等3.Corrdinator将执行计划基于代价进行优化和拆分,形成执行计划片段,然后调度这些片段在多个Impalad中并发执行4.执行计划片段的结果传输给下一个执行片段后返回给Corrdinator,最终由其完成对用户的返回QueryPlannerHDFS DNQueryCoordinatorQuery ExecEngineQueryPlannerHDF
8、S DNQueryCoordinatorQuery ExecEngineQueryPlannerHDFS DNQueryCoordinatorQuery ExecEngineHaProxy.Page 12目录1.应用场景2.组件架构与功能3.关键流程4.常用命令和常用命令和流程流程5.性能调优.Page 13常用命令和流程.Page 14Impala除提供JDBC/ODBC服务外,还提供命令行的访问方式在安全模式文下档名称,执行下面命令进行级 Kerberos认证:kinit impala_userAcount执行下面的命令连接到impala-she文ll档命密 令行模式:文档名称级impal
9、a-shell-k-i haproxyfloatname:28040文 档 密常用命令和流程.Page 15命令行支持基本Sql语句类型,下面列举Impala中所特有的一些命令:computeInvalidate metataExplain 与 set profileImpala命令行支持的Sql类型和具体使用规则,可以参考可以【Impala Sql语法参考】常用命令和流程.Page 16Compute stats语句文档名称文档密级例:compute stats或compute stats 表名用于计算全部表或某个表的统计信息;Impala利用统计信息,基于代 价进行执行计划的优化常用命令和
10、流程.Page 17Invalidate metata语句用于刷新全部表或某个表的元数据文档名称文档密级例:invalidate metadata或invalidate metadata 表名常用命令和流程.Page 18Profile文语档名称句例:在某条查询执行结束后,紧接着执行Explain语句文档名称文档密级例:explain query statement用于查看某条查询语句的执行计划树;查询语句本身不会被执行文档密级profile将会输出查询语句的执行详情,可用于查看执行过程、时间线等信息,识别瓶颈点等问题常用命令和流程.Page 19Set语句文档名称例:set EXPLAIN_
11、LEVEL=3用于设置当前会话的查询选项;只执行“set;”可查看到所有的查询选项文档密级目录1.应用场景2.组件架构与功能3.关键流程4.常用命令和流程5.性能调优性能调优.Page 20性能调优配置相关.Page 21Hdfs短路读特性(Short-Circuit Reads)强制配置项,需要开启,对性能影响:高开启后,Impala可以通过直接读取本地文件系统的方式读取Hdfs本地节点数据,而无需和Datanode交互,从而提升性能同时,由于无需和Datanode交互,较大程度减少了对本地端口 资源的占用 配置方法 性能调优部署相关.Page 22尽量保证Impalad与Hdfs Data
12、node同分布若某个Datanode节点上没有Impalad,该Datanode上的数据有 可能必须通过远程网络读取,会一定程度影响查询性能性能调优使用相关.Page 23选取合适的文件存储格式优先选择Parquet格式,Impala在使用Parquet格式时性能最佳选取数据分区粒度分区数据量不宜过大或过小,几G或十几G是比较合适的使用COMPUTE STATSCompute Stats语句用于计算Impala表的统计信息,Impala会基 于这些统计信息自动优化执行计划使用Explain语句和Profile语句查看执行详情性能调优使用相关.Page 24使用Explain语句和Profile语句查看执行详情Explain语句用于查看语句的执行计划 使用语法:explain select statement;Profile语句用于查看语句的执行计划与执行详情 使用语法:Select statement;Profile;通过这些信息,可以发现Sql查询中的性能瓶颈点或可优化点Thank you