仅在localjobrunner上运行的hadoop作业

3lxsmp7m  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(247)

hadoop初学者。我有以下运行和主要方法:

public int run(String[] args) throws Exception {

    Job job = new Job();

    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);

    job.setMapperClass(Map.class);
    job.setReducerClass(Reduce.class);

    job.setInputFormatClass(TextInputFormat.class);
    job.setOutputFormatClass(TextOutputFormat.class);

    FileInputFormat.setInputPaths(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));

    job.submit();
    return 0;
    }

 public static void main(String[] args) throws Exception {
    Tool myTool = new Extractor();
    Configuration config = new Configuration();
    config.set("mapred.job.tracker", "<IP>:9001");
    config.set("fs.default.name", "hdfs://<IP>:9000");

    myTool.setConf(config);
    ToolRunner.run(myTool, new String[]{"<file>.json", "output"});
 }

由于某些原因,它运行得很好,但只在本地计算机上运行。这是直接从eclipse运行的。虽然从技术上讲,工作追踪者是在同一个盒子,它从来没有收到任何工作。我的配置有什么问题?
core-site.xml是:

<configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs:/<IP>:9000</value>
        </property>
</configuration>
fslejnso

fslejnso1#

你如何提交你的工作。
您的客户端可能没有读取正确的配置文件。确保mapred-site.xml上有类似的内容。因为您是从代码中传递这个,所以应该可以。

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

还要确保你没有通过

-Dmapred.job.tracker=local

运行作业时
并创建config in run方法,以便您可以执行以下操作。
job=新作业(conf);

相关问题