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).
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With