前言
我遇到的问题是由不再与公司合作的员工开发的网络应用程序。由于没有关于可用实现的文档,我不知道在哪里可以获得有关问题的更多输入因此问题。
我尝试找到与此问题类似的问题的解决方案(Hadoop pseudo distributed mode - Datanode and tasktracker not starting)。但是因为我对hadoop没有什么经验,所以无法确定我需要修复什么来使应用程序正常工作。
情景:
该应用程序分为两部分:
localhost:8080/WebApp
)。 在localhost:50070
2.1。还有一个工作跟踪器在localhost:8088/cluster
所有应用程序都在同一台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 cluster计算。
到目前为止我发现的错误的唯一指示是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 /网络配置中。此外,应用程序服务器的日志不会列出任何错误。我不确定我错过了什么部分。
如果您需要有关配置文件内容的更多信息,请通知我,我将为您提供相关信息。
答案 0 :(得分:1)
问题在于主机名。将ubuntu-machine映射添加到/ etc / hosts文件
<xsl:template match="dxl:tablerow[not(dxl:tablecell)]" />
然后另一件事是检查hadoop的版本。 Hadoop最近发生了重大变化。因此有两个主要版本的hadoop可用hadoop 1.x和hadoop 2.x.更改发生在处理层。
在hadoop 1.x中,我们有Jobtracker和Tasktracker
在hadoop 2.x中,我们有资源管理器,Nodemanager和Application Master。
两个版本的安装步骤都不同。
在命令行中键入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版本。
如果是1.x,则作业跟踪器Web UI将位于网址hadoop version
中。
如果是2.x,则资源管理器Web UI将位于网址http://jobrackerhost:50030
要启动现有服务,您不必担心太多。首先修复主机名问题并尝试启动服务。如果群集中存储了一些重要数据,请不要格式化群集。如果要格式化群集,请同时清除datanode目录。下面给出了一次启动每个hadoop服务的命令。
转到HADOOP_HOME / bin
http://resourcemanagerhost:8088