복붙노트

[HADOOP] Eclipse의 하둡 및 리듀서 수

HADOOP

Eclipse의 하둡 및 리듀서 수

내 mapReduce 프로그램에서 Partitionner를 사용해야합니다.

public class TweetPartitionner extends HashPartitioner<Text, IntWritable>{

    public int getPartition(Text a_key, IntWritable a_value, int a_nbPartitions) {
        if(a_key.toString().startsWith("#"))
            return 0;
        else
            return 1;
    }

}

그리고 축소 작업 수를 설정했습니다. job.setNumReduceTasks (2);

그러나 다음과 같은 오류가 발생합니다. java.io.IOException : #rescinfo의 잘못된 파티션 (1)

매개 변수 a_nbPartitions는 1을 반환합니다.

다른 게시물을 읽었습니다. Hadoop : 감속기의 수가 프로그램에서 설정 한 것과 같지 않습니다.

Cygwin에 설치된 Hadoop 0.20.2를 개발하고 물론 Eclipse를 사용합니다. 어떻게해야합니까?

해결법

  1. ==============================

    1.실제로 전용 Hadoop 클러스터가 필요하지 않습니다. 단지 의사 분산 클러스터에서이 작업을 실행하고 자체적으로 로컬로 실행하지 않도록 Eclipse에 알려 주어야합니다. 그렇게하려면 코드에 다음 줄을 추가해야합니다.

    실제로 전용 Hadoop 클러스터가 필요하지 않습니다. 단지 의사 분산 클러스터에서이 작업을 실행하고 자체적으로 로컬로 실행하지 않도록 Eclipse에 알려 주어야합니다. 그렇게하려면 코드에 다음 줄을 추가해야합니다.

    Configuration conf = new Configuration();
    conf.set("fs.default.name", "hdfs://localhost:9000");
    conf.set("mapred.job.tracker", "localhost:9001");
    

    그리고 그 후 감속기를 2를 통해 설정하십시오.

    job.setNumReduceTasks(2);
    

    그리고 네, 파티 셔너 로직에 대해 매우 확신해야합니다. 이 페이지를 방문하면 커스텀 파티 셔 너를 작성하는 방법을 알 수 있습니다.

    HTH

  2. ==============================

    2.작업을 실행할 전용 hadoop 클러스터가있을 때까지 로컬 모드에서 둘 이상의 감속기를 가질 수있는 방법은 없습니다. 그래도 작업을 hadoop 클러스터에 제출하도록 Eclipse를 구성 할 수 있으며 구성이 고려됩니다.

    작업을 실행할 전용 hadoop 클러스터가있을 때까지 로컬 모드에서 둘 이상의 감속기를 가질 수있는 방법은 없습니다. 그래도 작업을 hadoop 클러스터에 제출하도록 Eclipse를 구성 할 수 있으며 구성이 고려됩니다.

    모든 경우에, 자신의 파티 셔 너를 작성할 때 항상 return Math.min (i, a_nbPartitions-1)을 사용해야합니다.

  3. from https://stackoverflow.com/questions/17298659/hadoop-and-number-of-reducers-in-eclipse by cc-by-sa and MIT license