一、Presto概述

1、Presto简介

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节,Presto虽然具备解析SQL的能力,但它并不属于标准的数据库范畴。

Presto支持在线数据查询,包括Hive,关系数据库以及专有数据存储。一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析,Presto主要用来处理响应时间小于1秒到几分钟的场景。

2、Presto架构

Presto查询引擎是基于Master-Slave的架构,运行在多台服务器上的分布式系统,由一个Coordinator节点和多个Worker节点组成,Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行,Worker节点负责实际执行查询任务。

Coordinator节点

Coordinator服务器是用来解析查询语句,执行计划分析和管理Presto的Worker结点,跟踪每个Work的活动情况并协调查询语句的执行。Coordinator为每个查询建立模型,模型包含多个Stage,每个Stage再转为Task分发到不同的Worker上执行,协调通信基于REST-API,Presto安装必须有一个Coordinator节点。

Worker节点

Worker负责执行查询任务和处理数据,从Connector获取数据,Worker间会交换中间数据。Coordinator从Worker获取结果并返回最终结果给Client端,当Worker启动时会广播自己并发现Coordinator,告知Coordinator可用状态,协调通信基于REST-API,Presto通常会安装多个Worker节点。

数据源适配

Presto可以适配多种不同的数据源,可以和数据源连接和交互,Presto是通过表的完全限定名处理table,Catalog对应类数据源,Schema对应数据库,Table对应数据表。

Presto中处理的最小数据单元是一个Page对象,一个Page对象包含多个Block对象,每个Block对象是一个字节数组,存储一个字段的若干行,多个Block横切的一行是真实的一行数据。

二、Presto安装

1、安装包管理

[root@hop01 presto]# pwd
/opt/presto
[root@hop01 presto]# ll
presto-cli-0.196-executable.jar
presto-server-0.189.tar.gz
[root@hop01 presto]# tar -zxvf presto-server-0.189.tar.gz

2、配置管理

在presto安装目录中创建etc文件夹,并添加以下配置信息:

/opt/presto/presto-server-0.189/etc

节点属性

每个节点的特定环境配置:etc/node.properties;

[root@hop01 etc]# vim node.properties
node.environment=production
node.id=presto01
node.data-dir=/opt/presto/data

配置内容:环境名称,唯一ID,数据目录。

JVM 配置

JVM的命令行选项,用于启动Java虚拟机的命令行选项列表:etc/jvm.config。

[root@hop01 etc]# vim jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

配置属性

Presto服务器的配置,每个Presto服务器都可以充当协调器和工作器,如果单独使用一台机器来执行协调工作可以在更大的集群上提供最佳性能,这里PrestoServer既当一个coordinator也是一个worker节点:etc/config.properties。

[root@hop01 etc]# vim config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8083
query.max-memory=3GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://hop01:8083

这里coordinator=true表示当前Presto实例充当协调器角色。

日志配置

[root@hop01 etc]# vim log.properties
com.facebook.presto=INFO

Catalog属性

/opt/presto/presto-server-0.189/etc/catalog

配置hive适配:

[root@hop01 catalog]# vim hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.37.133:9083

配置MySQL适配:

[root@hop01 catalog]# vim mysql.properties
connector.name=mysql
connection-url=jdbc:mysql://192.168.37.133:3306
connection-user=root
connection-password=123456

3、运行服务

启动命令

[root@hop01 /]# /opt/presto/presto-server-0.189/bin/launcher run

启动日志

这样presto就启动成功了。

三、客户端安装

1、Jar包管理

[root@hop01 presto-cli]# pwd
/opt/presto/presto-cli
[root@hop01 presto-cli]# ll
presto-cli-0.196-executable.jar
[root@hop01 presto-cli]# mv presto-cli-0.196-executable.jar presto-cli.jar

2、连接MySQL

java -jar presto-cli.jar --server ip:9000 --catalog mysql --schema sq_export

四、源代码地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

阅读标签

Java基础】【设计模式】【结构与算法】【Linux系统】【数据库

分布式架构】【微服务】【大数据组件】【SpringBoot进阶】【Spring&Boot基础

数据分析】【技术导图】【 职场

