복붙노트

[HADOOP] Map 이클립스 2.4.1에 대한 클라이언트 jar 줄이기

HADOOP

Map 이클립스 2.4.1에 대한 클라이언트 jar 줄이기

쉘에서 hadoop 폴더에있는 hadoop mapreduce word count jar를 실행할 때 제대로 실행되고 출력이 올바르게 생성됩니다.

hadoop 2.4.1의 경우 원사를 사용하기 때문에 MapReduce 샘플 프로그램에서 eclipse를 실행하면 MAP 프로세스가 완료되고 감축 프로세스가 실패합니다.

그 문제는 병 구성과 관련이 있다는 것이 분명합니다.

항아리를 찾으십시오, 제가 추가했습니다 ...

이것은 내가 가진 오류이다.

해결법

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

    1.스크린 샷에 따라 모든 종속 jar를 클래스 경로에 수동으로 추가하고 있습니다. 이 작업을 위해 maven을 사용하는 것이 강력히 권장되며, 종속 경로를 클래스 패스에 추가하는 과정을 자동화합니다. 주요 의존 항아리를 추가하기 만하면됩니다. pom.xml에 다음과 같은 종속성을 사용했는데 어떤 문제없이 실행할 수있었습니다.

    스크린 샷에 따라 모든 종속 jar를 클래스 경로에 수동으로 추가하고 있습니다. 이 작업을 위해 maven을 사용하는 것이 강력히 권장되며, 종속 경로를 클래스 패스에 추가하는 과정을 자동화합니다. 주요 의존 항아리를 추가하기 만하면됩니다. pom.xml에 다음과 같은 종속성을 사용했는데 어떤 문제없이 실행할 수있었습니다.

    <properties>
        <hadoop.version>2.5.2</hadoop.version>
    </properties>
    
    <dependencies>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-hdfs</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-mapreduce-client-core</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-yarn-api</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-yarn-common</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-auth</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-yarn-server-nodemanager</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-yarn-server-resourcemanager</artifactId>
                <version>${hadoop.version}</version>
            </dependency>
        </dependencies>  
    

    너의 문제에 와서, 클래스 패스를 조사한 결과 정확히 82 개의 jar 파일을 사용할 수 있습니다. 이렇게 각 항아리를 찾는 것은 지루한 일입니다. 여기에 기능적인 현명한 병을 추가 할 수 있습니다. 다른 해결 방법은 설치된 hadoop 디렉토리 경로에있는 모든 jar 파일을 / share / hadoop /으로 추가하고 모든 lib 폴더의 모든 jar 파일을 추가하는 것입니다. 당신이 할 수있는 최선의 방법입니다. 스크린 샷에 따라 avro 클래스에 의해 throw 된 예외 때문에 avro 특정 jar 만 추가하십시오. 이것은 avro jars 문제를 해결할 수 있습니다. 그러나 당신은 다른 의존적 인 문제에 직면 할 수 있습니다.  또한 Hadoop V1을 사용하면서 동일한 문제에 직면했습니다. 그래서 나중에 Maven을 Hadoop V2와 함께 사용하고 사용했다. 따라서 의존 항아리에 대한 걱정은 없습니다.  Hadoop 및 비즈니스 요구 사항에 중점을 둡니다. :) 희망은 당신을 돕는다 ..

  2. from https://stackoverflow.com/questions/27063886/map-reduce-client-jars-for-2-4-1-hadoop-in-eclipse by cc-by-sa and MIT license