Hadoop Datanode拒绝与namenode的通信-hdfs

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”)。它显示以下错误

我已经在12节点集群中安装了HDFS。它部署在EC2(AWS)实例中。所有这些EC2实例都有两个网络接口-
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中正确解析主机。