Presto【部署 01】Presto服务安装配置启动验证及客户端web工具Yanagishima安装配置验证(详细配置说明+Yanagishima已编译文件分享)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Presto【部署 01】Presto服务安装配置启动验证及客户端web工具Yanagishima安装配置验证(详细配置说明+Yanagishima已编译文件分享)

说明: 本次使用的安装包为 presto-server-0.196.tar.gz 大小(461M)《官网》可下载的最新版本 presto-server-0.266.tar.gz 大小(1.1G) 🐌 我使用的是乞丐版 (1核2G) 的腾讯云服务器,故安装体积较小的版本进行测试。

1.Presto安装配置

1.1 安装

安装是一如既往的简单:

tar -zxvf presto-server-0.196.tar.gz
mv presto-server-0.196 /usr/local/presto

1.2 配置

官网有详细的《配置说明》参考官网进行配置(看似是最新版本的说明,其实大家都懂的)😄

在安装目录中(我的是/usr/local/presto)创建一个etc目录。在这个目录中放入以下配置信息:

  • 节点属性:每个节点的环境配置信息
  • JVM 配置:JVM 的命令行选项
  • 配置属性:Presto server 的配置信息
  • Catalog属性:configuration for Connectors(数据源)的配置信息

1️⃣ 节点属性(Node Properties)

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

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

本次使用的配置为:

node.environment=production
node.id=presto-tcloud
node.data-dir=/usr/local/presto-data

配置信息描述如下:

  • node.environment:集群名称。所有在同一个集群中的 Presto 节点必须拥有相同的集群名称。
  • node.id:每个 Presto 节点的唯一标示。每个节点的 node.id 都必须是唯一的。在 Presto 进行重启或者升级过程中每个节点的 node.id 必须保持不变。如果在一个节点上安装多个 Presto 实例(例如:在同一台机器上安装多个 Presto 节点),那么每个 Presto 节点必须拥有唯一的 node.id。
  • node.data-dir: 数据存储目录的位置(操作系统上的路径)。Presto 将会把日期和数据存储在这个目录下(官方建议此目录放在安装目录之外)

2️⃣ JVM配置

JVM 配置文件(老生常谈的配置了),etc/jvm.config, 包含一系列在启动 JVM 的时候需要使用的命令行选项。这份配置文件的格式是:一系列的选项,每行配置一个单独的选项。由于这些选项不在 shel l命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开,java 程序也不会将这些选项分开,而是作为一个命令行选项处理。

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

本次使用的配置为:

-server
-Xmx1G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

由于 OutOfMemoryError 将会导致 JVM 处于不一致状态,所以遇到这种错误的时候我们一般的处理措施就是将 dump headp 中的信息(用于 debugging),然后强制终止进程。Presto 会将查询编译成字节码文件,会生成很多class,需要增大 Perm 区的大小(在 Perm 中主要存储 class)并且要允许 Jvm class unloading。

3️⃣ 配置属性(Config Properties)

Presto 的配置文件:etc/config.properties 包含了 Presto server 的所有配置信息。每个 Presto server 既是一个 coordinatorn. 协调人,统筹者 也是一个 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
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
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=true
node-scheduler.include-coordinator=true
http-server.http.port=8883
query.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://tcloud:8883

