我使用带有可选组件 presto 的测试版 gcloud 创建了 dataproc 集群。
gcloud beta dataproc clusters create presto-test --optional-components=PRESTO --image-version=1.3-deb9
当我尝试执行以下命令访问 hive 目录时,它可以成功打开 presto-cli。
./presto \
--server presto-cluster-m-0:8080 \
--socks-proxy localhost:1080 \
--catalog hive \
--schema default
但是我在通过 presto-cli 查询时遇到以下错误。
presto:default> show tables;
Error running command: java.net.SocketException: Connection refused (Connection refused)
在此方面的任何帮助将不胜感激
最佳答案
可能需要对您的连接设置进行一些小的修复。
- Presto 作为可选组件运行时在端口 8060 上运行
- 您的集群创建命令没有在 HA 模式下创建您的集群,因此 master 的主机名只是 -m,而不是 -m-0
假设你的集群被命名为 presto-test,那么命令应该是这样的
./presto \
--server presto-test-m:8060 \
--socks-proxy localhost:1080 \
--catalog hive \
--schema default
如果这不起作用,您可能需要仔细检查 socks 代理和 Presto 是否正常运行。
运行
curl -I -x socks5h://localhost:1080 presto-test-m:8088
- 它应该返回 HTTP 302。如果您遇到连接被拒绝错误或主机不可用发现错误,您的 socks 代理无法正常工作。运行
gcloud beta dataproc clusters describe presto-test
并检查以下行是否出现在输出中softwareConfig: optionalComponents: - PRESTO
通过 Ssh 进入 Presto 集群的主节点并运行
which presto
和sudo systemctl status presto
以验证 Presto 是否已安装并正在运行。
存在一个已知问题,当指定为可选组件时,Presto 可能无法安装(在这种情况下,上面的步骤 2 和 3 将显示 Presto 未在集群上激活)。这应该会在下一个 Dataproc 版本中修复 - 如果您现在遇到此问题,请尝试使用此命令来创建集群:
gcloud beta dataproc clusters create presto-test --properties dataproc:dataproc.components.activate=presto --image-version=1.3-deb9
关于google-cloud-platform - Presto-CLI java.net.SocketException : Connection refused in GCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53651776/