我在本地虛擬機上部署好 Hadoop 和 Yarn 之後,執行啓動命令 ./sbin/start-dfs.sh
,但是卻出現各種報錯問題,在此記錄一下常見的兩個問題。
1、Could not resolve hostname: Name or service not known
報錯信息:
19/05/17 21:31:18 WARN hdfs.DFSUtil: Namenode for null remains unresolved for ID null. Check your hdfs-site.xml file to ensure namenodes are configured properly.
Starting namenodes on [jing-hadoop]
jing-hadoop: ssh: Could not resolve hostname jing-hadoop: Name or service not known
......
這是因爲沒有把配置文件裏的節點名稱 jing-hadoop
加入域名映射,所以無法識別主機名。
解決辦法:
vim /etc/hosts
127.0.0.1 jing-hadoop
然後再次啓動就好了。
注意,我是在本地虛擬機上搭建的僞集羣,這裏的 jing-hadoop
是在 hdfs-site.xml
配置的,對應的節點 ip 就是 127.0.0.1
,你要根據自己的環境做對應的修改,不要直接照搬。
2、Unable to load native-hadoop library
執行 start-dfs.sh
時,還出現瞭如下報錯:
19/05/17 21:39:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
......
且執行 jps 後,沒有看到 NameNode 進程,那這樣肯定是不行的。
這個報錯是沒有在環境變量中配置 Hadoop 的本地類路徑,解決辦法:
vim /etc/profile
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
source /etc/profile
然後,再次執行 start-dfs.sh
,發現仍會報如上錯誤,但執行 jps 後,發現 NameNode 進程及 DataNode 進程都已經正常啓動了,所以不影響使用了。
[root@localhost hadoop-2.4.1]# jps
3854 NameNode
4211 Jps
3967 DataNode
4110 SecondaryNameNode
其中,DataNode 的個數和 ip 是在 $HADOOP_HOME/etc/hadoop/slave
文件中配置的,若配置多個 ip,則會啓動多個 DataNode 進程。