PRESTO安装部署和参数说明(一)
PRESTO部署和参数说明(一)
一,概要
在部署和使用presto的过程中,在此记录一下部署记录和使用记录以及需要注意的事项。本人使用的presto版本是0.214,3台redhat虚拟机。使用背景:客户需要定期查询大批量的数据,最后选择了sqoop工具定期导入hive,并且定期删除定期更新,因为没有找到是个实时增量导入的工具,批量执行mapreduce任务,然后使用分布式查询引擎presto查询数据。
二,安装部署
在官网下载最新的安装包和客户端包:
server安装包:https://prestodb.io/docs/current/installation/deployment.html
client连接包:https://prestodb.io/docs/current/installation/cli.html
我们有三台测试机器,测试机器的版本类型为:
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release: 6.7
Codename: Santiago
我们要部署3个worker和一个Coordinator(附带一个Discovery Server节点)节点,并且这个master节点和一个worker节点部署同一台机器上。
第一步:下载完成之后,解压压缩包
tar -zxvf presto-server-0.214.tar.gz
第二步:解压之后,在目录presto-server-0.214中创建etc文件夹。进去etc文件夹,建立配置文件,我这里建立配置文件如下
config.properties: presto服务配置
node.properties:每个节点特定配置
jvm.properties:java虚拟机的命令行选项
log.properties:输出的日志级别
catalog目录:每个连着者配置
咱们一个一个的讲解:
config.properties
如果是Coordinator节点:注意 EXAMPLE.COM是指Coordinator节点的域名或者IP
1 2 3 4 5 6 7 8 | coordinator= true node-scheduler.include-coordinator= true http-server.http.port=8080 query.max-memory=10GB query.max-memory-per-node=3GB query.max-total-memory-per-node=3GB discovery-server.enabled= true discovery.uri=http: //EXAMPLE .COM:8080 |
如果是worker节点:
1 2 3 4 5 6 | coordinator= false http-server.http.port=8080 query.max-memory=10GB query.max-memory-per-node=3GB query.max-total-memory-per-node=3GB discovery.uri=http: //EXAMPLE .COM:8080 |
参数解释:
coordinator: 是否运行该实例为coordinator(接受client的查询和管理查询执行)。
node-scheduler.include-coordinator:coordinator是否也作为work。对于大型集群来说,在coordinator里做worker的工作会影响查询性能。
http-server.http.port:指定HTTP端口。Presto使用HTTP来与外部和内部进行交流。
query.max-memory: 查询能用到的最大总内存
query.max-memory-per-node: 查询能用到的最大单结点内存
discovery-server.enabled:
Presto使用Discovery服务去找到集群中的所有结点。每个Presto实例在启动时都会在Discovery服务里注册。这样可以简化部署,
不需要额外的服务,Presto的coordinator内置一个Discovery服务。也是使用HTTP端口。
discovery.uri: Discovery服务的URI。将example.net:8080替换为coordinator的host和端口。这个URI不能以斜杠结尾,这个错误需特别注意,不然会报404错误。
另外还有以下属性:
jmx.rmiregistry.port: 指定JMX RMI的注册。JMX client可以连接此端口
jmx.rmiserver.port: 指定JXM RMI的服务器。可通过JMX监听。
node.properties
1 2 3 | node.environment=production node. id =node01 node.data- dir = /var/presto/data |
解释:
node.environment: 环境名字,Presto集群中的结点的环境名字都必须是一样的。
node.id: 唯一标识,每个结点的标识都必须是为一的。就算重启或升级Presto都必须还保持原来的标识。
node.data-dir: 数据目录,Presto用它来保存log和其他数据
jvm.properties
1 2 3 4 5 6 7 8 | -server -Xmx5G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError= kill -9 %p |
JVM配置文件etc/jvm.config,包含启动Java虚拟机时的命令行选项。格式是每一行是一个命令行选项。此文件数据是由shell解析,所以选项中包含空格或特殊字符会被忽略。
log.properties
1 | com.facebook.presto=INFO |
备注:日志级别有四种,DEBUG, INFO, WARN and ERROR
catalog目录
在这里以hive为例子,我在客户端的配置如下:
1 2 3 | connector.name=hive-hadoop2 hive.metastore.uri=thrift: //10 .18.14.170:9083 hive.config.resources= /etc/alternatives/hadoop-conf/core-site .xml, /etc/alternatives/hadoop-conf/hdfs-site .xml |
第三步:启动presto服务和客户端命令
启动presto-server,进入目录bin目录执行。
./launcher start
其余选项可供参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Usage: launcher [options] command Commands: run, start, stop, restart, kill , status Options: -h, --help show this help message and exit - v , --verbose Run verbosely --etc- dir =DIR Defaults to INSTALL_PATH /etc --launcher-config=FILE Defaults to INSTALL_PATH /bin/launcher .properties --node-config=FILE Defaults to ETC_DIR /node .properties --jvm-config=FILE Defaults to ETC_DIR /jvm .config --config=FILE Defaults to ETC_DIR /config .properties --log-levels- file =FILE Defaults to ETC_DIR /log .properties --data- dir =DIR Defaults to INSTALL_PATH --pid- file =FILE Defaults to DATA_DIR /var/run/launcher .pid --launcher-log- file =FILE Defaults to DATA_DIR /var/log/launcher .log (only in daemon mode) --server-log- file =FILE Defaults to DATA_DIR /var/log/server .log (only in daemon mode) -D NAME=VALUE Set a Java system property |
启动presto-cli客户端:
把下载的jar包:presto-cli-0.214-executable.jar 重命名为:presto 并且赋予权限
chmod +x presto
执行进去命令以hive为例子:
/presto --server localhost:8080 --catalog hive --schema default
客户端其他命令供参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | NAME presto - Presto interactive console SYNOPSIS presto [--access-token <access token>] [--catalog <catalog>] [--client-info <client-info>] [--client-request-timeout <client request timeout>] [--client-tags <client tags>] [--debug] [--execute <execute>] [(-f < file > | -- file < file >)] [(-h | --help)] [--http-proxy <http-proxy>] [--ignore-errors] [--keystore-password <keystore password>] [--keystore-path <keystore path>] [--krb5-config-path <krb5 config path>] [--krb5-credential-cache-path <krb5 credential cache path>] [--krb5-disable-remote-service- hostname -canonicalization] [--krb5-keytab-path <krb5 keytab path>] [--krb5-principal <krb5 principal>] [--krb5-remote-service-name <krb5 remote service name>] [--log-levels- file <log levels file >] [--output- format <output- format >] [--password] [--resource-estimate <resource-estimate>...] [--schema <schema>] [--server <server>] [--session <session>...] [--socks-proxy <socks-proxy>] [-- source < source >] [--truststore-password <truststore password>] [--truststore-path <truststore path>] [--user <user>] [--version] OPTIONS --access-token <access token> Access token --catalog <catalog> Default catalog --client-info <client-info> Extra information about client making query --client-request-timeout <client request timeout> Client request timeout (default: 2m) --client-tags <client tags> Client tags --debug Enable debug information --execute <execute> Execute specified statements and exit -f < file >, -- file < file > Execute statements from file and exit -h, --help Display help information --http-proxy <http-proxy> HTTP proxy to use for server connections --ignore-errors Continue processing in batch mode when an error occurs (default is to exit immediately) --keystore-password <keystore password> Keystore password --keystore-path <keystore path> Keystore path --krb5-config-path <krb5 config path> Kerberos config file path (default: /etc/krb5 .conf) --krb5-credential-cache-path <krb5 credential cache path> Kerberos credential cache path --krb5-disable-remote-service- hostname -canonicalization Disable service hostname canonicalization using the DNS reverse lookup --krb5-keytab-path <krb5 keytab path> Kerberos key table path (default: /etc/krb5 .keytab) --krb5-principal <krb5 principal> Kerberos principal to be used --krb5-remote-service-name <krb5 remote service name> Remote peer's kerberos service name --log-levels- file <log levels file > Configure log levels for debugging using this file --output- format <output- format > Output format for batch mode [ALIGNED, VERTICAL, CSV, TSV, CSV_HEADER, TSV_HEADER, NULL] (default: CSV) --password Prompt for password --resource-estimate <resource-estimate> Resource estimate (property can be used multiple times ; format is key=value) --schema <schema> Default schema --server <server> Presto server location (default: localhost:8080) --session <session> Session property (property can be used multiple times ; format is key=value; use 'SHOW SESSION' to see available properties) --socks-proxy <socks-proxy> SOCKS proxy to use for server connections -- source < source > Name of source making query --truststore-password <truststore password> Truststore password --truststore-path <truststore path> Truststore path --user <user> Username --version Display version information and exit |
查看web界面 http://EXAMPLE.COM:8080/ui/,举例说明:至此部署成功
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目