一、官网教程

https://prestodb.io/docs/current/installation.html

二、环境准备

Presto需要:Linux   Java8_64

JDK自行安装,不用多说了

三、单节点部署

1.presto下载

下载安装包:https://prestodb.io/download.html

时间:2020-08-03,最新版本0.238.2,大小:800M左右

presto-server-0.238.2.tar.gz
presto-cli-0.238.2-executable.jar
presto-jdbc-0.238.2.jar

2.上传解压

1.所有应用安装到/data下(个人习惯),创建presto目录:

mkdir presto

2.上传presto文件,并解压

tar -xzvf presto-server-0.238.2.tar.gz

3.配置Presto

在安装目录下创建一个etc目录。在etc目录下配置以下信息:

  • 节点属性(Node Properties):每个节点的环境配置信息
  • JVM配置(JVM Config):JVM的命令行选项
  • 配置属性(Config Properties):PrestoServer的配置信息
  • 日志级别(Log Properties):日志级别配置信息
  • Catalog属性(Catalog Properties):连接器配置信息(数据源)

3.1 Node Properties

节点属性配置文件:etc/node.properties包含针对于每个节点的特定的配置信息。一个节点就是在一台机器上安装的一个实例。这个配置文件一般情况下是在Presto第一次安装的时候,由部署系统创建的,一个etc/node.properties配置文件至少包含如下配置信息:

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

各配置参数描述如下:

node.enviroment:集群名称,所有在同一个集群中的Presto节点必须拥有相同的集群名称,这个名字就是控制台右上角展示的enviroment。

node.id:每个Presto节点的唯一标识,每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。

node.data-dir:数据存储目录的位置(操作系统上的路径),Presto将会把日期和数据存储在这个目录下。

具体配置:

cd ./etc
vi node.properties#输入配置
node.environment=test_bob
node.id=bigdata_test1
node.data-dir=/data/presto/presto-server-0.238.2/data

3.2 JVM Config

JVM配置文件:etc/jvm.config,包含一系列在启动JVM时候需要使用的命令行选项。

一个典型的etc/jvm.config配置文件如下:

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-XX:ReservedCodeCacheSize=256M

由于OutOfMemoryError将会导致JVM处于不一致状态,一般的处理措施是将写入dump headp中的信息,然后强制终止进程。老版的可添加-XX:OnOutOfMemoryError=kill -9 %p,新版的用-XX:+ExitOnOutOfMemoryError。

具体的内存配置大小可以根据机器的内存大小设置,用命令free -g查看,不宜设置过大,也不能太小。由于测试机器内存只有32G,所以配置就用了上面的配置。

具体配置:

cd ./etc
vi jvm.config#输入配置
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-XX:ReservedCodeCacheSize=256M

3.3 Config Properties

Presto配置文件:etc/config.properties包含了Presto Server的所有配置信息。每个Presto Server即可以是一个coordinator也可以是一个worker。但是在大型集群中,处于性能考虑,建议单独用一台机器作为coordinator(调度节点)

一个coordinator的配置至少包含以下信息:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080

一个worker的配置至少包含以下信息:

coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://example.net: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
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080

各配置项解释:

coordinator:指定是否运维Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)。

