我无法连接到 Hadoop 端口 9000

Dau*_*nnC 5 hadoop

所以 telnet 实际上正在工作,我的意思是 telnet localhost 25 正在连接;但是 telnet localhost 或 telnet localhost 9000 得到了这样的结果:

Trying 127.0.0.1... 
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)

nmap 结果:

$ nmap localhost

Starting Nmap 6.00 ( http://nmap.org ) at 2013-10-03 00:54 MSK
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00030s latency).
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 992 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
587/tcp  open  submission
631/tcp  open  ipp
3306/tcp open  mysql
5432/tcp open  postgresql
6566/tcp open  sane-port
Run Code Online (Sandbox Code Playgroud)

9000 端口上的 nmap:

$ nmap -p 9000 localhost

Starting Nmap 6.00 ( http://nmap.org ) at 2013-10-03 00:55 MSK
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).
rDNS record for 127.0.0.1: localhost.localdomain
PORT     STATE  SERVICE
9000/tcp closed cslistener
Run Code Online (Sandbox Code Playgroud)

所以问题是如何打开必要的端口,我使用的是 Ubuntu 13.04;尝试禁用 ufw,尝试使用 iptables;没有任何帮助。也不知道该怎么办了……

我需要 9000 端口用于 hadoop;如果不打开 9000 端口,我无法访问 fs

Ter*_*ang 5

原因connection refused很简单 - 端口 9000 未被使用(未打开)。

使用命令 =>lsof -i :9000查看正在使用该端口的应用程序。如果结果为空(返回值 1),则它未打开。

您甚至可以使用 netcat 进一步测试。

终端会话 1 中端口 9000 上的列表

nc -l -p 9000
Run Code Online (Sandbox Code Playgroud)

在另一个会话中,连接到它

$ lsof -i :9000
COMMAND   PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nc      12679 terry    3u  IPv4 7518676      0t0  TCP *:9000 (LISTEN)
$ nc -vz localhost 9000
Connection to localhost 9000 port [tcp/*] succeeded!
Run Code Online (Sandbox Code Playgroud)

因此,您需要修复您的 hadoop 设置并确保所有必要的守护进程/服务都已正确启动,然后才能连接使用 HDFS。

注意:这不是 telnet 或 iptables 问题,它基本上是 TCP/IP 基础知识。请将问题更改为诸如“连接到端口 9000 问题”之类的问题。

更新

i need 9000 port for hadoop; I can't access fs without opened 9000 port 所以根据上下文我的理解是 HDFS 的 namenode 应该使用端口 9000。所以检查你的 Hadoop/HDFS 配置文件并启动服务。

iptables 在此阶段无关紧要,因为根本不使用端口。

您可以运行iptables -L -vn以确保没有规则生效。您可以刷新过滤器表 INPUT 链以确保sudo iptables -P INPUT ACCEPT && sudo iptables -F -t filter