0

我在运行 CentOS 6.4 的三个虚拟机的集群上尝试了 Hadoop 2。

我成功启动了hadoop集群,虽然Hadoop 2的配置文件如:core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml折磨了我很多。

我想更改Hadoop 2使用的所有默认端口。配置文件的官方文档定义了这么多端口号。因此,我认为最好确定 Hadoop 在运行时使用了哪些端口,然后全部更改。那么如何才能在运行 CentOS 的集群中找出 Hadoop 使用的所有默认端口呢?谢谢。

4

1 回答 1

2

您可以通过使用 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 进程执行此操作。数据节点和任务跟踪器端口之类的东西应该跨机器匹配,但只有一个节点可能有一个名称节点/作业跟踪器进程在运行。

于 2013-08-14T11:15:21.290 回答