【问题标题】:port conflict between Hadoop and pythonHadoop和python之间的端口冲突
【发布时间】:2014-10-28 05:22:17
【问题描述】:

我在 64 位 Ubuntu 12.04 集群上安装 Hadoop 2.5.0。在指令的最后,我在主节点上键入 $ jps,但没有得到 NameNode。我检查了 Hadoop 日志,发现:

BindException 错误说明:9000 已在使用中。

$ netstat -a -t --numeric-ports -p | grep :9000 返回 python 正在侦听此端口。看来我需要将 python 2.7 移动到另一个端口。如何移动python?

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

$ ps -p 2346

PID TTY 时间命令

2346 ? 01:28:13 蟒蛇

尝试了第二个命令:

$ ps -lp 2346

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 2346 1 0 80 0 - 332027 poll_s ? 01:28:30 蟒蛇

更多细节:

$ ps -Cp 2346

PID TTY 统计时间命令

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。

【问题讨论】:

  • 它不是 Python,它是您正在运行的脚本。输入 netstat -anp | grep 9000 以查看脚本的 PID。

标签: python hadoop port conflict


【解决方案1】:

Cloudera 似乎安装了 python 2.7。这已被 python 3.2 删除/替换。 Hadoop 上的 $jps 命令现在返回包括 NameNode 在内的预期结果。

【讨论】:

    【解决方案2】:

    需要明确的是,用 python 编写的程序使用的是 9000 端口,而不是 python2.7 本身。

    您需要跟踪该程序,然后确定如何配置它以侦听不同的端口。您可以使用此命令获取侦听端口 9000 的进程的完整详细信息

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

    【讨论】:

    • 谢谢。建议的命令 pid=2346。 $ ps -p 2346 产生 PID TTY TIME CMD 2346 ? 01:28:13 蟒蛇
    • 你想在 ps 上加上 -l 标志,这样你就可以看到 python 程序的名称了。
    猜你喜欢
    • 2018-10-23
    • 2019-06-15
    • 2015-11-17
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2012-03-06
    • 2011-05-02
    相关资源
    最近更新 更多