Hadoop Yarn 作业跟踪器未启动

Hadoop Yarn Job Tracker not starting

前言:

我有一个 Web 应用程序的问题,该应用程序是由一名已离职的员工开发的。由于几乎没有关于可用实现的文档,我不确定从哪里获得更多关于该问题的信息,因此提出了这个问题。

我试图找到与此问题 (Hadoop pseudo distributed mode - Datanode and tasktracker not starting) 类似的问题的解决方案。然而,由于我对 hadoop 的经验很少,我无法确定我需要修复什么才能让应用程序正常工作。

场景:

申请分为两部分:

  1. 有一个 Tomcat 服务器运行应用程序 处理用户输入并提供 map reduce 的结果 工作(localhost:8080/WebApp)。
  2. Hadoop 主节点位于 localhost:50070

    2.1。在 localhost:8088/cluster

  3. 也有一个工作跟踪器 运行

所有应用程序都 运行 在同一台 Ubuntu 机器上。

这 运行 使用前雇员部署的配置是正确的。我所拥有的所有关于如何启动不同服务器的文档。对于 Hadoop 集群,它是一个名为 up.sh.

的脚本

到目前为止我做了什么:

下一步我想将应用程序迁移到具有静态 IP 地址的新网络。我使用来自 IT 部门的数据配置了一个连接,并更改了 Tomcat 服务器的 server.xml 文件,以便可以通过新的静态 IP 地址 (172.16.254.1:8080/WebApp) 访问该应用程序。这有效

我采取的下一步是更改 /etc/hosts 文件的配置,其中旧 IP 地址被列为 hadoop 集群的主服务器。

所以我改变了这个:

127.0.0.1   localhost
192.0.2.42  master

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

为此:

127.0.0.1    localhost
172.16.254.1 master

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

结果:

有了这些更改,我可以使用 up.sh 脚本启动主 Hadoop 节点并在 localhost:50070 访问它。但是我无法在 localhost:8088/cluster.

访问 Hadoop 作业跟踪器

在 WebApp 中,我可以安排 map reduce 任务,但结果不正确。缺少应由 map reduce 集群计算的重要数据。

到目前为止,我发现的唯一错误指示是 hadoop-hduser-namenode.log 文件中的以下错误消息:

2015-07-28 13:57:23,713 ERROR org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Error getting localhost name. Using 'localhost'...
java.net.UnknownHostException: ubuntu-machine: ubuntu-machine
    at java.net.InetAddress.getLocalHost(InetAddress.java:1461)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.getHostname(MetricsSystemImpl.java:514)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configureSystem(MetricsSystemImpl.java:453)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configure(MetricsSystemImpl.java:449)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.start(MetricsSystemImpl.java:180)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.init(MetricsSystemImpl.java:156)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.init(DefaultMetricsSystem.java:54)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.initialize(DefaultMetricsSystem.java:50)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1253)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1320)

由于调用堆栈没有提到员工开发的任何 类,我认为问题出在 Hadoop/network 配置中。应用服务器的日志也没有列出任何错误。我不确定我缺少哪一部分。

如果您需要有关配置文件内容的更多信息,请告诉我,我将为您提供信息。

问题出在主机名上。将 ubuntu-机器映射添加到 /etc/hosts 文件

127.0.0.1    localhost ubuntu-machine
172.16.254.1 master ubuntu-machine

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

然后还有一个就是检查hadoop的版本。 Hadoop 最近发生了重大变化。所以有两个主要的hadoop版本可用hadoop1.x和hadoop2.x。变化发生在处理层。 在 hadoop 1.x 中,我们有 Jobtracker 和 Tasktracker 在 hadoop 2.x 中,我们有 Resource manager、Nodemanager 和 Application Master。 两个版本的安装步骤不同。 在命令行中键入 hadoop version 并验证您使用的 hadoop 版本。

如果是 1.x,则工作跟踪器网站 UI 将位于 url http://jobrackerhost:50030.

如果是2.x,那么资源管理器webUI会在urlhttp://resourcemanagerhost:8088

对于启动现有服务,您不必太担心。首先修复主机名问题并尝试启动服务。如果集群中存储了一些重要数据,请不要格式化集群。如果您正在格式化集群,请同时清除数据节点目录。一次性启动所有hadoop服务的命令如下。

转到HADOOP_HOME/bin

cd $HADOOP_HOME/bin
./start-all.sh