今天重启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。