我正在尝试设置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.
答案 0 :(得分:0)
您收到错误是因为您的主机名设置不正确。特别是下面的块引用中突出显示的文本:
[...]反向解析IP地址应该再次提供相同的主机名(并且不是localhost或附加了一些域后缀的主机名)。
“为了提供Hadoop堆栈的测试和支持版本的舒适性,我们选择使用 Cloudera的 Hadoop发行版。” - 来自{{3}的第三段}
要确保群集成员可以相互通信,请在每个系统上执行以下操作。
将每个系统的主机名设置为唯一名称(不是localhost
)。例如:
$ sudo hostname myhost-1
注意:这只是一项临时措施。由hostname
设置的主机名在重新启动后无法生存
确保每个系统上的/etc/hosts
文件包含群集中所有成员的IP地址和完全限定域名(FQDN)。
重要提示:/etc/hosts
中每个主机的规范名称必须为FQDN(例如myhost-1.mynet.myco.com
),而不是不合格的主机名(例如myhost-1
)。规范名称是IP地址之后的第一个条目。
如果您使用的是DNS,则不需要在/etc/hosts
中存储此信息,但这是一种很好的做法。
确保每个系统上的/etc/sysconfig/network
文件包含您刚为该系统设置(或验证)的主机名,例如myhost-1
。
检查此系统是否始终与网络识别:
uname -a
并检查主机名是否与hostname
命令的输出匹配。运行/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
...
运行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
其他有用的信息如下......
这些是为Hadoop群集配置网络的最佳实践。建议将这些用于稳定且高性能的Hadoop集群。
计算机应位于与数据中心其余部分隔离的网络上。这意味着其他应用程序或节点不应与Hadoop基础架构共享网络I / O.建议这样做,因为Hadoop是I / O密集型的,并且应该为性能集群删除所有其他干扰。
机器应具有静态IP。这将实现网络配置的稳定性。如果网络配置了动态IP,则在计算机重新启动或DNS租约到期时,计算机的IP地址将发生变化,这将导致Hadoop服务出现故障。
应设置反向DNS。反向DNS确保可以通过IP地址查找节点的主机名。某些Hadoop功能使用并需要反向DNS。