Presto部署指南

1.Presto简介说明

  Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。

  Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。

  Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储。一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。

  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=8080
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=8080
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=8080
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:8080,根据你的实际环境设置该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:8080 --catalog mysql --schema moodscat

参数说明:
--catalog:指定连接数据源,在etc/catalog/mysql.properties中的connector.name指定
--schema:指定连接这个数据实例的具体某个数据库

8.执行数据查询:

  

猜你喜欢

转载自www.cnblogs.com/chenjw-note/p/10978878.html