【问题标题】:How to run Presto discovery service standalone?如何独立运行 Presto 发现服务?
【发布时间】:2021-03-13 03:19:23
【问题描述】:

如何独立运行 Presto Discovery Service,使其既不是协调器也不是工作器? HTTP 端点要成为 Presto 集群的发现服务有哪些要求?

我在大卫菲利普斯写道的 presto-users 邮件列表中找到了this thread

如果您想将发现作为独立服务运行,请与 Presto,这是一个选择。我们曾经发布过操作说明 这个,但几年前就摆脱了它们,因为在里面运行发现 协调器工作正常(即使在具有数百个 机器)。

这还成立吗?

【问题讨论】:

    标签: presto trino


    【解决方案1】:

    是的,您可以运行独立的发现服务。这种情况很少见,通常我建议只在协调器上运行它。

    在您的发现节点上:

    1. 下载与您的 Presto 节点兼容的版本的 discovery service tar.gz。 (例如,presto 版本 347 与 discovery service 1.29 兼容)并将其解压缩到一个目录。
    2. 类似于 Presto Server 设置,在服务根目录下创建/etc 目录并配置node.propertiesjvm.config
    3. 添加config.properties,发现服务就这么简单。
        http-server.http.port=8081
    
    1. 在您的协调员/工作人员 config.properties 中更新这些行。
        discovery-server.enabled=false
        discovery.uri=http://discovery.example.com:8081
    
    1. 重新启动您的服务。 (发现服务的启动方式与 presto services are started 使用 bin/launcher 相同)
    2. 一旦所有服务器和工作器都启动,您应该能够检查 curl -XGET http://discovery.example.com:8081/v1/service 并且应该会看到一些包含以下内容的输出:
    {
      "environment": "production",
      "services": [
        {
          "id": "d2b7141e-d83f-4d23-be86-285ff2a9f53d",
          "nodeId": "57ac8bd3-c55e-4170-b363-80d10023ece8",
          "type": "presto",
          "pool": "general",
          "location": "/57ac8bd3-c55e-4170-b363-80d10023ece8",
          "properties": {
            "node_version": "347",
            "coordinator": "true",
            "http": "http://coord.example.com:8080",
            "http-external": "http://coord.example.com:8080",
            "connectorIds": "system"
          }
        },
        {
          "id": "f0abafae-052a-4758-95c6-d19355043bc6",
          "nodeId": "57ac8bd3-c55e-4170-b363-80d10023ece8",
          "type": "presto-coordinator",
          "pool": "general",
          "location": "/57ac8bd3-c55e-4170-b363-80d10023ece8",
          "properties": {
            "http": "http://coord.example.com:8080",
            "http-external": "http://coord.example.com:8080"
          }
        },
        {
          "id": "1f5096de-189e-4e25-bac3-adc079981d86",
          "nodeId": "8d7e820f-dd01-4227-ad6e-f74b97202647",
          "type": "presto",
          "pool": "general",
          "location": "/8d7e820f-dd01-4227-ad6e-f74b97202647",
          "properties": {
            "node_version": "347",
            "coordinator": "false",
            "http": "http://worker1.example.com:8080",
            "http-external": "http://worker1.example.com:8080",
            "connectorIds": "system"
          }
        },
        ....
    
      ]
    }
    

    【讨论】:

    • 啊,所以这个发现服务更像是发现服务的空运方式,Presto 是其中之一,嗯?!
    • 我不确定我是否完全遵循,但 Presto 在内部使用 airlift 来通过 REST 进行发现和其他内部节点通信。因此,没有空运方式与 Presto 方式。这只是一种自行运行发现服务而不是在协调节点上运行的方法。这有意义吗?
    • 空运早于 Presto。我们在 Proofpoint 工作时构建并开源了它。它是我们用来构建所有分布式服务的工具包。当我们开始在 Facebook 开发 Presto 时,我们利用了 Airlift 的许多部分,包括 Discovery。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2017-09-03
    相关资源
    最近更新 更多