如何确定Hadoop使用的所有默认端口并更改所有端口?

时间:2013-08-14 05:36:10

标签: hadoop mapreduce centos port

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用netstat命令找到特定进程已打开的端口,并结合一个小的bash one liner。目前我的机器上没有hadoop,所以这里有一个例子来找出正在运行的sshd端口(应该是22!):

你需要知道你的hadoop进程的进程id(TT,JT,NN,DN等),这可以通过另一个oneliner找到,所以对于我的sshd例子:

#> sudo ps axww | grep sshd
1065 ?        Ss     0:00 /usr/sbin/sshd -D

您可以在grep中替换hadoop中的sshd,它将捕获在该节点上运行的大多数进程。

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