복붙노트

[HADOOP] EC2에서 spark 클래스 경로 설정 : spark.driver.extraClassPath 및 spark.executor.extraClassPath

HADOOP

EC2에서 spark 클래스 경로 설정 : spark.driver.extraClassPath 및 spark.executor.extraClassPath

maven 의존성에 대해 spark-classPath를 제공하여 응용 프로그램 jar의 크기 줄이기 :

내 클러스터는 hadoop 및 spark가 실행중인 3 개의 ec2 인스턴스를 가지고 있습니다. maven 종속성을 사용하여 jar를 빌드하면 Jar가 모든 노드에서 복제 될 때마다이를 피하기 위해 (100MB 정도) 너무 커집니다. 작업을 실행하십시오.

"maven 패키지"로 maven 패키지를 빌드하지 않으려면 종속성 해결을 위해 각 노드에 모든 maven 종속성을 다운로드 한 다음 jar 경로 아래에 제공해야합니다.

"spark-defaults.conf"의 각 노드에 클래스 경로를 추가했습니다.

spark.driver.extraClassPath        /home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.5/cassandra-driver-core-2.1.5.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar:/home/spark/.m2/repository/com/google/collections/google-collections/1.0/google-collections-1.0.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector-java_2.10/1.2.0-rc1/spark-cassandra-connector-java_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector_2.10/1.2.0-rc1/spark-cassandra-connector_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/org/apache/cassandra/cassandra-thrift/2.1.3/cassandra-thrift-2.1.3.jar:/home/spark/.m2/repository/org/joda/joda-convert/1.2/joda-convert-1.2.jar

단일 노드에서 로컬로 작동했습니다. 아직도 나는이 오류를 얻고있다. 아무 도움도 인정 될 것이다.

해결법

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

    1.마지막으로, 나는이 문제를 해결할 수 있었다. "mvn clean compile assembly : single"대신 "mvn package"를 사용하여 응용 프로그램 jar를 만들었으므로 jar를 만드는 동안 maven 종속성을 다운로드하지 않습니다 (그러나 이러한 jar / dependencies 런타임을 제공해야 함). size Jar (종속성 참조 만 있으므로).

    마지막으로, 나는이 문제를 해결할 수 있었다. "mvn clean compile assembly : single"대신 "mvn package"를 사용하여 응용 프로그램 jar를 만들었으므로 jar를 만드는 동안 maven 종속성을 다운로드하지 않습니다 (그러나 이러한 jar / dependencies 런타임을 제공해야 함). size Jar (종속성 참조 만 있으므로).

    그런 다음 각 노드의 spark-defaults.conf에 다음 두 매개 변수를 추가했습니다.

    spark.driver.extraClassPath     /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar
    
    spark.executor.extraClassPath     /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar
    

    그래서 질문이 생겨서, 애플리케이션 JAR이 어떻게 maven 의존성 (JAR의 필수) 실행 시간을 얻게 될까요?

    이를 위해 mvn clean 컴파일 어셈블리를 사용하여 각 노드에 필요한 모든 종속성을 다운로드했습니다.

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

    2.모든 jar 파일을 넣을 필요가 없습니다 .Jar 파일을 넣으십시오. 필요한 경우 모든 jar 파일을 넣는 것보다 오류가 다시 발생하는 경우.

    모든 jar 파일을 넣을 필요가 없습니다 .Jar 파일을 넣으십시오. 필요한 경우 모든 jar 파일을 넣는 것보다 오류가 다시 발생하는 경우.

    jars 파일은 setJars () 메소드로 저장해야합니다.

  3. from https://stackoverflow.com/questions/31701273/setting-spark-classpaths-on-ec2-spark-driver-extraclasspath-and-spark-executor by cc-by-sa and MIT license