0

私はHadoopフレームワークから始めています。私のタスクは、フレームワークのmap-reduceアプリケーションを作成し、それを送信することです。Hadoopのバージョン0.22.0を使用する必要があります。基本的な概念とAPIを学んでいます。ただし、公式ドキュメントAPI javadocsの両方が古く、不完全で、一般的に混沌としていて、存在しないため、それを学び、いくつかのプロトタイプをプログラムするのは非常に難しいと思います。

私が理解していない考えはほんのわずかです。Hadoop0.22.0のMapReduceチュートリアルでは、非推奨のクラスのコンストラクター(ここでは101行目)を使用しています。Job他のすべてのコンストラクターも非推奨になりました。代わりに何を使用するかについては、javadocsに注記がありません。Jobのインスタンスを返すクラスの静的メソッドがありますがJob、それらのメソッドは文書化されておらずCluster、パラメーターとして文書化が不十分なクラスのインスタンスを必要とします。そのため、その混乱をすべて読んだ後でも、のインスタンスを適切に取得する方法がわかりませんJob。これに関するどんな助けもありがたいです。

1.0.4安定版などの新しいバージョンのチュートリアルで答えを見つけようとしたところ、そのバージョンのmapreduceチュートリアルでorg.apache.hadoop.mapredは、バージョン0.22.0で非推奨となったパッケージのすべてのクラスが使用されていることがわかりました。したがって、0.22.0は1.0.4よりも憤慨しています。これを理解するのを手伝ってください。または、より良いリソースを提案します。

4

1 に答える 1

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オブジェクトの作成時にnullに設定することにより、この接続を遅延初期化するオプションがあります。Clusterこの場合、本当に必要なときにJobクラスに接続を許可します(詳細については、こちらを参照してください)。

Job job = Job.getInstance(conf);
于 2012-11-06T00:04:05.263 に答える