Hadoop Datanode拒绝与namenode的通信-hdfs
我已经在12节点集群中安装了HDFS。它部署在EC2(AWS)实例中。所有这些EC2实例都有两个网络接口-Hadoop Datanode拒绝与namenode的通信-hdfs,hadoop,hdfs,cloudera,cloudera-cdh,cloudera-manager,Hadoop,Hdfs,Cloudera,Cloudera Cdh,Cloudera Manager,我已经在12节点集群中安装了HDFS。它部署在EC2(AWS)实例中。所有这些EC2实例都有两个网络接口-eth0和eth1eth1具有静态IP地址,eth0具有在实例重新启动时更改的IP地址。假设eth0的IP地址是“ABC”,而eth1的IP地址是“XYZ”。在我的主机文件(/etc/hosts)中,我为所有节点FQDN和IP地址(eth1的IP地址)创建了条目。出于某种原因,当DataNodes尝试连接到NameNode时,它使用的IP地址为eth0(在本例中为“ABC”)。它显示以下错误
eth0
和eth1
eth1
具有静态IP地址,eth0
具有在实例重新启动时更改的IP地址。假设eth0
的IP地址是“ABC”,而eth1
的IP地址是“XYZ”。在我的主机文件(/etc/hosts)中,我为所有节点FQDN和IP地址(eth1的IP地址)创建了条目。出于某种原因,当DataNodes尝试连接到NameNode时,它使用的IP地址为eth0
(在本例中为“ABC”)。它显示以下错误并失败
日志中的错误如下所示:
块池的初始化失败
BP-1423100917-name_node_host-1544213589860(数据节点Uuid
160d6133-54f1-4a29-a6f0-0e52c0c59708)服务至
NAME\u NODE\u HOSTNAME.net/NAME\u NODE\u IP:8022 Datanode拒绝与namenode通信,因为无法解析主机名
(ip=ABC,主机名=ABC):数据节点注册(XYZ,
DataNodeUID=160d6133-54f1-4a29-a6f0-0e52c0c59708,infoPort=50075,
infoSecurePort=0,ipcPort=50020,
storageInfo=lv=-56;cid=cluster8;nsid=2080909946;c=0)
我尝试了以下选项来解决此问题。但它没有起作用
将datanode和NameNode中的属性dfs.datanode.dns.interface
设置为eth1
,并重新启动HDFS服务。还尝试仅为DataNode或NameNode更改它。(hdfs site.xml)
将数据节点和名称节点中的属性dfs.namenode.datanode.registration.ip hostname check
设置为“false”,并重新启动HDFS服务。还尝试仅为DataNode或NameNode更改它。(hdfs site.xml)
以前与此错误相关的大多数帖子都指向上述参数。但这对我不起作用。有人面临过同样的问题吗 在通过java客户端从外部网络写入数据时,我也面临类似的问题。尝试写入数据块时,datanode主机名解析不正确。对我来说,namenode返回EC2私有IP而不是公共IP。我不希望NAT或反向dns作为vpc的层,而是找到一种更简单的方法在EC2中正确解析主机。