大数据时代快速SQL引擎-Impala( 三 )

Impala介绍

Apache Impala是由Cloudera开发并开源的一款基于HDFS/Hbase的MPP SQL引擎 , 它拥有和Hadoop一样的可扩展性、它提供了类SQL(类Hsql)语法 , 在多用户场景下也能拥有较高的响应速度和吞吐量 。 它是由Java和C++实现的 , Java提供的查询交互的接口和实现 , C++实现了查询引擎部分 , 除此之外 , Impala还能够共享Hive Metastore(这逐渐变成一种标准) , 甚至可以直接使用Hive的JDBC jar和beeline等直接对Impala进行查询、支持丰富的数据存储格式(Parquet、Avro等) , 当然除了有比较明确的理由 , Parquet总是使用Impala的第一选择 。

从用户视角

可以将Impala这类系统的用户分为两类 , 一类是负责数据导入和管理的数据开发同学 , 另一类则是执行查询的数据分析师同学 , 前者通常需要将数据存储到HDFS , 通过CREATE TABLE的方式创建与数据match的schema , 然后通过load data或者add partition的方式将表和数据关联起来 , 这一些流程串起来还是挺麻烦的 , 但是多亏了Hive , 由于Impala可以共享Hive的MetaStore , 这样就可以使用Hive完成此类ETL工作 , 然后将数据查询的工作交给Impala , 大大简化工作流程(据我所知毕竟大部分数据开发同学还是比较熟悉Hive) 。 接下来对于数据分析师而言就是如何编写正确的SQ以表达他们的查询、分析需求 , 这也是它们最拿手的了 , Impala通常可以在TB级别的数据上提供秒级的查询速度 , 所以使用起来可能让你从Hive的龟速响应一下提升到期望的速度 。

推荐阅读