Impala
Impala为存储在Apache Hadoop中的数据,提供了高性能和低延迟的SQL查询。 使用Impala,您可以通过SELECT、JOIN和聚合函数实时查询存储在HDFS或HBase中的数据。
背景信息
Impala使用与Apache Hive相同的元数据、SQL语法(Hive SQL)和ODBC驱动程序等,为面向批处理或实时查询提供了一个熟悉且统一的平台。
注意事项
如果使用Impala组件,请勿直接通过系统文件删除hive表分区目录,请使用Impala或者Hive命令删除,否则会导致该表不可用。
优点
为了避免延迟,Impala没有使用MapReduce,而是使用分布式查询引擎直接访问数据,该引擎与RDBMS中的查询引擎相似,其性能比Hive快了几个数量级,具体取决于查询和配置的类型。
Impala相对于Hadoop上SQL查询,优点如下:
由于在数据节点上进行了本地处理,因此避免了网络的限制。
由于无需进行昂贵的数据格式转换,因此不会产生任何费用。
可以使用单个、开放和统一的元数据存储。
所有数据均可立即查询,无需等待ETL(Extract-transform-load)。
所有硬件均用于Impala查询以及MapReduce。
仅需单个计算机池即可扩展。
Impala的详细信息,请参见Apache Impala。
架构
E-MapReduce中Impala的架构如下图。
Impala组件如下:
Impalad
部署在Core节点和Task节点,允许扩容和缩容。
Impala的核心组件是运行在各个节点上的Impala Daemon,进程名为Impalad,负责读取和写入数据文件,接收从
impala-shell
命令、Hue、JDBC或ODBC等接口发送的查询语句,并行查询语句和分发工作任务到集群的各个Impala节点上,同时负责将本地计算好的查询结果发送回协调器节点(Coordinator Node)。Statestored
部署在Master节点的master-1-1机器。
Statestore服务对应的进程名为Statestored,负责管理集群中所有Impalad进程的健康状态,并将状况结果转发到所有Impalad进程。当某一个Impalad进程由于节点异常、网络异常或软件问题等导致节点不可用时,StateStore确保将状况结果通知其他Impalad进程,当有新的查询请求时,Impalad进程将不会发送查询请求到该不可用的节点。
Catalogd
部署在Master节点的master-1-1机器。
Catalogd负责将每个Impalad进程上的元数据变动同步到集群内其他Impalad进程。由于所有的请求都是通过StateStore进程传递的,所以建议StateStore和Catalog运行在同一个节点上。