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

标签 hadoop mapreduce centos port

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

我成功启动了hadoop集群,虽然Hadoop 2的配置文件如:core-site.xml , hdfs-site.xml , mapred-site.xmlyarn-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/

相关文章:

java - 在 Apache Crunch 中,如何确定 PCollection 或 PTable 中是否包含任何元素?如果有,有多少?

mapreduce - 检查列表的所有元素是否在 Raku 中都是素数

php - 缺少 Amazon AMI PDO MYSQL 驱动程序。没有适用于 PHP 7.1 的软件包。如何安装 7.1 PDO_MYSQL 驱动程序?

java.lang.NoClassDefFoundError : com/google/common when trying to create a Configuration object

java - 在 Amazon EMR 中运行 hadoop jar

python - Apache Pig - Jython UDF 内存错误

PHP 系统 ("touch ...") - 没有这样的文件或目录

Hadoop MapReduce 无法连接到 ResourceManager

hadoop - 在Scala Play框架中找不到Hadoop MR映射器类

php - 关于 Centos/PCI DSS 合规性的 CVE-2011-1092