Presto的整体架构
Presto CLI
Presto Coordinator
Presto Worker
元数据 存储在Hive中,Metastore中 Catalog
Impala SQL的解析引擎, 不依赖MR,依赖Hive中的元数据,编译为执行计划树,省去了大量的shuffle的
尽可能使用内存,底层使用C++代码来执行,不支持UDF
Impala不依赖Yarn进行调度
Google 新三驾马车 (Caffeine – 网络搜索引擎,Pregel – 分布式图计算, Dremel – 交互式分析工具)
impala参考Google的Dremel实现了
Impala的整体架构
-
CLI: Impala shell ,hua,jdbc,odbc,客户端端
-
Impalad: Impalad Server,通常和DataNode部署在相同的节点,接收到请求之后,称为Coordinator,包括(Planner,Coordinator,Exec Engine)获取元数据,生成执行计数树
- 1、CLI 提交的SQL语句到指定的Impalad,此节点Impalad称为Coordinator。
- 2、Coordinator的前端调用JNI编译SQL语句,生成执行计划树,以Thrift数据格式返回给Coordinator的C++后端,执行计数树分为多个阶段,每个阶段叫PlanFragment,
- 3、Coordinator后端通过libhdfs访问数据所在节点,调用数据所在节点的Impalad节点,进行数据处理
- 4、将结果放回给Coordinator前端,再返回给CLI
-
Impala State Store:保存Impalad的信息、状态,每个Impalad都缓存一份StateStore中的信息
-
Catelogd:impala的元数据网关,与metestore的同步元数据