wiki:III140705/Lab18

◢ <實作十六> | <回課程大綱> ▲ | <實作十九> ◣

實作十八 Lab18

增加 Reducer 個數
Job.setNumReduceTasks(N)

請先連線至 nodeN.3du.me , N 為您的報名編號
  • 在前兩個範例中,我們可以觀察到預設的 reducer 個數是固定的。那我們是否可以修改 reducer 的個數呢?答案是可行的!
    cd ~/hadoop_labs/lab010
    ant
    hadoop fs -rmr input output
    hadoop fs -put ~/hadoop/conf input
    hadoop jar WordCount.jar input output
    hadoop fs -ls output
    hadoop fs -cat output/part-* 
    
  • 實際上 lab010 的程式碼與 lab009 的程式碼只差了以下幾行
    • src/WordCount.java

      diff -Naur lab009/src/WordCount.java lab010/src/WordCount.java
      old new  
      2828    job.setReducerClass(IntSumReducer.class);
      2929    job.setOutputKeyClass(Text.class);
      3030    job.setOutputValueClass(IntWritable.class);
       31    job.setNumReduceTasks(2);
      3132    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
      3233    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
      3334    System.exit(job.waitForCompletion(true) ? 0 : 1);

實作習題

<問題 1> 請問執行任務時,同時有幾個 Reducer?

      (A) 0
      (B) 1
      (C) 2
      (D) 3

<問題 2> 請問執行任務後,最後產生幾個輸出檔?

      (A) 0
      (B) 1
      (C) 2
      (D) 3

<問題 3> 若將 Reducer 個數設為 2,而 mapper 輸出的 key 是 {A,B,C,D}, 其中 A < B < C < D。請問,結果會是以下哪一個?

      (A) {A, B}, {C, D}
      (B) {A, B, C}, {D}
      (C) {A, C}, {B, D}
      (D) {A, D}, {B, C}
Last modified 8 years ago Last modified on Feb 1, 2016, 5:29:37 PM