我在运行 CentOS 6.4 的三个虚拟机集群上尝试了 Hadoop 2。
我成功启动了hadoop集群,虽然Hadoop 2的配置文件如:core-site.xml , hdfs-site.xml , mapred-site.xml和 yarn-site.xml折磨我很多。
我想把Hadoop 2使用的所有默认端口都改掉,配置文件的官方文档定义了那么多端口号。因此,我认为最好确定 Hadoop 在运行时使用了哪些端口,然后将其全部更改。那么如何在运行CentOS的集群中找出Hadoop使用的所有默认端口呢?谢谢。
最佳答案
您可以通过使用 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
您可以在 hadoop 的 grep 中替换 sshd,它将捕获该节点上运行的大部分进程。
现在我们可以使用另一个 liner 来找出 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 进程执行此操作。数据节点和任务跟踪器端口之类的东西应该跨机器匹配,但只有一个节点可能有名称节点/作业跟踪器进程在运行。
关于hadoop - 如何确定 Hadoop 使用的所有默认端口并更改所有端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18223924/