2

我们在 Linux redhat 7.2 版本上安装了以下 presto 集群

presto 最新版本 - 0.216

1 名 presto 协调员

231 名 presto 工人

在每台工作机器上,我们可以使用以下命令来验证状态

/app/presto/presto-server-0.216/bin/launcher status
Running as 61824

并且也停止/开始作为以下

/app/presto/presto-server-0.216/bin/launcher stop

/app/presto/presto-server-0.216/bin/launcher start

我还在谷歌中搜索可以管理 presto 状态/停止/启动的 UI,但没有看到任何关于此的内容

presto 没有附带一些可以显示集群状态并在需要时执行停止/启动操作的用户界面,这很奇怪

众所周知,presto 的唯一用户界面是显示状态并且没有停止/启动等操作

在此处输入图像描述

在上面的示例屏幕中,我们可以看到活动的 presto 工作人员只有 5 来自 231 ,但是这个 UI 不支持停止/启动操作,并且不显示哪个工作人员 presto 不活动

那么我们能做些什么呢?

访问每台工作机器并查看 presto 是向上还是向下,这是一个非常糟糕的主意

为什么 presto 没有可以执行停止/启动操作的集中式 UI?

在此处输入图像描述

例如我们对 UI 的期望,- 部分列表

在此处输入图像描述

. . .

4

2 回答 2

1

Presto 当前使用发现服务,其中工作人员宣布自己加入集群,因此如果工作程序节点未注册,协调器或发现服务器无法知道其存在和/或重新启动它。

在 Qubole,我们在 presto master 旁边使用一个外部服务来跟踪在特定时间间隔内未注册到发现服务的节点。该服务负责从集群中删除此类节点。我们要做的另一件事是在每个 presto 工作节点上使用 monit 服务,以确保 presto 服务器在出现故障时重新启动。

您可能需要为集群管理做类似的事情,因为 presto 现在不提供它。

于 2019-09-26T21:02:20.490 回答
0

以我的观点和管理 prestosql 集群的经验来看,架构模式中的服务发现很重要。

到目前为止,它在 prestodb/prestosql 的开源版本中使用了以下模式:

  1. 服务器端服务发现——这意味着像 presto cli 这样的客户端应用程序或任何使用 presto sdk 的应用程序只需要联系一个不知道工作节点的协调器。
  2. 服务注册表- 一个跟踪可用实例的地方。
  3. 自注册-服务实例负责向服务注册中心注册自己。这是它强制执行多种行为的关键部分:
  1. 服务实例必须在启动时向服务注册表注册,并在关闭时取消注册
  2. 崩溃的服务实例必须从服务注册表中注销
  3. 正在运行但无法处理请求的服务实例必须从服务注册表中注销

因此,它将每个 presto worker 的生命周期管理保留到每个实例本身。

那么我们能做些什么呢?

它提供了一些来自 presto 集群本身的可观察性,如 HTTP API/v1/node/v1/service/presto查看实例状态。我个人建议使用另一个集群管理器,如 k8s 或 nomad 来管理 presto 集群成员。

访问每台工作机器并查看 presto 是启动还是关闭是非常糟糕的主意,为什么 presto 没有可以执行停止/启动操作的集中式 UI?

对好/坏没有意见。以 k8s 为例,您可以将所有 presto worker 管理为一个 k8s 部署,并在一个 pod 中管理每个 presto worker。它可以使用Liveness、Readiness 和 Startup Probes通过一些 YAML 代码来自动化实例生命周期。比如helm chartstable/presto的livenessProbe的设计。像 k8s 这样的集群管理器确实提供了 Web UI,以便您可以像管理员一样触摸资源。. 或者您可以选择编写更多的 Java 代码来扩展 Presto。

于 2020-02-11T19:24:33.993 回答