Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Presto server - Cannot connect to discovery server for announce

Tags:

presto

Trying to run Presto with standalone Coordinator/several worker nodes. Coordinator node starts, but can not announce itself to the Discovery service (running on the same node). Starting presto worker on another node also fails to announce to the Discovery service and thus this problem when qyerying: failed: No nodes available to run query.

Coordinator/Discovery node config:

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

Startup log:

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>

Server seems be running on port 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. Seeing the same problem on Azure cluster, doesn't look to be Amazon or networking issue.

This is follow up to this question where Presto would work fine with Coordinator/Worker on the same node (but still having the problem above).

like image 246
Igor Semenko Avatar asked Feb 15 '23 17:02

Igor Semenko


1 Answers

After reading your question and comment several times, I finally realized that this is a bug in the discovery server (both embedded and standalone) that causes dynamic announcements not to work when node.id (in the node.properties file) is not a UUID. We have never noticed this bug because we always use UUIDs.

The clue here is the "Problem accessing /v1/announcement/presto-coordinator" message. This means node.id is set to presto-coordinator, which should be perfectly valid, but the dynamic announcement resource tries to parse it as a UUID and fails, causing the 404 response to the PUT request.

We will fix this soon, but for now the workaround is to set node.id to a UUID. You can run the uuid or uuidgen command line utility to generate them. Make sure each worker has a different value for node.id.

like image 151
David Phillips Avatar answered Apr 08 '23 17:04

David Phillips