[Impala] 和 Hive 的异同比较。

sddtc 于 2015-04-29 发布

Impala相对于Hive所使用的优化技术

1.没有使用MapReduce进行并行计算,虽然MapReduce是非常好的并行计算框架,但它更多的面向批处理模式,而不是面向交互式的SQL执行。与MapReduce相比:Impala把整个查询分成一执行计划树,而不是一连串的MapReduce任务,在分发执行计划后,Impala使用拉式获取数据的方式获取结果,把结果数据组成按执行树流式传递汇集,减少的了把中间结果写入磁盘的步骤,再从磁盘读取数据的开销。Impala使用服务的方式避免每次执行查询都需要启动的开销,即相比Hive没了MapReduce启动时间。
2.使用LLVM产生运行代码,针对特定查询生成特定代码,同时使用Inline的方式减少函数调用的开销,加快执行效率。
3.充分利用可用的硬件指令(SSE4.2)。
4.更好的IO调度,Impala知道数据块所在的磁盘位置能够更好的利用多磁盘的优势,同时Impala支持直接数据块读取和本地代码计算checksum。
5.通过选择合适的数据存储格式可以得到最好的性能(Impala支持多种存储格式(Parquet, Text, Avro, RCFile, SequeenceFile))。
6.最大使用内存,中间结果不写磁盘,及时通过网络以stream的方式传递。

Impala与Hive的异同

impala分区

slave:21000 > alter table p1 add partition(dt='2015-09-14');
slave:21000 > alter table p1 drop if exists patition(dt='2015-09-14')

alter table test add columns (docnt INTEGER);

资料来源:
Impala 与 Hive 的比较
cloudera-impala