主机间名称解析

时间:2015-05-02 19:14:06

标签: java ip ip-address host

我正在尝试设置lily cluster,其中涉及网络配置,我无法理解。但每次我尝试运行服务器时都会出现以下错误。请解释一下网络配置以及我该怎么做?

  

网络配置

     

确保正确设置了主机间名称解析。该   应正确设置主机名:在每台服务器上,本地   hostname应该解析为网络接口的IP地址,   并且反向解析IP地址应该再次给出相同的结果   hostname(而不是localhost或带有某个域后缀的主机名   附在上面。)

     

在Lily的bin目录中,你会找到工具lily-print-host   将向您展示Java检测到的主机名和相应地址。

     

可以使用/ etc / hosts而不是更改DNS来修复此问题,但是在   这种情况应该在每个节点上一致地完成   节点通过名称相互了解。

Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.lilyproject.server.modules.repository.BlobManagerSetup]: Constructor threw exception; nested exception is java.io.IOException: Failed on local exception: java.io.IOException: Response is null.; Host Details : local host is: "UG-BLR-L030/192.168.0.105"; destination host is: "localhost":54310; 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:121)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:280)
    ... 32 more
Caused by: java.io.IOException: Failed on local exception: java.io.IOException: Response is null.; Host Details : local host is: "UG-BLR-L030/192.168.0.105"; destination host is: "localhost":54310; 
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:760)
    at org.apache.hadoop.ipc.Client.call(Client.java:1229)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:202)
    at com.sun.proxy.$Proxy27.getFileInfo(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:164)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:83)
    at com.sun.proxy.$Proxy27.getFileInfo(Unknown Source)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:628)
    at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1532)
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:803)
    at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1332)
    at org.lilyproject.repository.impl.DFSBlobStoreAccess.<init>(DFSBlobStoreAccess.java:44)
    at org.lilyproject.server.modules.repository.BlobManagerSetup.<init>(BlobManagerSetup.java:56)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
    ... 34 more
Caused by: java.io.IOException: Response is null.
    at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:941)
    at org.apache.hadoop.ipc.Client$Connection.run(Client.java:836)
Startup failed. Will try to shutdown and exit.
[INFO ][00:34:55,387][main      ] org.lilyproject.runtime.info - Shutting down the modules.

1 个答案:

答案 0 :(得分:0)

您收到错误是因为您的主机名设置不正确。特别是下面的块引用中突出显示的文本:

  

[...]反向解析IP地址应该再次提供相同的主机名(并且不是localhost或附加了一些域后缀的主机名)。

为了提供Hadoop堆栈的测试和支持版本的舒适性,我们选择使用 Cloudera的 Hadoop发行版。” - 来自{{3}的第三段}

Installing A Lily Cluster

的步骤

要确保群集成员可以相互通信,请在每个系统上执行以下操作。

  1. 将每个系统的主机名设置为唯一名称(不是localhost)。例如:

    $ sudo hostname myhost-1

    注意:这只是一项临时措施。由hostname设置的主机名在重新启动后无法生存

  2. 确保每个系统上的/etc/hosts文件包含群集中所有成员的IP地址和完全限定域名(FQDN)。

    重要提示/etc/hosts 中每个主机的规范名称必须为FQDN(例如myhost-1.mynet.myco.com),而不是不合格的主机名(例如myhost-1)。规范名称是IP地址之后的第一个条目。

    如果您使用的是DNS,则不需要在/etc/hosts中存储此信息,但这是一种很好的做法。

  3. 确保每个系统上的/etc/sysconfig/network文件包含您刚为该系统设置(或验证)的主机名,例如myhost-1

  4. 检查此系统是否始终与网络识别:

    1. 运行uname -a并检查主机名是否与hostname命令的输出匹配。
    2. 运行/sbin/ifconfig并在inet addr条目中记下eth0的值,例如:

      $ /sbin/ifconfig
      eth0      Link encap:Ethernet  HWaddr 00:0C:29:A4:E8:97
                inet addr:172.29.82.176  Bcast:172.29.87.255
                Mask:255.255.248.0
      ...
      
    3. 运行host -v -t A \`hostname`并确保主机名与hostname命令的输出匹配,并且与ifconfig eth0报告的IP地址相同;例如:

      $ host -v -t A `hostname`
      Trying "myhost.mynet.myco.com"
      ...
      ;; ANSWER SECTION:
      myhost.mynet.myco.com. 60 IN    A      172.29.82.176
      
  5. 其他有用的信息如下......

    来自Cloudera - Configuring Network Names

    的群集网络配置的最佳做法
      

    这些是为Hadoop群集配置网络的最佳实践。建议将这些用于稳定且高性能的Hadoop集群。

         
        
    • 计算机应位于与数据中心其余部分隔离的网络上。这意味着其他应用程序或节点不应与Hadoop基础架构共享网络I / O.建议这样做,因为Hadoop是I / O密集型的,并且应该为性能集群删除所有其他干扰。

    •   
    • 机器应具有静态IP。这将实现网络配置的稳定性。如果网络配置了动态IP,则在计算机重新启动或DNS租约到期时,计算机的IP地址将发生变化,这将导致Hadoop服务出现故障。

    •   
    • 应设置反向DNS。反向DNS确保可以通过IP地址查找节点的主机名。某些Hadoop功能使用并需要反向DNS。

    •