2014-09-03 105 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的预期结果。