node-scheduler.include-coordinator:是否允许在coordinator服务中进行调度工作(即作为coordinator又作为worker。对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worker将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。

http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP进行内部和外部的所有通讯。

query.max-memory:可查询最大内存。

query.max-memory-per-node:可查询最大单用户内存。

query.max-total-memory-per-node:一个查询可使用的最大用户和内存。

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一定不能以“/“结尾。

具体配置:

vi config.properties#调度节点配置
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=9666
query.max-memory=30GB
query.max-memory-per-node=3GB
query.max-cpu-time=4h
discovery-server.enabled=true
discovery.uri=http://yy-t-bigdata1.niwodai.com:9666
#选择性配置
scheduler.http-client.request-timeout=10m
scheduler.http-client.idle-timeout=10m
node-manager.http-client.request-timeout=10m
node-manager.http-client.idle-timeout=10m
memoryManager.http-client.request-timeout=10m
memoryManager.http-client.idle-timeout=10m
task.max-worker-threads=32#worker节点配置
coordinator=false
http-server.http.port=9666
query.max-memory=10GB
query.max-memory-per-node=1GB
discovery.uri=http://yy-t-bigdata1.niwodai.com:9666

3.4 Log Properties

日志配置文件:etc/log.properties。类似Java的日志级别,包括INFO、DEBUG、ERROR。

com.facebook.presto=INFO

3.5 Catalog Properties

Presto通过connectors访问数据。这些connectors挂载在catalogs上。 connector可以提供一个catalog中所有的schema和表。 例如: Hive connector 将每个hive的database都映射成为一个schema, 所以如果hive connector挂载到了名为hive的catalog, 并且在hive的web有一张名为clicks的表, 那么在Presto中可以通过hive.web.clicks来访问这张表。
通过在etc/catalog目录下创建catalog属性文件来完成catalogs的注册。
例如:
如果要创建jmx数据源的连接器,可以创建一个etc/catalog/jmx.properties文件,文件中的内容如下,完成在jmxcatalog上挂载一个jmxconnector:
connector.name=jmx

如果要创建hive数据源的连接器,可以创建一个etc/catalog/hive.properties文件,文件中的内容如下,完成在hivecatalog上挂载一个hiveconnector:
connector.name=hive-hadoop2
hive.metastore.uri=thrift://example.net:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml

参数说明
connector.name为连接器名称,hive的话需要加上版本号例如hive-hadoop2
hive.metastore.uri需要与hive的metastore地址和端口对应。
一般配置在/etc/hive/conf/hive-site.xml中。

具体配置:

mkdir catalog
cd catalog
vi hive.properties#输入配置
connector.name=hive-hadoop2
hive.metastore.uri=thrift://yy-t-bigdata2.niwodai.com:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml, /etc/hadoop/conf/hdfs-site.xml
hive.allow-drop-table=true
hive.storage-format=ORC
hive.metastore-cache-ttl=1s
hive.metastore-refresh-interval=1s
hive.metastore-timeout=35m
hive.max-partitions-per-writers=1000

配置完成,最终etc下:catalog  config.properties  jvm.config  log.properties  node.properties

3.6 启动运行presto

在安装目录的bin/launcher文件,就是启动脚本。Presto可以使用如下命令作为一个后台进程启动:

bin/launcher start

另外,也可以在前台运行, 日志和相关输出将会写入stdout/stderr

bin/launcher run

停止

bin/launcher stop

重启

bin/launcher restart

查看服务进程

bin/launcher status

查看进程

ps -aux|grep PrestoServer 或 jps

启动完之后,日志将会写在var/log目录下,该目录下有如下文件:

launcher.log: 这个日志文件由launcher创建,并且server的stdout和stderr都被重定向到了这个日志文件中。 这份日志文件中只会有很少的信息,包括:
在server日志系统初始化的时候产生的日志和JVM产生的诊断和测试信息。
server.log: 这个是Presto使用的主要日志文件。一般情况下,该文件中将会包括server初始化失败时产生的相关信息。这份文件会被自动轮转和压缩。
http-request.log: 这是HTTP请求的日志文件,包括server收到的每个HTTP请求信息,这份文件会被自动轮转和压缩。

3.7 连接hive测试验证

将一开始下载的包:presto-cli-0.238.2-executable.jar,重命名为presto

mv presto-cli-0.238.2-executable.jar prestochmod +x presto

使用beeline连接hive,show tables;

再进入presto cli,使用命令:

./presto --server http://yy-t-bigdata1.niwodai.com:9666 --catalog hive --schema defaultshow tables;

比较与hive查出来的是否一致。

四、集群配置

1.架构

192.168.0.141:coordinator调度节点
192.168.0.142:worker节点
192.168.0.143:worker节点
192.168.0.144:worker节点
192.168.0.145:worker节点
192.168.0.146:worker节点

2.传输(SCP)

scp -r /data/prosto user@remote_ip:/data#如果data是root权限,先切换用户sudo su
scp -r /data/prosto remote_ip:/data#进入目标机器,切换presto权限
chown -R user:usergreoup presto

3.修改配置

3.1 修改node.properties

vi node.properties#修改node.id
node.environment=test_bob
node.id=bigdata_test2
node.data-dir=/data/presto/presto-server-0.238.2/data

3.2修改config.properties

vi config.properties#worker配置
coordinator=false
http-server.http.port=9666
query.max-memory=10GB
query.max-memory-per-node=1GB
discovery.uri=http://yy-t-bigdata1.niwodai.com:9666

4.启动

与单节点启动方式一样。

注意:先删除data下etc和plugin目录,这个是从第一个节点带过来的,不然启动会有冲突!

5.一键重启

在141机器上先配置免密:

然后写一个shell脚本,远程重启worker节点:

ssh 192.168.0.142 "ps -ef | grep presto-server  | grep -v grep | grep PrestoServer | awk '{print $2}' | xargs kill -9;/data/presto/presto-server-0.238.2/bin/launcher restart" &

五、资源组

1.何为资源组

Presto的资源组机制,是从资源分配的角度来控制集群的整体查询负载。Presto会在集群整体资源下开辟多个资源组,每一个提交的查询都会分配到一个特定的资源组执行。在特定资源组A开启一个新的查询B之前,会检查当前A的资源负载是否超过了集群给A分配的资源量;如果已经超过了,资源组机制会阻塞新到的查询B,使其处于排队状态甚至直接拒绝。

资源可以分成CPU,内存,带宽,磁盘等维度,Presto资源组主要定义了内存和CPU两个维度。

2.配置

2.1 resource-groups.properties

在Presto Coordinator节点安装目录etc下新建一个文件 resource-groups.properties,然后将resource-groups.config-file 指向资源组配置文件的路径,比如:

cd etc
vi resource-groups.properties#输入配置
resource-groups.configuration-manager=file
resource-groups.config-file=etc/resource_groups.json

 2.2 resource_groups.json

2.2.1 资源组主要配置项
name(必须):特定资源组名称;
maxQueued(必须):排队任务的最大数量,当达到此阈值后,新的任务将被拒绝;
hardConcurrencyLimit(必须):任何时刻处于"RUNNING"状态的查询的最大数量;
softMemoryLimit(必须):这个资源组最大内存使用量,当达到此阈值后,新任务进入排队。可以指定为一个绝对值(如100GB),也可以指定对集群内存总量的百分比(如60%);
softCpuLimit(可选):一个周期里可以使用cpu的时间,hardCpuLimit也必须指定,在达到该阈值后,该资源组内占据最大CPU资源的查询的CPU资源会被减少;
hardCpuLimit(可选):一个周期里可以使用的cpu时间,在达到该阈值后,新的查询会进行排队而非直接执行;
schedulingPolicy(可选):指定查询从排队到运行状态的调度策略。
【这里解决用户问题2,参照不同的调度策略,可能会有不同的资源分配顺序】
主要有以下类型:
fair(default):当一个资源组下,有几个子资源组都同时有排队的查询,这些子资源组间按照定义的顺序,轮流获得资源,同一个子资源组的查询按照先来先执行的规则获取资源;
weighted_fair :采取这种策略的每一个资源组会配置一个属性schedulingWeight,每个子资源组会计算一个比值:
当前子资源组查询数量/schedulingWeight,比值越小的子资源组越先得到资源;
weighted:默认值为1,子资源组的schedulingWeight越大,越先得到资源;
query_priority:所有的子资源组都要配置为 query_priority ,排队的查询严格按照指定的query_priority大小顺序来进行获取资源。

2.2.2 资源组选择器
user(可选):匹配用户名;
source(可选):匹配连接源,如cli、jdbc、pyhive等;
queryType(可选):匹配任务类型;
clientTags(可选):tag列表,每个tag必须在用户提交任务的tag列表里;
group(必须):这些任务运行的组。
【这里解决用户问题3,可以对不同的查询类型queryType,比如EXPLAIN、INSERT、SELECT和DATA_DEFINITION等类型,匹配到不同的资源组,分配不同的资源,来执行查询】

具体配置:

vi resource_groups.json{"rootGroups": [{"name": "global","softMemoryLimit": "100%","hardConcurrencyLimit": 15,"maxQueued": 100,"schedulingPolicy": "weighted","subGroups": [{"name": "operation","softMemoryLimit": "30%","softCpuLimit": "10h","hardCpuLimit": "10h","hardConcurrencyLimit": 8,"maxQueued": 20,"schedulingWeight": 8,"runningTimeLimit": "30m","queuedTimeLimit" : "10m"}{"name": "default","softMemoryLimit": "30%","softCpuLimit": "10h","hardCpuLimit": "10h","hardConcurrencyLimit": 15,"maxQueued": 20,"schedulingWeight": 2,"runningTimeLimit": "30m","queuedTimeLimit" : "10m"}]},{"name": "admin","softMemoryLimit": "100%","softCpuLimit": "8h","hardCpuLimit": "8h","runningTimeLimit": "60m","hardConcurrencyLimit": 15,"maxQueued": 20,"schedulingPolicy": "fair"}],"selectors": [{"source": "operation","group": "global.operation"},{"source": "default","group": "global.default"},{"user": "presto","group": "global.default"}],"cpuQuotaPeriod": "1m"
}vi queue_config.json{"queues": {"user.${USER}": {"maxConcurrent": 25,"maxQueued": 25},"datamart": {"maxConcurrent": 25,"maxQueued": 50,"softMemoryLimit": "50%","softCpuLimit":"3h","hardCpuLimit": "2h"},"admin": {"maxConcurrent": 10,"maxQueued": 35},"global": {"maxConcurrent": 3,"maxQueued": 5,"softMemoryLimit": "10%","softCpuLimit":"45m","hardCpuLimit": "35m"}},"rules": [{"user": "presto","queues": ["admin"]},{"user": "datamart","queues": ["datamart"]},{"user": "zhang","queues" : ["global"]},{"user": "lili","queues" : ["global"]}]
}

六、参考

https://blog.csdn.net/zzq900503/article/details/79403949

https://zhuanlan.zhihu.com/p/99125164

Presto安装部署详细说明相关推荐

  1. PHP7.2与apache环境安装部署详细流程

    php-agent 安装部署详细流程 一.环境 测试机内网IP: 10.128.5.98 用户名口令: root/oneapm21 cat /etc/system-release cat /etc/i ...

  2. Kettle分布式集群安装部署详细步骤和使用分布式Kettle集群示例

    Kettle分布式集群安装部署详细步骤和使用分布式Kettle集群示例 一.下载kettle和mysql驱动 二.相关技术博客 三.Kettle分布式集群环境准备 四.解压kettle 五.执行Kit ...

  3. HBase 1.2.6 完全分布式集群安装部署详细过程

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...

  4. 【大数据监控】Prometheus、Node_exporter、Graphite_exporter安装部署详细文档

    目录 Prometheus 简介 下载软件包 安装部署 创建用户 创建Systemd服务 修改配置文件prometheus.yml 启动Prometheus node exporter 下载软件包 安 ...

  5. Maven安装部署详细步骤(Win7系统)

    1 下载Maven安装包,如图选择第二个进行下载. Maven – Download Apache Maven 2. 将安装包解压到D:\Program Files,如图所示, 3. 配置环境环境变量 ...

  6. CDH 6.3.2 离线安装部署详细教程 (亲妈级别教学,有手就行)

    CDH6.3.2安装手册 更新文档见 https://gitee.com/baomili/bigdata-notes 最新最全 文章目录 @[toc] 参考博客 官网地址 1 下载CM和CDH 2 C ...

  7. 小米node2红外_小米监控open-falcon-0.2安装部署详细配置

    一.环境准备 1.配置阿里云yum源 #wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7 ...

  8. k8s二进制安装部署(详细)

    一.生产环境部署k8s常见的几种方式 说明:文章内使用到的yaml可到博客资源内下载 k8s-yaml 1.kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubea ...

  9. hadoop分布式安装部署详细视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)

    参考资源下载: http://pan.baidu.com/s/1ntwUij3 视频安装教程:hadoop安装.flv VirtualBox虚拟机:hadoop.part1-part5.rar had ...