配置信息描述:

  • coordinator:指定是否运维 Presto 实例作为一个 coordinator (接收来自客户端的查询情切管理每个查询的执行过程)。
  • node-scheduler.include-coordinator:是否允许在 coordinator 服务中进行调度工作。对于大型的集群,在一个节点上的 Presto server 即作为 coordinator 又作为 work e将会降低查询性能。因为如果一个服务器作为 worker 使用,那么大部分的资源都不会被 worker 占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。
  • http-server.http.port:指定 HTTP server 的端口。Presto 使用 HTTP 进行内部和外部的所有通讯。
  • query.max-:查询相关的内存设置。
  • 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一定不能以“/“结尾。
  • task.max-memory:一个单独的任务使用的最大内存 (一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUP BY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。 该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光。

其他配置:

You may also wish to set the following properties:

  • jmx.rmiregistry.port: Specifies the port for the JMX RMI registry. JMX clients should connect to this port.
  • jmx.rmiserver.port: Specifies the port for the JMX RMI server. Presto exports many metrics that are useful for monitoring via JMX.

4️⃣ 日志级别

日志配置文件:etc/log.properties。在这个配置文件中允许你根据不同的日志结构设置不同的日志级别。每个 logger 都有一个名字(通常是使用 logger 的类的全标示类名)Loggers 通过名字中的 . 来表示层级和集成关系。 (像java里面的包)log 配置信息 本次使用的也是这个配置

com.facebook.presto=INFO

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 的注册。例如:可以先创建一个etc/catalog/jmx.properties 文件,文件中的内容如下,完成在 jmxcatalog 上挂载一个 jmxconnector:
connector.name=jmx

可查看 Connectors 的 详细配置选项

1.3 启动

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

[root@tcloud presto]# bin/launcher start
Started as 19648

另外,也可以在前台运行,日志和相关输出将会写入 stdout/stderr(可以使用类似 daemontools 的工具捕捉这两个数据流):

bin/launcher run

其他命令:

bin/launcher --help
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

启动完之后,日志将会写在设置的node.data-dir 目录下的 var/log 目录下,有如下文件:

  • launcher.log:这个日志文件由 launcher 创建,并且 server 的 stdout 和 stderr 都被重定向到了这个日志文件中。这份日志文件中只会有很少的信息,包括:在server日志系统初始化的时候产生的日志和JVM产生的诊断和测试信息。
  • server.log:这个是Presto使用的主要日志文件。一般情况下,该文件中将会包括server初始化失败时产生的相关信息。这份文件会被自动轮转和压缩。
  • http-request.log: 这是HTTP请求的日志文件,包括server收到的每个HTTP请求信息,这份文件会被自动轮转和压缩。
# server.log 的最后一行
2021-12-07T12:00:19.703+0800    
INFO    main    com.facebook.presto.server.PrestoServer 
======== SERVER STARTED ========

1.4 验证

前端验证 http://tcloud:8883

2. Yanagishima安装配置

2.1 Quick Start

Yanagishima的GitHu 有 Quick Start:

git clone https://github.com/yanagishima/yanagishima.git
cd yanagishima
git checkout -b [version] refs/tags/[version]
./gradlew distZip
cd build/distributions
unzip yanagishima-[version].zip
cd yanagishima-[version]
vim config/application.yml
nohup bin/yanagishima-start.sh >y.log 2>&1 &

2.2 安装配置

本次部署的是编译后的yanagishima-18.0.zip文件,解压文件即可:

编译后文件云盘:

链接:https://pan.baidu.com/s/1626_ym21H9n4lfcah2YbMw

提取码:iur5

unzip yanagishima-18.0.zip

简单配置一下安装目录下的 /conf/yanagishima.properties :

jetty.port=7080
presto.datasources=root-presto
presto.coordinator.server.root-presto=http://tcloud:8883
sql.query.engines=presto

2.3 启动验证

我的安装目录是/home/presto/yanagishima-18.0/,目录下有启动和停止的 shell 脚本:

# 在安装目录下执行-进行启动启动
nohup bin/yanagishima-start.sh >y.log 2>&1 &
# 在安装目录下执行-停止
nohup bin/yanagishima-shutdown.sh

前端验证 http://tcloud:7080

3. 总结

工具的安装部署并不复杂,关键在使用~

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
15天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
31 4
|
1月前
使用 Node 创建 Web 客户端
使用 Node 创建 Web 客户端
82 4
|
1天前
|
前端开发 JavaScript 开发者
构建响应式设计的现代Web应用:实用技巧与工具
【10月更文挑战第24天】本文介绍了构建响应式Web应用的实用技巧和工具,涵盖流体网格布局、弹性图片、CSS媒体查询、CSS Grid和Flexbox、响应式导航菜单、图片和字体的响应式处理,以及测试和调试工具。掌握这些技能将帮助开发者提升用户体验和项目适应性。
|
1天前
|
移动开发 数据可视化 前端开发
可视化设计web界面的工具
有什么可视化设计web界面的工具
10 0
|
2月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
15天前
|
缓存 前端开发 JavaScript
深入了解Webpack:现代Web开发的核心工具
【10月更文挑战第11天】深入了解Webpack:现代Web开发的核心工具
|
15天前
|
JavaScript 前端开发 API
深入了解jQuery:简化Web开发的强大工具
【10月更文挑战第11天】深入了解jQuery:简化Web开发的强大工具
8 0
|
18天前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
71 0
|
20天前
|
NoSQL Java 数据库连接
springBoot:整合其他框架&condition&切换web配置 (五)
本文档介绍了如何在Spring Boot项目中整合JUnit、Redis和MyBatis等框架,并提供了相应的依赖配置示例。同时,还展示了如何通过条件注解实现Bean的条件创建,以及如何切换Web服务器配置,从默认的Tomcat切换到Jetty。
|
26天前
|
开发框架 .NET 开发工具
visualstudio如何加入工作插件---Web developer工具
visualstudio如何加入工作插件---Web developer工具
20 0