如何更改Accumulo平板电脑服务器名称以从远程客户端访问?

时间:2018-04-02 08:58:56

标签: hadoop remote-server accumulo

我一直在运行单节点Accumulo应用程序,只要客户端应用程序在同一台机器上运行,它就一直运行良好。现在我需要将客户端迁移到另一台计算机,但运行应用程序会发出以下警告,该程序不允许程序继续:

WARN  [client.impl.ServerClient] Failed to find an available server in the list of servers: [localhost.localdomain:9997 (120000)]

我能够通过编辑localhost.localdomain中的/etc/hosts条目来连接到服务器,但仍想知道正确的解决方案。我可以从客户端计算机连接到accumulo服务器并验证它被称为localhost.localdomain:9997

enter image description here

现在所有内容都已到位,如果我只是确定一种从客户端引用平板电脑服务器的方法,而不调用它localhost.localdomain,我会重新上线。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

Accumulo服务将在ZooKeeper中公布他们运行的服务器的地址。他们使用的服务地址通常是InetAddress.getLocalHost().getHostName()返回的任何内容。

最佳解决方案是确保在Accumulo及其客户端运行的任何位置正确配置DNS,以便Accumulo检测并通告外部客户端也知道的主机名。您还可以使用其他名称服务实现(通过适当地配置/etc/nsswitch.conf;请参阅man nsswitch.conf),以便InetAddress.getLocalHost().getHostName()返回外部客户端可识别的内容。例如,您可以依赖files指令的hosts:选项而不是dns,但是您需要确保您的/etc/hosts在您的Accumulo上都有一致的条目服务器和您的客户端的任何IP地址。

当服务启动时,不是依赖InetAddress.getLocalHost().getHostName()返回的内容,而是可以在启动服务时通过设置-a, --address命令行选项在Accumulo服务中覆盖播发的服务主机名。这也会影响服务侦听的地址(默认情况下,它会侦听0.0.0.0)。

在某些版本的Accumulo提供的一些便捷脚本中,尝试根据-a返回的内容和/或{{中包含的内容自动设置ifconfig选项。 1}}文件。在大多数情况下,这些脚本的行为与conf/slaves具有相同的结果,因此使用DNS或InetAddress.getLocalHost().getHostName()作为您的名称服务将是最好的。