当前位置: 首页 > 知识库问答 >
问题:

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

施英哲
2023-03-14

问题:当我向hadoop 2.2.0集群提交一个作业时,它不会显示在作业跟踪器中,但该作业成功完成了。通过这个,我可以看到输出,它正在正确运行,并在运行时打印输出。

    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;
<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>

共有1个答案

宗政天逸
2023-03-14

解决这个问题的办法是为纱线配置额外的配置选项。我错误地假设java hadoop-client api将使用配置目录中的配置选项。通过在单元测试中使用log4j.properties打开详细日志记录,我能够诊断问题。它显示作业在本地运行,没有提交给纱线资源管理器。经过一些尝试和错误,我能够配置作业,并将其提交给纱线资源管理器。

代码

    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);
    }
 类似资料:
  • 问题内容: 问题: 当我将作业提交到hadoop 2.2.0集群时,它没有显示在作业跟踪器中, 但是作业成功完成。 这样,我可以看到输出并且它正在正确运行,并在运行时打印输出。 我尝试了多个选项,但作业跟踪器看不到该作业。如果我使用2.2.0 hadoop运行流作业,它将显示在任务跟踪器中,但是当我通过hadoop-client api提交它时,它不会显示在作业跟踪器中。我正在查看端口8088上的

  • 我在试着从工作跟踪器那里收集一些信息。对于初学者,我想从获得正在运行的作业信息开始,如作业id或作业名称等,但已经卡住了,以下是我获得的(打印当前正在运行的作业的作业id): 当试图显示作业id时,上面的工作很有魅力,但现在我也想显示作业名称。所以我在打印作业id后添加了这一行: 首先从jobClient获取,然后获取它的名称http://hadoop.apache.org/mapreduce/d

  • 当我启动hadoop作业跟踪器和任务跟踪器不工作时。 127.0.1.1 ubuntu.ubuntu-域ubuntu 192.168.2.135主机 192.168.2.250从机 我可以联系到本地主机:50070和主机:50070。但我无法联系localhost:50030或master:50030

  • 我试图在hadoop中运行一个程序,但我一直得到: 线程“main”java.lang.unsupportedClassVersionError:hadoop_project_16/aggregatejob:不支持major.minor版本52.0在java.lang.ClassLoader.DefineClass1(本机方法)在java.lang.ClassLoader.DefineClass(

  • 这是关于一个flink作业,它有一个简单的源来从url中获取数据,然后过滤数据,然后在一个进程函数中收集数据一段时间(keyBy),最后在一个映射中处理收集到的数据。由于某些原因,即使flinkUI显示它正在运行,作业在几天后也会停止运行。有没有办法知道为什么会有这样的行为,也有没有办法知道一个作业实际上是否已经停止,即使UI显示它正在运行。 附言:我怎么知道工作已经停止了??答:它没有执行它正在

  • 问题内容: 如果我知道作业ID,有什么方法可以检索作业配置(配置中的某些属性)? 基本上,我正在做的是检查当前是否有任何正在运行的作业,然后我要检查当前正在运行的任何作业中是否存在某些属性值? 用于检索当前正在运行的作业的部分代码: 问题答案: 您可以在作业跟踪器中查看正在运行的作业的配置,该配置通常在端口50030上运行。