OLAP引擎:基于Presto组件进行跨数据源分析的更多相关文章

  1. ActiveReports 报表控件V12新特性 -- 无需ETL处理,即可实现跨数据源分析数据

    ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...

  2. OLAP引擎:基于Druid组件进行数据统计分析

    一.Druid概述 1.Druid简介 Druid是一款基于分布式架构的OLAP引擎,支持数据写入.低延时.高性能的数据分析,具有优秀的数据聚合能力与实时查询能力.在大数据分析.实时计算.监控等领域都 ...

  3. OLAP了解与OLAP引擎——Mondrian入门

    一.  OLAP的基本概念 OLAP(On-Line Analysis Processing)在线分析处理是一种共享多维信息的快速分析技术:OLAP利用多维数据库技术使用户从不同角度观察数据:OLAP ...

  4. 分布式大数据多维数据分析(olap)引擎kylin[转]

    Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay 开发并贡献至开源社区.它能在亚秒内查询巨大的Hiv ...

  5. [转帖]OLAP引擎这么多,为什么苏宁选择用Druid?

    OLAP引擎这么多,为什么苏宁选择用Druid? 原创 51CTO 2018-12-21 11:24:12 [51CTO.com原创稿件]随着公司业务增长迅速,数据量越来越大,数据的种类也越来越丰富, ...

  6. python 全栈开发,Day100(restful 接口,DRF组件,DRF跨域(cors组件))

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确.方便快速开发 - 针对pc,手机,ipad,微信,支付宝... 使用同一个接口 2. 简述http协议? - 基 ...

  7. 转:高层游戏引擎——基于OGRE所实现的高层游戏引擎框架

    高层游戏引擎——基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之外的其他游戏系统.意念才学疏陋,望众位前辈不吝赐教.由于代码质量不高. ...

  8. 基于Tesseract组件的OCR识别

    基于Tesseract组件的OCR识别 背景以及介绍 欲研究C#端如何进行图像的基本OCR识别,找到一款开源的OCR识别组件.该组件当前已经已经升级到了4.0版本.和传统的版本(3.x)比,4.0时代 ...

  9. 基于HiKariCP组件,分析连接池原理

    HiKariCP作为SpringBoot2框架的默认连接池,号称是跑的最快的连接池,数据库连接池与之前两篇提到的线程池和对象池,从设计的原理上都是基于池化思想,只是在实现方式上有各自的特点:

随机推荐

  1. 华盛顿邮报专访:SPC能否再掀起币圈新浪潮?

    近日,美国知名媒体华盛顿邮报对话NGK灵石团队技术副总裁Daphne Patel女士,对话主题为"SPC能否再掀起币圈新浪潮".此次对话以问答的形式展开,将SPC的最新情况呈现在你 ...

  2. 听说USDN最近很火,它究竟是什么?

    最近USDN在各大社区沸沸扬扬,甚至很多人都说USDN将会打破稳定币市场的格局,那么USDN究竟是怎样的一种稳定币呢?小编今天就帮助大家了解一下,新一代算法型稳定币USDN. USDN是基于公链NGK ...

  3. banner自用图床2

  4. JUnit5学习之三:Assertions类

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. 微信小程序:列表渲染

    wx:for,(wx:for-item,wx:for-index),wx:key. 列表循环包括数组循环和对象循环 一.数组循环 此时控制台报错如下:属性"wx:key"可以提高性 ...

  6. Docker-compose编排微服务顺序启动

    一.概述 docker-compose可以方便组合多个 docker 容器服务, 但是, 当容器服务之间存在依赖关系时, docker-compose 并不能保证服务的启动顺序.docker-comp ...

  7. 开发在线教育平台项目步骤(Python3.7.6 + Django 3.0)

    1. 新建虚拟环境 mkvirtualenv eduonline 2. 安装mysql数据库 pip install mysqlclient pip install pymysql 3. 在setti ...

  8. this指针、引用、顶层和底层const关系

    1.首先顶层const和底层const是围绕指针*p的说法.底层:const int *p,const不是修饰指针p,指针所指的值不能改变:顶层:int *const p,const修饰指针p,指针本 ...

  9. Redis缓存穿透、缓存雪崩、缓存击穿好好说说

    前言 Redis是目前非常流行的缓存数据库啦,其中一个主要作用就是为了避免大量请求直接打到数据库,以此来缓解数据库服务器压力:用上缓存难道就高枕无忧了吗?no,no,no,没有这么完美的技术, 缓存穿 ...

  10. MHA架构搭建中遇到的问题

    1. 两个包:mha4mysql-manager-0.56-0.el6.noarch.rpm 和 mha4mysql-node-0.56-0.el6.norch.rpm 地址:https://code ...