1. 下载 & 解压
# 下载
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.220/presto-server-0.220.tar.gz
# 移动到要安装目录
mv presto-server-0.220.tar.gz /opt/
# 解压
tar zxvf presto-server-0.220.tar.gz
# 软链
ln -s presto-server-0.220 presto
2. 配置
如无特殊说明,则每台机器均需要配置
2.1 新建 etc 文件夹
cd prosto
mkdir etc
2.2 配置 node.properties
配置说明:
- node.environment
- 集群名称
- 所有在同一个集群中的Presto节点必须拥有相同的集群名称
- node.id
- 每个Presto节点的唯一标示
- 每个节点的node.id都必须是唯一的
- 在Presto进行重启或者升级过程中每个节点的node.id必须保持不变
- 如果在一个节点上安装多个Presto实例,那么每个Presto节点必须拥有唯一的node.id
- node.data-dir
- 数据存储目录的位置(操作系统上的路径)
- Presto将会把日期和数据存储在这个目录下
详细配置如下:
vim etc/node.properties
# 增加如下内容
node.environment=presto-cluster
node.id=presto-node-1
node.data-dir=/data/presto
2.3 配置 config.properties
所有节点均需要此配置,但coordinator和worker不一样
配置说明:
- coordinator
- 指定是否运维Presto实例作为一个coordinator(调度节点)
- coordinator:接收来自客户端的查询请求,管理每个查询的执行过程
- node-scheduler.include-coordinator
- 是否允许coordinator节点作为worker参与计算,true允许、false不允许
- 如果资源允许的话,建议使用独立的机器承担coordinator工作
- 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
- 注意:这个URI一定不能以“/”结尾
coordinator节点的详细配置如下:
vim etc/config.properties
# 增加如下内容
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8081
query.max-memory=8GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://192.168.30.217:8081
worker节点的详细配置如下:
vim etc/config.properties
# 增加如下内容
coordinator=false
http-server.http.port=8081
query.max-memory=8GB
query.max-memory-per-node=1GB
discovery.uri=http://192.168.30.217:8081
2.4 配置 log.properties
- 日志级别:DEBUG、INFO、WARN、ERROR
vim log.properties
# 增加如下内容
com.facebook.presto=INFO
2.5 配置 hive.properties
配置说明
- connector.name
- 连接器名称
- 不能乱起名,hive必须带上版本号,如:如hive-hadoop2
- hive连接器支持Apache Hadoop 2.x和衍生分布包括Cloudera cdh5和Hortonworks Data Platform (HDP)
- hive.metastore.uri
- 需要与hive的metastore地址和端口对应
- CDH的在/etc/hive/conf/hive-site.xml
- 
- hive.config.resources
- 必须与hadoop集群的配置路径对应
- CDH的在/etc/hadoop/conf路径下
- 
详细配置如下:
mkdir etc/catalog
cd ./catalog
vim hive.properties
# 增加如下内容
connector.name=hive-hadoop2
hive.metastore.uri=thrift://hadoop1:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
2.6 配置 jvm.config
vim etc/jvm.config
# 增加如下内容
-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=300M
2.7 运行
# daemon运行
bin/launcher start
# foreground运行,如果用到supersive运行的话需要是这种方式
bin/launcher run
# 停止
bin/launcher stop
# 查看状态
bin/launcher status
# 查看进程
jps
3. Presto CLI
3.1 下载
# 下载
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.220/presto-cli-0.220-executable.jar
# 重命名
mv presto-cli-0.220-executable.jar presto-cli
# 添加执行权限
chmod +x presto-cli
3.2 运行
# 指定数据库
./presto-cli --server 10.240.0.8:8081 --catalog hive --schema default
# 不指定数据库
./presto-cli --server 10.240.0.8:8081 --catalog hive
运行结果如下,即为成功(因为我的库里没有表所以为空):

参考
- https://blog.csdn.net/zzq900503/article/details/79403949
- http://www.voidcn.com/article/p-thrvtmvf-bqm.html
- https://blog.csdn.net/joomlaer/article/details/45889759
- https://www.cnblogs.com/sorco/p/7060166.html
- https://blog.csdn.net/cakexuexi/article/details/80820170
--Edited from Rpc