Presto部署指南
1.Presto简介说明
Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。
Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。
Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储。一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。
Presto是一个分布式SQL查询引擎,用于查询分布在一个或多个不同数据源中的大数据集
Presto被设计为数据仓库和数据分析产品:数据分析、大规模数据聚集和生成报表。这些工作经常通常被认为是线上分析处理操作。
所以说,当公司业务有跨库分析时(一般情况是,业务数据库分布在各个部门),一些数据需要配合其他部门的数据进行关联查询,这个时候可以考虑Presto。但是目前,对于MySQL统计查询在性能上有瓶颈。可考虑将数据按时间段归档到HDFS中,以提高统计效率。
如果需要对业务数据库进行较为实时的统计,而且不需要跨库操作的时候,建议还是直连数据库。
Presto上使用SQL遇到的一些坑:https://segmentfault.com/a/1190000013120454?utm_source=tag-newest
Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker。
2.官方文档:https://prestodb.github.io/docs/current/installation.html
3.下载:wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.220/presto-server-0.220.tar.gz
4.解压,创建文件夹及文件
cd /data/bigdata/presto && mkdir etc && touch etc/{config.properties,jvm.config,log.properties,node.properties} && mkdir etc/catalog
5.修改配置文件
vim etc/config.properties #配置属性:Presto server的配置信息
每个Presto server既是一个coordinator也是一个worker。 但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator。
一个coordinator的etc/config.properties应该至少包含以下信息:
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://ip_地址:8080 以下是最基本的worker配置:
coordinator=false
http-server.http.port=
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://ip_地址:8080 但是如果你用一台机器进行测试,那么这一台机器将会即作为coordinator,也作为worker。配置文件将会如下所示:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://ip_地址:8080
对以上配置项解析:
coordinator:指定是否运维Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)。
node-scheduler.include-coordinator:是否允许在coordinator服务中进行调度工作。对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worke将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都不会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。
http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP进行内部和外部的所有通讯。
task.max-memory=1GB:一个单独的任务使用的最大内存 (一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUP BY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。 该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光。
discovery-server.enabled:Presto 通过Discovery 服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务。Presto为了简化部署,并且也不想再增加一个新的服务进程,Presto coordinator 可以运行一个内嵌在coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和Presto共享HTTP server并且使用同样的端口。
discovery.uri:Discovery server的URI。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Presto coordinator的uri。修改example.net:,根据你的实际环境设置该URI。注意:这个URI一定不能以“/“结尾。
vim etc/jvm.config #JVM 配置:JVM的命令行选项
-server
-Xmx4G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
vim etc/log.properties #日志级别
com.facebook.presto=INFO
vim etc/node.properties #节点属性:每个节点的环境配置信息
node.environment=production #集群名称。所有在同一个集群中的Presto节点必须拥有相同的集群名称
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff #每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id
node.data-dir=/data/bigdata/presto_data #数据存储目录的位置,最好独立存放,便于presto升级
vim etc/catalog/jmx.properties #Catalog属性:configuration forConnectors(数据源)的配置信息
connector.name=jmx
vim etc/catalog/mysql.properties #数据源,连接mysql
connector.name=mysql
connection-url=jdbc:mysql://mysql_ip:3336
connection-user=root
connection-password=xxxxx
6.运行Presto
后台运行:cd /data/bigdata/presto/bin && ./launcher start
前台运行:cd /data/bigdata/presto/bin && ./launcher run
web监控界面:http://ip_地址:8080/ui/
7.部署presto client:https://prestodb.github.io/docs/current/installation/cli.html
下载:wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.220/presto-cli-0.220-executable.jar
重命名:cp -r presto-cli-0.220-executable.jar presto-cli
赋予执行权限:chmod +x presto-cli
连接源数据mysql:
/data/bigdata/presto-cli --server localhost: --catalog mysql --schema moodscat 参数说明:
--catalog:指定连接数据源,在etc/catalog/mysql.properties中的connector.name指定
--schema:指定连接这个数据实例的具体某个数据库
8.执行数据查询:
推荐用法:
连接全局库:presto-cli --server localhost:8080
查询:
select * from 文件名.库名.表明;
Presto部署指南的更多相关文章
- 首发福利!全球第一开源ERP Odoo系统架构部署指南 电子书分享
引言 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规 ...
- [转]Nginx反向代理和负载均衡部署指南
Nginx反向代理和负载均衡部署指南 1. 安装 1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最 ...
- 比hive快10倍的大数据查询利器presto部署
目前最流行的大数据查询引擎非hive莫属,它是基于MR的类SQL查询工具,会把输入的查询SQL解释为MapReduce,能极大的降低使用大数据查询的门槛, 让一般的业务人员也可以直接对大数据进行查询. ...
- Istio 1.4 部署指南
原文链接:Istio 1.4 部署指南 Istio 一直处于快速迭代更新的过程中,它的部署方法也在不断更新,之前我在 1.0 版本中介绍的安装方法,对于最新的 1.4 版本已经不适用了.以后主流的部署 ...
- NTP 集群简略部署指南
NTP 集群简略部署指南 by 无若 1. NTP 简介 网络时间协议(英语:Network Time Protocol,简称NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的 ...
- Web项目部署指南
Web项目部署指南 本文记录了部署Vue项目到阿里云服务器上的过程,其中云服务器的操作系统是CentOS 7,Web服务器用的是nginx.因为项目涉及发送异步请求,而由Flask编写的后端应用监听的 ...
- docker在CentOS7下部署指南
docker只支持CentOS7.x系统,所以近期根据docker官网指南自己搭建了一套,供大家参考. 1.部署Centos7.x系统,查看系统版本. 2.执行 sudo yum update 更新到 ...
- RabbitMQ生产部署指南
像RabbitMQ这样的数据服务通常有许多可调参数.一些配置对开发有很大的意义,但并不适合生产,本指南旨在为此提供帮助 虚拟主机 例如,在单租户环境中,当您的RabbitMQ集群专门为生产中的单个系统 ...
- ELK+KAFKA安装部署指南
一.ELK 背景 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如: ...
随机推荐
- # Clion复制提示信息
Clion复制提示信息 windows: 按着alt 左键点击错误信息(按键点击同时进行) mac:按着option 左键点击错误信息 搞定
- 2019中山纪念中学夏令营-Day20[JZOJ] T1旅游详解
2019中山纪念中学夏令营-Day20[JZOJ] 提高组B组 Team_B组 T1 旅游 Time Limits: 2000 ms Memory Limits: 262144 KB Descrip ...
- iis 8.0 HTTP 错误 404.3 server 2012
最近在学习WCF,发现将网站WCF服务放到IIS上时不能正常运行,从网上搜了一下: 解决方法,以管理员身份进入命令行模式,运行: "%windir%\Microsoft.NET\Framew ...
- Charles学习(三)之使用Map local代理本地静态资源以及配置网页代理在Mac模拟器调试iOS客户端
前言 问题一:我们在App内嵌H5开发的过程中,肯定会遇到一个问题就是我不想在chrome的控制台中调试,我想要在手机上调试,那么如何解决这个问题呢? 问题二:我们期待调试时达到的效果就是和Charl ...
- JavaScript斑马线表格制作
//实现斑马线表格 //方法1: document.write('<table border="1">'); for(var i=1; i<11; i++){ i ...
- docker删除虚悬镜像(临时镜像文件)
在我们构建镜像的过程中,常常需要使用build命令根据Dockerfile进行构建镜像,并且会build很多次,镜像名字也是相同的,那么就会出来下面这种情况
- NTL 库函数
NTL是一个高性能,可移植的C ++库,为任意长度的整数提供数据结构和算法; 可用于整数和有限域上的向量,矩阵和多项式; 可用于任意精度浮点运算. NTL为以下方面提供高质量的最先进算法实现: 任意长 ...
- Zabbix 3.2.6使用注意事项
1.如果需要使用zabbix自带的SMTP发送邮件,需要在安装前升级系统的curl到7.20版本以上 2.zabbix对接PHP 7.1版本,因为PHP 7.1类型强化,会在安装完成zabbix,登录 ...
- linux系统awk命令
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程:?依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f ...
- idea自动抽取变量快捷键设置
file---setting---keymap---搜索variable 如下图:默认是ctrl+alt+v,这里修改成自己比较方便的快捷键即可,我这里设置的是alt+e