今天重启EMR Core节点后,需要重新启动各项服务,在启动hadoop-hdfs-datanode时,遇到“Temporary failure in name resolution”错误

2020-02-19 12:07:57,988 WARN org.apache.hadoop.net.DNS (main): Unable to determine local hostname -falling back to "localhost"
java.net.UnknownHostException: ip-10-201-1-222: ip-10-201-1-222: Temporary failure in name resolution
        at java.net.InetAddress.getLocalHost(InetAddress.java:1506)
        at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:284)
        at org.apache.hadoop.net.DNS.<clinit>(DNS.java:61)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.getHostName(DataNode.java:888)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2496)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2544)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2729)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2753)
Caused by: java.net.UnknownHostException: ip-10-201-1-222: Temporary failure in name resolution
        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1501)
        ... 7 more
2020-02-19 12:07:57,991 WARN org.apache.hadoop.net.DNS (main): Unable to determine address of the host-falling back to "localhost" address

从中可以看出是DNS问题。

How to fix

1) 确认EC2中DNS Resolver config配置

cat /etc/resolv.conf

# options timeout:2 attempts:5

2) 配置中缺少了部分配置,添加之

# sudo vim /etc/resolv.conf

options timeout:2 attempts:5
; generated by /sbin/dhclient-script
search cn-north-1.compute.internal
nameserver 10.201.0.2

保存后,成功启动HDFS DataNode。