文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2.3 Presto (Facebook)
Facebook 也是 Hive 的初始开发者。
Presto 是 Facebook 推出的一个基于 Java 开发的大数据分布式 SQL 查询引擎,可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别,据称该引擎的性能是 Hive 的 10 倍以上。Presto 可以查询包括 Hive、Cassandra 甚至是一些商业的数据存储产品,单个 Presto 查询可合并来自多个数据源的数据进行统一分析。
2.3.1 架构
图 26 Presto 架构
Presto 查询引擎是一个 Master-Slave 的架构,由下面三部分组成:
- 一个 Coordinator 节点
- 一个 Discovery Server 节点
- 多个 Worker 节点
节点说明:
- Coordinator: 负责解析 SQL 语句,生成执行计划,分发执行任务给 Worker 节点执行
- Discovery Server: 通常内嵌于 Coordinator 节点中
- Worker 节点: 负责实际执行查询任务,负责与 HDFS 交互读取数据。
- 节点间交互: Worker 节点启动后向 Discovery Server 服务注册,Coordinator 从 Discovery Server 获得可以正常工作的 Worker 节点。如果配置了 Hive Connector,需要配置一个 Hive MetaStore 服务为 Presto 提供 Hive 元信息
2.3.2 查询流程
图 27 Presto 执行过程示意图
用户使用 Presto Cli 提交一个查询语句后,Cli 使用 HTTP 协议与 Coordinator 通信,Coordinator 收到查询请求后调用 SqlParser 解析 SQL 语句得到 Statement 对象,并将 Statement 封装成一个 QueryStarter 对象放入线程池中等待执行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论