Impala presto hbase hive sparksql

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013086392/article/details/89680049

Impala 技术点梳理
http://www.cnblogs.com/TiestoRay/p/10243365.html
Impala
优点:
实时性查询
计算的中间结果不写入磁盘
缺点:
对于内存的依赖过于严重,内存溢出直接导致技术任务的失败
不支持UDF,不支持UPDATE/DELTE操作,不支持同一SELECT中多个DISTINCT

即在内存不足时将数据存入磁盘进行计算。这是在Impala 1.4 for CDH4、CDH5.1开始支持的功能,以增加了磁盘IO,延长了运算时间为代价,避免了内存溢出的问题。
注意:该功能也是有限制的:

不是所有的SQL语句都能触发,例如union关键字还是会触发内存溢出错误;

各个节点的内存峰值限制不能过低,低于运算所需分配给各个节点的最小内存;

运算explain输出的各个节点预估内存不能过分高于各个节点的实际物理内存;

当触发“Spill to Disk”功能时有其他并发查询,仍会触发内存溢出错误;

对磁盘的空间有一定的要求,磁盘运算的数据会写入到impala各个节点的临时目录下,增加了磁盘I/O,并且会引发不可控制的磁盘占用。

presto
presto适合pb级的海量数据查询分析,不是说把pb的数据放进内存,比如一张pb表,查询count,vag这种有个特点,
虽然数据很多,但是最终的查询结果很小,这种就不会把数据都放到内存里面,只是在运算的过程中,拿出一些数据放内存,然后计算,
在抛出,在拿,这种的内存占用量是很小的,但是join这种,在运算的中间过程会产生大量的数据,或者说那种查询的数据不大,
但是生成的数据量很大,这种也是不合适用presto的,但不是说不能做,只是会占用大量内存,消耗很长的时间,这种hive合适点.
presto算是hive的一个补充,需要尽快得出结果的用presto,否则用hive.
presto是常驻任务,接受请求立即执行,全内存并行计算;hive需要用yarn做资源调度,接受查询需要先申请资源,启动进程,并且中间结果会经过磁盘。

猜你喜欢

转载自blog.csdn.net/u013086392/article/details/89680049