Kylin和Impala区别:
既然在线分析已经使用了kylin,为啥还用impala呢? 因为kylin不够灵活,只能分析简单的星型/雪花模型,impala可以通过窗口函数,进行复杂的行为数据分析; 反之,当数据量大的时候,impala比较慢,所以只用kylin进行预计算。
一、Impala介绍
Impala 是建立在 Hadoop 生态圈的交互式 SQL 解析、执行引擎,Impala 的 SQL 语法与 Hive 高度兼容,并且提供标准的 ODBC 和 JDBC 接口。 Impala 本身不提供数据的存储服务,其底层数据可来自 HDFS、Kudu、Hbase。
impala优势:
? 和 Hive 高度相似的 SQL 语法,无需太多学习成本 ? 超大数据规模 SQL 解析的能力,高效利用内存与 CPU 利用,快速返回 SQL 查询结果。 ? 集成多个底层数据源,HDFS、Kudu、Hbase 等数据皆可通过 Impala 共享,并且无需进行数据同 步。 ? 与 Hue 深度集成,提供可视化的 SQL 操作以及 work flow。 ? 提供标准 JDBC 和 ODBC 接口,方便下游业务方无缝接入。 ? 提供最多细化到列的权限管理,满足实际生产环境数据安全要求。
impala角色:
impala是一个 MPP引擎,它是基于内存进行大规模数据分析的系统。
impala-server: impalad,它是 impala 系统的计算节点,每个 impalad 角色都是对等的,没有谁是 master;这就涉及到一个问题:分布式计算的任务如何协调,如何分片?——coordinator 角色负责! 那个 impalad 接收这个 sql,谁就承担 coordinator 的角色,它自己负责解析 sql,形成执行计划,进行任务分片,然后通知到其他 impalad 来协作。
impala-state-store: 它是 impala 系统的状态协调节点,主要负责协调集群状态;imapla-server 会跟Impala-state-store 进行周期性的心跳通信,来感知集群中各个节点的状态。
impala-catalog: 元数据管理节点;其实 impala 中,每一个 impalad,都会自己在内存中缓存一份元数据;正因为每个 impalad 都会缓存元数据,就会带来一个问题:当你在 hive 中进行了建表/修改表定义/导入新数据,这些操作后,impalad 中的元数据并不会自动更新;所以,发生这些操作后,需要在 impala 的 shell 中执行一个命令: invalidate metadata这个命令一执行,接收命令的 impalad 会通知所有其他impalad 清空元数据,并请求 impala-catalog来更新自己的缓存;
如果只是对某个表定义的修改,那么可以只更新这个指定的表元数据:refresh [table].
更多大数据学习、面试资料,请扫码关注我的公众号:
|