交互式处理
- 交互式处理是操作人员和系统之间存在交互作用的信息处理方式,操作人员通过终端设备输入信息和操作命令,系统刚接到后立即处理,并通过终端设备显示处理结果。
- 为了实现高性能数据处理,交互式极端引擎采用mmp架构,并将充分使用内存加速
- presto的出现时为了应对hadoop的一些缺点:
1、io密集,因为mepreduce作业之间的交互是用hdfs作为中介的
2、任务调度大,因为是分布式的,每个jave都需要一个java虚拟机
3、无法利用内存
4、map和reduce都需要排序,这样就有很多弊端
交互式查询引擎分类
- ROLAP(impala、presto)
基于关系数据库的 - MOLAP(druid、kylin)
基于多维数据库的 - HOLAP
基于混合组织数据库的
presto的介绍
- presto是facebook开源的交互式计算引擎
- 能处理tb甚至pb级别的数据
- 因为prosto能和hive进行无缝连接,所以成为了非常主流的olap引擎
presto的基本架构
presto查询引擎是一个master-slave的架构,由一个coordinator的服务,一个discover server服务,多个worker服务
- coordinator:
协调者,接收客户端查询查询请求(sql)并对其进行词法分析,语法分析,生成逻辑查询计划以及物理查询计划后,将各个任务调度到worker上去,在worker结果返回之前并对其汇总 - discovery server:服务发现组件,各个work启动时会向discovery server注册,并将状态信息定期汇报给diecovery server没这样coordinator就会从siecovery server 获取各个worker的工作列表,discovery server是一个轻量级服务,一般嵌在coordinator中
- worker:任务执行者接收来自zoordinator的任务,利用多线程的方式并行,应将结果发送个coordinator,
presto是一个分布式的查询引擎,并不提供数据的储存服务,为此,presto是一个插拔式的设计思路,支持多种数据源,包括hive,hdfs,mysql,等