hadoop啟動后jps查不到namenode的解決辦法
原文轉載至:https://www.cnblogs.com/lishpei/p/6136043.html
最近由於項目需要開始接觸hadoop,在配置偽分布式啟動后,jps查詢進程發現少了namenode,而DataNode卻存在。
下面是我的core-site.xml和hdfs-site.xml配置:
core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
啟動過程:
執行 NameNode 的格式化:
hadoop@hadoop:/usr/local/hadoop$ ./bin/hdfs namenode -format
啟 NameNode 和 DataNode 守護進程。
hadoop@hadoop:/usr/local/hadoop$ ./sbin/start-dfs.sh
啟動過程沒有發現錯誤,但是jps查看進程時,發現少了NameNode,而DataNode卻存在:
hadoop@hadoop:/usr/local/hadoop$ jps 907 ResourceManager 1112 NodeManager 3627 Jps 725 SecondaryNameNode 552 DataNode
首先google了一下,網上看了幾個方法沒有解決。
干脆看啟動日志,我們從啟動腳本打印的日志可知啟動NameNode的日志是放在hadoop下的logs目錄下,進入這個目錄可發現有一個hadoop-namenode.log(名字貌似根據用戶名而定:格式如×××namenode×××.log),打開這個日志文件發現有這么一段:
原來是端口9000已經被占用,解決辦法有兩個,第一種:查找占用端口的進程,kill掉它。如果已占用進程需要使用9000端口,可用第二種方法:修改core-site.xml文件,把9000改成其他如9001.
我用的是第一種方法,首先找出占用9000端口的進程,然后kill掉它
hadoop@hadoop:~$ sudo netstat -anp|grep 9000
tcp6 0 0 127.0.0.1:9000 127.0.0.1:43620 ESTABLISHED 7056/eclipse
hadoop@hadoop:~$ sudo kill -9 7056
最后重新執行啟動腳本,jps就可以看到NameNode了,http://localhost:50070/也可以訪問。
hadoop@hadoop:/usr/local/hadoop/sbin$ ./sbin/start-dfs.sh hadoop@hadoop:/usr/local/hadoop/sbin$ jps 907 ResourceManager 1112 NodeManager 4240 Jps 2704 NameNode 725 SecondaryNameNode 552 DataNode