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
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运行在同一个节点上。