Presto服务器 - 无法连接到发现服务器进行通告

时间:2013-11-11 17:27:57

标签: presto

尝试使用独立协调器/多个工作节点运行Presto。协调器节点启动,但无法向Discovery服务(在同一节点上运行)宣布自己。在另一个节点上启动presto worker也无法向Discovery服务宣布,因此在qyerying时出现此问题:失败:没有可用于运行查询的节点

协调员/发现节点配置:

coordinator=true
datasources=jmx
http-server.http.port=8000
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://10.0.0.11:8000

启动日志:

2013-11-11T16:54:57.999+0000     INFO   main    com.facebook.presto.server.PrestoServer     ======== SERVER STARTED ========
2013-11-11T16:54:58.002+0000    ERROR   Announcer-0 io.airlift.discovery.client.Announcer   Cannot connect to discovery server for announce: Announcement failed with status code 404:         <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 404 Not Found</title>
</head>
<body>
<h2>HTTP ERROR: 404</h2>
<p>Problem accessing /v1/announcement/presto-coordinator. Reason:
<pre>    Not Found</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>

服务器似乎在端口8000上运行:

[root@ip-10-0-0-11 ~]# curl http://10.0.0.11:8000
<!DOCTYPE html>
<head>
    <meta charset="utf-8">
...
<body>
<div class="container">
    <div class="page-header">
        <h1>Presto</h1>
    </div>
...

P.S。在Azure群集上看到相同的问题,看起来不是亚马逊或网络问题。

这是this问题的后续问题,Presto可以在同一节点上与Coordinator / Worker一起正常工作(但仍然存在上述问题)。

3 个答案:

答案 0 :(得分:5)

在多次阅读您的问题和评论后,我终于意识到这是发现服务器(嵌入式和独立式)中的一个错误,导致动态通知在node.id时无效(在{{1}中) } file)不是UUID。我们从未注意到这个错误,因为我们总是使用UUID。

这里的线索是“访问node.properties的问题”消息。这意味着/v1/announcement/presto-coordinator设置为node.id,这应该是完全有效的,但动态通知资源会尝试将其解析为UUID并失败,从而导致对presto-coordinator请求的404响应。

我们很快会解决此问题,但目前解决方法是将PUT设置为UUID。您可以运行node.iduuid命令行实用程序来生成它们。确保每个工作人员具有uuidgen的不同值。

答案 1 :(得分:0)

要在同一节点中运行,您应该修改Coordinator / Discovery节点config:

coordinator=true
datasources=jmx,hive
http-server.http.port=8080
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://v125203052.bja:8080

并且不要单独运行发现服务器。 然后运行客户端,您将能够正确执行查询。

答案 2 :(得分:0)

确保您的协调器 config.properties 中有以下内容

discovery-server.enabled=true