presto +如何管理presto服务器的停止/启动/状态操作

时间:2019-02-24 16:51:16

标签: presto

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

presto最新版本-0.216

1位主持人

231名presto员工

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

/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

我还在Google中搜索有关可以管理Presto状态/停止/开始的UI的信息 但没有看到任何东西

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

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

enter image description here

在上面的示例屏幕中,我们可以看到活动的presto工作者仅是231中的5,但是此用户界面不支持停止/启动操作,并且不显示哪个工作者的presto未处于活动状态

那么我们能做什么呢?

访问每台工作计算机并查看presto是启动还是关闭是非常糟糕的主意

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

enter image description here

示例我们希望从用户界面中获得的期望-部分列表

enter image description here

。 。

2 个答案:

答案 0 :(得分:1)

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

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

您可能必须对群集管理执行类似的操作,因为presto目前未提供该功能。

答案 1 :(得分:0)

根据我的观点和管理prestosql集群的经验,在架构模式中service discovery很重要。

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

  1. server-side service discovery-这意味着像presto cli这样的客户端应用程序或任何使用presto sdk的应用程序都只需要与协调器保持联系,而无需了解工作节点。
  2. service registry-一个可以跟踪可用实例的地方。
  3. self-registration-服务实例负责在服务注册表中进行自身注册。这是强制几种行为的关键部分:
  1. 服务实例必须在启动时向服务注册表注册,并在关闭时取消注册
  2. 崩溃的服务实例必须从服务注册表中取消注册
  3. 正在运行但无法处理请求的服务实例必须从服务注册表中取消注册

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

那么我们该怎么办?

它从presto群集本身(例如HTTP API /v1/node/v1/service/presto)中提供了一些可观察性,以查看实例状态。我个人建议使用像K8S或游牧另一个群集管理器来管理急板的集群成员。

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

对好/坏没有意见。以k8s为例,您可以将所有presto worker作为一个k8s部署进行管理,并在一个吊舱中管理每个presto worker。它可以使用Liveness, Readiness and Startup Probes通过一些YAML代码来自动执行实例生命周期。例如livenessProbe of helm chart stable/presto的设计。而且,像k8s这样的集群管理器确实提供了Web UI,因此您可以触摸资源以充当管理员。 。或者,您可以选择编写更多Java代码来扩展Presto。