一、什么是presto
Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。作为Hive和Pig(Hive和Pig都是通过MapReduce的管道流来完成HDFS数据的查询)的替代者,Presto不仅可以访问HDFS,也可以操作不同的数据源,包括:RDBMS和其他的数据源(例如:Cassandra)。Presto被设计为数据仓库和数据分析产品:数据分析、大规模数据聚集和生成报表。
二、用到的版本
1、jdk:Java 8必须151及以上 (jdk1.8.0_151)
2、presto-server-0.243.2、presto-cli-0.243.2-executable、presto-jdbc-0.243.2
三、集群分配信息
服务器 | 角色 |
master | coordinator节点(主节点) |
slaves1 | worker节点 |
slaves2 | worker节点 |
四、集群安装
1、上传文件到指定目录及解压
[root@master presto]# ll
-rw-r--r--. 1 root root 15231069 Nov 17 08:51 presto-cli-0.243.2-executable.jar
-rw-r--r--. 1 root root 9303677 Nov 17 08:51 presto-jdbc-0.243.2.jar
-rw-r--r--. 1 root root 845160906 Nov 17 08:51 presto-server-0.243.2.tar.gz
[root@master presto]# pwd
/opt/softWare/presto
[root@master presto]# tar -zxvf presto-server-0.243.2.tar.gz
[root@master presto]# ll
-rw-r--r--. 1 root root 15231069 Nov 17 08:51 presto-cli-0.243.2-executable.jar
-rw-r--r--. 1 root root 9303677 Nov 17 08:51 presto-jdbc-0.243.2.jar
drwxr-xr-x. 6 root root 85 Nov 17 09:11 presto-server-0.243.2
-rw-r--r--. 1 root root 845160906 Nov 17 08:51 presto-server-0.243.2.tar.gz
2、创建data文件夹
[root@master presto]# mkdir data
[root@master presto]# ll
total 849320
drwxr-xr-x. 3 root root 42 Nov 17 10:58 data
-rw-r--r--. 1 root root 15231069 Nov 17 08:51 presto-cli-0.243.2-executable.jar
-rw-r--r--. 1 root root 9303677 Nov 17 08:51 presto-jdbc-0.243.2.jar
drwxr-xr-x. 6 root root 85 Nov 17 09:11 presto-server-0.243.2
-rw-r--r--. 1 root root 845160906 Nov 17 08:51 presto-server-0.243.2.tar.gz
3、将/opt/softWare/presto分别复制到slaves1和slaves2对应的位置
4、在每台机器上presto文件夹下创建软连接
[root@master presto]# ln -s presto-server-0.243.2 ln_presto
[root@master presto]# ll
total 849320
drwxr-xr-x. 3 root root 42 Nov 17 10:58 data
lrwxrwxrwx. 1 root root 21 Nov 17 09:01 ln_presto -> presto-server-0.243.2
-rw-r--r--. 1 root root 15231069 Nov 17 08:51 presto-cli-0.243.2-executable.jar
-rw-r--r--. 1 root root 9303677 Nov 17 08:51 presto-jdbc-0.243.2.jar
drwxr-xr-x. 6 root root 85 Nov 17 09:11 presto-server-0.243.2
-rw-r--r--. 1 root root 845160906 Nov 17 08:51 presto-server-0.243.2.tar.gz
软连接可以理解为windows上面的某个文件夹的快捷方式:
5、在每台机器的软连接中创建etc文件夹
[root@master ln_presto]# mkdir etc
[root@master ln_presto]# ls
bin etc lib NOTICE plugin README.txt
6,在etc中创建配置文件,以主节点为例
(1)创建node.properties文件
node.environment=production
node.id=presto-master
node.data-dir=/opt/softWare/presto/data
其他节点需要更改node.id等内容;
node.environment是集群名称。所有在同一个集群中的Presto节点必须拥有相同的集群名称。
node.id是每个Presto节点的唯一标识。
每个节点的node.id都必须是唯一的。
在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。
如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。
node.data-dir:数据存储目录的位置(操作系统上的路径)。Presto将会把日期和数据存储在这个目录下。
(2)创建jvm.config文件
-server
-Xmx3G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
(3)创建config.properties文件
注意,这里coordinator节点和worker节点的配置不一样
coordinator节点配置:
#允许这个Presto实例充当协调器;true:协调者,false:表示workers
coordinator=true
# 否允许在coordinator服务中进行调度工作。对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worker将会降低查询性能。
因为如果一个服务器作为worker使用,大部分的资源都会被worker占用,就不会有足够的资源进行关键任务调度、管理和监控查询执行。
node-scheduler.include-coordinator=false
# 指定HTTP服务器的端口。Presto使用HTTP进行所有内部和外部通信。
http-server.http.port=8099
# 整个集群可以使用的最大用户执行内存
query.max-memory=2GB
# 每个机器上用于执行用户任务的内存大小
query.max-memory-per-node=1GB
# 每个节点上用于系统与用户任务的内存大小,该参数据包括上一个参数,多出系统所用内存,比如系统分配读写等,超出限制将kill
query.max-total-memory-per-node=2GB
# Presto使用发现服务查找集群中的所有节点。每个Presto实例将在启动时向DiscoveryService注册。为了简化部署和避免运行额外的服务,Presto> 协调器可以运行发现服务的嵌入式版本。它与Presto共享HTTP服务器,因此使用相同的端口。
discovery-server.enabled=true
# 访问地址;发现号服务器的URI
discovery.uri=http://master:8099
worker节点配置:
coordinator=false
http-server.http.port=8099
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://master:8099
(4)新建日志文件log.properties
com.facebook.presto=INFO
五、Presto的命令
#后台启动
bin/launcher start
#前台启动
bin/launcher run
#停止
bin/launcher stop
#重启
bin/launcher restart
六、页面访问