2014-09-03 149 views
0

我在64位的Ubuntu 12.04羣集上安裝Hadoop 2.5.0。在指令的末尾,我在主節點上輸入$ jps,但沒有獲得NameNode。我檢查了Hadoop日誌,發現:Hadoop和python之間的端口衝突

BindException錯誤指出:9000已在使用中。

$ netstat -a -t --numeric-ports -p | grep :9000返回python正在監聽此端口。看來我需要將python 2.7移到另一個端口。我如何移動Python?

按照下面的命令,pid = 2346。

$ PS -p 2346

PID TTY TIME CMD

2346? 1時28分13秒蟒

試過第二命令:

$ PS -lp 2346

FS UID PID PPIDÇPRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 2346 1 0 80 0 - 332027 poll_s?一點28分30秒蟒蛇

更多詳細信息:

$ PS -Cp 2346

PID TTY STAT time命令

2346? Ssl 88:34/usr/lib/cmf/agent/build/env/bin/python /usr/lib/cmf/agent/src/cmf/agent.py --package_dir/usr/lib/cmf

看來Cloudera Hadoop發行版安裝失敗了。它自動安裝python 2.7。不知道還有什麼是自動運行的。將嘗試卸載python 2.7。

+1

它不是Python,它是你正在運行的腳本。輸入'netstat -anp | grep 9000'來查看腳本的PID。 – 2014-09-03 16:20:36

回答

0

要清楚用python編寫的程序是使用端口9000而不是python2.7本身。

你需要跟蹤這個程序,然後弄清楚如何配置它以偵聽不同的端口。您可以使用此命令獲取監聽端口9000上的進程的全部詳細信息

netstat -a -t --numeric-ports -p | grep :9000 | awk '{print $7}' | sed -e 's/\/.*//' | xargs echo ps -lp 
+0

謝謝。建議的命令pid = 2346。 $ ps -p 2346產生PID TTY TIME CMD 2346? 01:28:13 python – Steve 2014-09-03 18:00:57

+0

你想在ps上加上-l標誌,這樣你就可以看到python程序的名字。 – Paddy 2014-09-04 06:11:18

0

看來Cloudera安裝了python 2.7。這已被刪除/替換爲Python 3.2。 Hadoop上的$ jps命令現在返回包含NameNode的預期結果。