hadoop没有在作业跟踪器中显示我的作业,即使它正在运行

cs7cruho  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(464)

问题:当我向hadoop2.2.0集群提交作业时,它不会显示在作业跟踪器中,但作业成功完成。通过这个,我可以看到输出,它正在正确运行,并打印输出,因为它正在运行。
我试过多种选择,但找工作的人看不到这份工作。如果我使用2.2.0hadoop运行流作业,它会显示在任务跟踪器中,但是当我通过hadoop客户端api提交它时,它不会显示在作业跟踪器中。我正在查看端口8088上的ui接口以验证作业
环境osx mavericks、java 1.6、hadoop 2.2.0单节点集群、tomcat 7.0.47
代码

try {
        configuration.set("fs.defaultFS", "hdfs://127.0.0.1:9000");
        configuration.set("mapred.jobtracker.address", "localhost:9001");

        Job job = createJob(configuration);
        job.waitForCompletion(true);
    } catch (Exception e) {
        logger.log(Level.SEVERE, "Unable to execute job", e);
    }

    return null;

etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
    </property> 
</configuration>

etc/hadoop/core-site.xml文件

<configuration>
     <property>
       <name>hadoop.tmp.dir</name>
       <value>/tmp/hadoop-${user.name}</value>
       <description>A base for other temporary directories.</description>
    </property>

    <property> 
      <name>fs.default.name</name> 
      <value>hdfs://localhost:9000</value> 
    </property>

</configuration>
js81xvg6

js81xvg61#

我看到您正在使用hadoop2.2.0。你用的是mrv1还是mrv2?mrv2(yarn)的守护程序不同。mrv2没有jobtracker,不过您可能会看到jobtracker ui的占位符页面。
resourcemanager web ui应该显示您提交的作业。resourcemanager的默认web url是http://:8088
将resourcemanagerhost替换为运行资源管理器的节点的ip地址。
您可以在apachehadoopyarn上阅读更多关于yarn体系结构的信息

clj7thdc

clj7thdc2#

解决这个问题的方法是使用额外的yarn配置选项来配置作业。我错误地假设javahadoop客户端api将使用配置目录中的配置选项。我可以通过在单元测试中使用log4j.properties打开详细日志来诊断问题。它显示作业在本地运行,没有提交给yarn资源管理器。通过一点尝试和错误,我能够配置作业并将其提交给yarn资源管理器。
代码

try {
        configuration.set("fs.defaultFS", "hdfs://127.0.0.1:9000");
        configuration.set("mapreduce.jobtracker.address", "localhost:54311");
        configuration.set("mapreduce.framework.name", "yarn");
        configuration.set("yarn.resourcemanager.address", "localhost:8032");

        Job job = createJob(configuration);
        job.waitForCompletion(true);
    } catch (Exception e) {
        logger.log(Level.SEVERE, "Unable to execute job", e);
    }

相关问题