我在本地虚拟机上部署好 Hadoop 和 Yarn 之后,执行启动命令 ./sbin/start-dfs.sh,但是却出现各种报错问题,在此记录一下常见的两个问题。
报错信息:
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,你要根据自己的环境做对应的修改,不要直接照搬。
执行 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 进程。