大数据技术学习——Hadoop即席查询引擎
【摘要】 Hadoop即席查询引擎是构筑在Hive之上的,提供快速SQL查询接口的OLAP引擎。
1 一句话介绍
Hadoop即席查询引擎是构筑在Hive之上的,提供快速SQL查询接口的OLAP引擎。
2 基本概念
- 即席查询(Ad Hoc):用户以单独SQL语句(不嵌入程序中)灵活地进行自定义查询。即席查询语句通常未经过预先专家优化,但是又要求查询速度快,因此一般采用内存计算或预计算技术方案。
- Hive:基于HDFS构建的数据仓库,主要提供HQL(类SQL语句)生命周期管理和元数据管理功能。自0版本后,元数据管理功能组件MetaStore可独立部署,与即席查询引擎结合,提供更高效的查询能力。
- 数据模型:描述数据仓库中事实表和维度表之间的连接关系的模型。以事实表为中心,多张维度表连接到事实表上的数据模型称为星型模型;当存在维度表不直接连接事实表,而是连接维度表时,称为雪花模型,可以看作是星型模型的拓展。
3 Presto
Presto是一个分布式的SQL查询引擎,本身不存储数据,可通过connector适配器抽取多种类型数据源(通常为Hive)的数据到内存中计算。Presto是一个Master-Slave架构,如下图:
- Coordinator作为master节点,负责接收客户端SQL请求,解析SQL,读取Hive元数据,最终生成执行计划。执行计划由多个Stage构成,Stage包含可并行计算的task任务。
- Worker:接收Coordinator下发的task任务,读取HDFS上的数据,计算完成后返回给Coordinator聚合。
- Discovery Server:通常内置于Coordinator中。负责发现可以正常工作的worker节点。
Presto是完全基于内存进行并行计算的,Worker节点内和节点间流水线计算,中间无磁盘IO操作,因此速度极快。
开源组件Impala架构与Presto类似,同样是构建于Hadoop的MPP计算引擎。Presto支持的数据源类型更丰富。
4 Kylin
Kylin之所以能提供快速的OLAP查询,秘诀是预计算,查询相对固化,因此对即席查询的支持度不如Presto。
Kylin从Hive中获取数据,然后通过Build Engine(基于Spark/MR的能力)构建OLAP Cube,并将结果存储到Parquet/HBase中。用户直接查询时,直接从Cube中获取结果。
5 参考
- https://cloud.tencent.com/developer/article/1877751
- https://tech.meituan.com/2014/06/16/presto.html
- https://www.jianshu.com/p/6eadb77d091c
- https://kylin.apache.org/cn/
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)