Hadoop 啟動namenode節點失敗

李國防_QQ發表於2018-09-26

問題產生

       執行下面的命令啟動namenode,jps命令檢視namenode發現沒有啟動。檢視生成的日誌檔案發現有如下的警告資訊


[root@localhost hadoop-2.8.5]# sbin/hadoop-daemon.sh start namenode
starting secondarynamenode, logging to /opt/modules/hadoop-2.8.5/logs/hadoop-root-secondarynamenode-localhost.localdomain.out


WARN:Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/opt/modules/hadoop-2.8.5/share/hadoop/common/lib/hadoop-auth-2.8.5.jar) to method sun.security.krb5.Config.getInstance()

問題解決

我們通過執行hostname命令可以看到:

[shirdrn@localhost bin]# hostname  
localhost.localdomain  

也就是說,Hadoop在格式化HDFS的時候,通過hostname命令獲取到的主機名是localhost.localdomain,然後在/etc/hosts檔案中進行對映的時候,沒有找到,看下我的/etc/hosts內容

[root@localhost bin]# cat /etc/hosts  
# Do not remove the following line, or various programs  
# that require network functionality will fail.  
127.0.0.1               localhost       localhost  
192.168.1.103           localhost       localhost  

也就說,通過localhost.localdomain根本無法對映到一個IP地址,所以報錯了。

此時,我們檢視一下/etc/sysconfig/network檔案:

NETWORKING=yes  
NETWORKING_IPV6=yes  
HOSTNAME=localhost.localdomain  

可見,執行hostname獲取到這裡配置的HOSTNAME的值。

解決方法

第一種:修改主機名

      修改/etc/sysconfig/network中HOSTNAME的值為localhost,或者自己指定的主機名,保證localhost在/etc/hosts檔案中對映為正確的IP地址,然後重新啟動網路服務:

[root@localhost bin]# /etc/rc.d/init.d/network restart  
Shutting down interface eth0:  [  OK  ]  
Shutting down loopback interface:  [  OK  ]  
Bringing up loopback interface:  [  OK  ]  
Bringing up interface eth0:    
Determining IP information for eth0... done.  
[  OK  ]  

這時,再執行格式化HDFS命令,以及啟動HDFS叢集就正常了。

第二種:修改core-site.xml檔案defaultFS為已有的主機名或者直接就為本機的IP地址即可

相關文章