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

Impalad优化

上面介绍了整个查询大致的执行流程 , Impalad的后端使用的是C++实现的 , 这使得它可以针对硬件做一些特殊的优化 , 并且可以比使用JAVA实现的SQL引擎有更好的资源使用率 。 另外 , 后端的实现使用了LLVM , 它是一个编译器框架 , 可以在执行器生成并编译代码 。 官方测试发现使用动态生成代码机制可以使得后端执行性能提高1—5倍 。

在数据访问方面 , Impalad并没有使用通用的HDFS读取数据那一套流程 , 毕竟Impalad一般部署在DataNode上 , 访问数据完全不需要再走NameNode了 , 因此它使用了HDFS提供的Short-Circuit Local Reads机制 , 它提供了直接访问DataNode的方案 , 可以参考Hadoop官方文档和HDFS-347了解详情 。

最后Impalad后端支持对中文件格式和压缩数据的读取 , 包括Avro、RC、Sequence、Parquet , 支持snappy、gzip、bz2等压缩 , 看来Impala不支持可能也不打算支持ORC格式啦 , 毕竟有自家主推的Parquet , 而ORC则在Presto中广泛使用 。

部署方式

推荐阅读