Hadoop的文档

时间:2012-11-05 21:29:49

标签: java hadoop documentation mapreduce version

我从Hadoop框架开始,我的任务是为框架编写map-reduce应用程序并提交它。我必须使用0.22.0版的Hadoop。我只是在学习基本概念和API。但是我发现非常很难学习它并编写一些原型,因为the official documentationAPI javadocs都已过时,不完整,通常很混乱甚至不存在。

以下只有少数人认为我不理解:The MapReduce tutorial for Hadoop 0.22.0使用了不推荐使用的类here的构造函数(Job,第101行)。所有其他构造函数也已弃用。 javadocs中没有关于使用什么的注释。有一些类Job的静态方法返回Job的实例,但这些方法没有文档,它们需要一个记录不良的类Cluster的实例作为参数。因此,在阅读了所有这些混乱之后,我仍然不知道如何正确获取Job的实例。对此有任何帮助表示赞赏。

当我试图在教程中找到1.0.4 stable等更高版本的答案时,我发现该版本的mapreduce教程使用了版本0.22.0中不推荐使用的包org.apache.hadoop.mapred中的所有类。所以0.22.0比1.0.4更重要。请帮我理解这个。或建议一些更好的资源。

1 个答案:

答案 0 :(得分:2)

Javadoc可能有点令人困惑,因此查看Job类的来源可能会对您有所帮助:

  ...
  @Deprecated
  public Job() throws IOException {
    this(new Configuration());
  }

  @Deprecated
  public Job(Configuration conf) throws IOException {
    this(new Cluster(conf), conf);
  }

  @Deprecated
  public Job(Configuration conf, String jobName) throws IOException {
    this(conf);
    setJobName(jobName);
  }

  Job(Cluster cluster) throws IOException {
    this(cluster, new Configuration());
  }

  Job(Cluster cluster, Configuration conf) throws IOException {
    super(conf, null);
    this.cluster = cluster;
  }

  ...
  public static Job getInstance(Cluster cluster, Configuration conf) 
      throws IOException {
    return new Job(cluster, conf);
  }

所以你可以使用:

...
Configuration conf = getConf();
Job job = Job.getInstance(new Cluster(conf), conf);

请注意,以这种方式实例化Job类同时也会创建与job tracker的连接。

如果您希望推迟这样做,则可以通过在创建Job对象时将Cluster设置为null来选择延迟初始化此连接。在这种情况下,您将让Job类在真正需要时进行连接(请参阅更多信息here):

Job job = Job.getInstance(conf);