您可以通过使用 netstat 命令以及一点 bash one liner 来找出特定进程已打开的端口。目前我的机器上没有 hadoop,所以这里有一个例子来找出 sshd 正在运行的端口(应该是 22!):
您需要知道您的 hadoop 进程(TT、JT、NN、DN 等)的进程 id,这可以通过执行另一个 oneliner 来找到,因此对于我的 sshd 示例:
#> sudo ps axww | grep sshd
1065 ? Ss 0:00 /usr/sbin/sshd -D
您可以将 grep 中的 sshd 替换为 hadoop,它将捕获该节点上运行的大多数进程。
现在我们可以使用另一条线来找出 sshd 为 LISTENing 开放的端口(进程 id 1065):
#> sudo netstat -alpn | grep 1065 | grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1065/sshd
tcp6 0 0 :::22 :::* LISTEN 1065/sshd
您需要对所有节点上的所有 hadoop 进程执行此操作。数据节点和任务跟踪器端口之类的东西应该跨机器匹配,但只有一个节点可能有一个名称节点/作业跟踪器进程在运行。