最新文章

  1. C#编程应用--线程与委托
  2. web项目怎么打包上线_高级前端web工程师简历范文,【工作经历+项目经验+自我评价】怎么写...
  3. linux中使用xshell远程连接
  4. 小括号教学设计导入_2020年小学教师资格证复习资料之小学课堂教学导入-教师吧...
  5. WAM计算机术语,最新的计算机一级考试MSOffice模拟试题及答案
  6. python 38day--CSS简介
  7. android 仿搜索动画,Android仿京东顶部搜索框滑动伸缩动画效果
  8. PL/SQL学习笔记之存储过程
  9. mysql 修改字段为主键自增_「MySQL整理」 MySQL语法,如何操作数据表
  10. 去掉a标签下划线_编辑器、HTML基础、编码、基础标签
  11. Win10系统无法安装字体显示字体无效
  12. 去除图片链接边框及其链接虚线
  13. 干货分享:Totoro 在自动化测试领域的深耕与收获
  14. 图像超分辨率综述学习之:Deep Learning for Image Super-resolution A Survey
  15. 计算机整机配置原则,电脑主机高端配置标准 电脑高端主机怎么配置
  16. 非洲勒索软件、僵尸网络攻击有所增加——但在线诈骗仍构成最大威胁
  17. activiti6官方示例笔记
  18. 使用微信小程序 富文本编辑器组件 editor
  19. 【源码分析】Spring的循环依赖(setter注入、构造器注入、多例、AOP)
  20. linux mbr修复 diskgen,教你怎么修复MBR (附工具)

热门文章

  1. 数据处理中对excel的一些操作
  2. signature=e260e08d0d5973d18c37cc596c51cae8,女性不妊症領域におけるレーザー手術の現況...
  3. ORA-00942: 表或视图不存在解决方法
  4. 总结Cocos2d-x 3.x版本的一些变化
  5. D8016 “/ZI”和“/clr”命令行选项不兼容
  6. 你今天玩游戏了吗?游戏道具了解下
  7. 开源的词法分析器_将意图分析器用于您的开源家庭自动化项目
  8. Open3d利用彩色图和深度图生成点云进行室内三维重建
  9. 一些比较好的博客归纳和自己遇到的一些问题 -ffmpeg
  10. CBV与FBV的区别/CBV源码剖析