impala
impala之所以比hive快是因为它生成的完整执行计划树自然地分发到各个lmpalad节点上执行,而不是管道拼接式mr任务的组合。
hive推,前面没处理完,等着
impala拉,主动拉取结果数据,流式拉取有多少拉多少,不用等待所有结果出来才反馈
impala完全基于内存
hive调度依赖于hadoop
impala调度使用simple-sceduler,按距离使用就近节点,优化生成执行计划
impala没有容错逻辑
impala架构:
impalad 集群服务节点通常与datanode安装在同一物理节点,当它接受了客户端请求时,他就变成了coordinator,调用javajni解释sql语句并生成执行计划,在通过调度器分发任务给网络中各节点执行,结果流式返回给coordinator,再返回给客户端
impala stats store
管理所有impalad的运行,健康状态,位置信息
catalogd hive元数据和impala元数据的媒介,网关,同步两边的元数据信息,拉取hive元数据到impala,impala更新了也会同步hive,但hive中修改元数据不会自动更新impala,故需要手动刷新
每个impala服务分为java前端和c++后端
数据存储信息通过libhdfs实现,与hdfs交互