这里我们学习一个新的交互式查询工具impala
我们主要会学习到下面几个方面:
要点1:impala是什么,优势、劣势、与Hive对比、适用场景
要点2:有哪些组件,组件们的作用
要点3:如何使用,包括如何编写程序、导入数据这些。
要点1:
impala是一款针对HDFS、HBASE中的PB级别数据进行交互式实时查询的一款工具。主打的就是速度,impala的中文就是高脚羚羊。
其实看到这里也会有些疑问,大数据量的交互式查询工具?那不是我们前面说的Hive的活吗?怎么又来一个强活干。
我们按照阶段来划分一个大数据开发的任务。无非是数据采集、数据清晰、数据预处理、数据分析(离线+实时)、数据可视化、机器学习、深度学习等等。
但迄今为止还没有出现任何一个框架实现大一统的局面,更多的时候每一步都会有对应的框架来做,不像Java web的spring。而impala的出现其实也是为了满足一些数据背景下hive能力不够的情况。
那么impala的优势在哪呢?
主要就是在计算引擎上面,他没有沿用HIve的MapReduce计算引擎,而是使用了类似mpp的架构。当然了,我并不是说MapReduce引擎不行,如果不行肯定早就在Hadoop里面被淘汰了。MR是一个非常好的分布式并行计算框架,但他是面向批处理模式,而不是SQL的交互式。
这样的结果就是hive查询时会将中间结果写入到磁盘,而impala就不需要,这就大大节省了运行时间。
impala的主要优势就是速度,这是Hive战败的主要因素,在PB级数据面前,Hive的确不够看在数据量更大的情况下,impala甚至可以强出100倍!
当然了impala也是有缺陷的,这也是他无法取代Hive的原因。当数据量不大的时候,impala的优势并不明显,此外,impala还有个致命的缺点,就是不能通过yarn来统一进行资源管理,在Hadoop集群中,无法解决这个问题就等于是被整个家族排斥。
如此一来,impala想要真的使用,就必须给Hive打打下手。
在实际环境中,Hive用以处理复杂的批处理查询任务,数据转化任务、对实时性要求不高同时数据量又大的场景。(毕竟慢是原罪)
而impala就可以用来做实时的查询了,他与Hive配合使用,对Hive的结果数据进行实时分析。
impala的安装部分这里就不说了,需要的可以直接去网上查一查。
要点2:impala的架构原理
impala和Hive类似,都不是数据库,而是数据分析工具。主要有三个架构组件,分别是impalad、statestored和catalogd。
impalad是核心组件,作用就是读写数据文件,接受查询请求,与其他的impalad一同完成查询任务,并将结果返回给中心调停者。
statestored就比较简单了,就是监控impalad的。
catalogd就是当一个impala处理的元数据有变时,及时通知其他的impalad。
要点3:impala的使用
impala的核心开发语句依旧是SQL语句,此外impala还有shell命令窗口。
这个就意味着可以实现不进入客户端就可以直接对impala进行一些操作。