当前位置: 首页 > 面试题库 >

Hadoop即使正在运行,也不会在作业跟踪器中显示我的作业

毋琪
2023-03-14
问题内容

问题: 当我将作业提交到hadoop 2.2.0集群时,它没有显示在作业跟踪器中, 但是作业成功完成。
这样,我可以看到输出并且它正在正确运行,并在运行时打印输出。

我尝试了多个选项,但作业跟踪器看不到该作业。如果我使用2.2.0 hadoop运行流作业,它将显示在任务跟踪器中,但是当我通过hadoop-client
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;

等/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>

等/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>

问题答案:

解决该问题的方法是使用额外的纱线配置选项配置作业。我做出了一个错误的假设,即html" target="_blank">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集群提交一个作业时,它不会显示在作业跟踪器中,但该作业成功完成了。通过这个,我可以看到输出,它正在正确运行,并在运行时打印输出。 etc/hadoop/core-site.xml

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

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

  • 我试图在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显示它正在运行。 附言:我怎么知道工作已经停止了??答:它没有执行它正在

  • 问题内容: 我找不到一个提交不使用不推荐使用的类的Hadoop作业的示例。 尚未弃用的,仍然仅支持带有参数的方法。 有人可以给我指出一个Java代码示例,该示例仅使用类(而不是)提交Hadoop map / reduce作业,而不是使用包吗? 问题答案: 希望对您有所帮助