복붙노트

[SCALA] 불꽃 제출 - 스파크 작업에 항아리를 추가

SCALA

불꽃 제출 - 스파크 작업에 항아리를 추가

사실 ... 꽤 많이 논의되고있다.

그러나이 모호함의 많은과 답변의 일부는 병 / 실행기 / 드라이버 구성 또는 옵션의 항아리 참조 중복 포함 ... 제공했다.

다음 모호함, 불분명, 및 / 생략 세부 사항은 각 옵션에 대해 명확히해야한다 또는 :

나는 주 스파크 문서를 찾을 수있는 곳을 알고, 특히도의 JavaDoc를 사용할 수있는 옵션을, 제출하는 방법에 대해 생각합니다. 너무 부분적으로 대답 그러나, 비록 나 여전히 꽤 구멍을 떠났다 그.

나는 모든 것을 복잡하지, 누군가가 나에게 명확하고 간결한 대답을 줄 수 있기를 바랍니다.

나는이 문서에서 생각한다면, 그 --jars 보인다, 그리고 SparkContext addJar 및 addFile 방법은 다른 옵션은 단순히 클래스 경로를 수정하는 동안 자동으로 파일을 배포 할 것들입니다.

간단하게하기 위해, 내가 같은 시간에 3 주 옵션을 사용하여 추가 응용 프로그램 jar 파일을 추가 할 수 있다고 가정하는 것이 안전 할 것입니다 :

spark-submit --jar additional1.jar,additional2.jar \
  --driver-library-path additional1.jar:additional2.jar \
  --conf spark.executor.extraLibraryPath=additional1.jar:additional2.jar \
  --class MyClass main-application.jar

다른 게시물에 대한 답변에 좋은 기사를 발견했다. 그러나 아무것도 새로운 배운 없습니다. 포스터 로컬 드라이버 (원사 클라이언트) 및 원격 드라이버 (실 클러스터)의 차이에 좋은 말을하지 않습니다. 명심하는 것이 확실히 중요합니다.

해결법

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

    1.클래스 경로는 사용자가 제공 한 내용에 따라 영향을 받는다. 클래스 패스에 무엇인가를 설정하는 방법에는 몇 가지가 있습니다 :

    클래스 경로는 사용자가 제공 한 내용에 따라 영향을 받는다. 클래스 패스에 무엇인가를 설정하는 방법에는 몇 가지가 있습니다 :

    당신이 특정 JAR가 마스터와 노동자 모두에 영향을받을하려는 경우, 당신은 둘 다 플래그에 별도로를 지정해야합니다.

    JVM이 같은 규칙에 따라 :

    이것은 당신이 아래 작업을 실행하는 모드에 따라 달라집니다

    "제출 응용 프로그램"에서 스파크 문서 파일에 대한 허용 접두사를 설명의 좋은 일을한다 :

    언급 한 바와 같이, JAR 파일은 각 작업자 노드의 작업 디렉토리에 복사됩니다. 이 정확히 어디에 있습니까? 그것은 당신이처럼 그들을 볼 수,의 / var / 실행 / 스파크 / 일에서 보통이다 :

    drwxr-xr-x    3 spark spark   4096 May 15 06:16 app-20160515061614-0027
    drwxr-xr-x    3 spark spark   4096 May 15 07:04 app-20160515070442-0028
    drwxr-xr-x    3 spark spark   4096 May 15 07:18 app-20160515071819-0029
    drwxr-xr-x    3 spark spark   4096 May 15 07:38 app-20160515073852-0030
    drwxr-xr-x    3 spark spark   4096 May 15 08:13 app-20160515081350-0031
    drwxr-xr-x    3 spark spark   4096 May 18 17:20 app-20160518172020-0032
    drwxr-xr-x    3 spark spark   4096 May 18 17:20 app-20160518172045-0033
    

    당신이 내부를 볼 때, 당신은 당신이 함께 배포 된 모든 JAR 파일을 볼 수 있습니다 :

    [*@*]$ cd /var/run/spark/work/app-20160508173423-0014/1/
    [*@*]$ ll
    total 89988
    -rwxr-xr-x 1 spark spark   801117 May  8 17:34 awscala_2.10-0.5.5.jar
    -rwxr-xr-x 1 spark spark 29558264 May  8 17:34 aws-java-sdk-1.10.50.jar
    -rwxr-xr-x 1 spark spark 59466931 May  8 17:34 com.mycode.code.jar
    -rwxr-xr-x 1 spark spark  2308517 May  8 17:34 guava-19.0.jar
    -rw-r--r-- 1 spark spark      457 May  8 17:34 stderr
    -rw-r--r-- 1 spark spark        0 May  8 17:34 stdout
    

    이해하기 위해 가장 중요한 것은 우선 순위입니다. 당신이 코드를 통해 재산을 전달하는 경우, 당신이 불꽃 제출을 통해 지정한 옵션보다 우선합니다. 이것은 스파크 문서에서 언급 한 :

    그래서 당신은 적절한 장소에서 그 값을 설정해야합니다, 그래서 하나가 다른보다 우선 할 때 놀라지 않을 것입니다.

    문제의 각 옵션을 분석 할 수 있습니다 :

    당신은 안전 모드를 클러스터하지 만 클라이언트 모드에 대해이 작업을 가정 할 수있다. 나는했습니다으로 이전했다. 또한, 당신이 준 예는 일부 중복 인수를 가지고 있습니다. 예를 들어, 단지를 통과하는 --driver 라이브러리 경로가 쓸모없는, 당신은 당신이 그들을 당신의 클래스 패스에 원하는 경우 extraClassPath에게 전달해야합니다. 궁극적으로, 당신은 당신이 외부 JAR 파일을 배포 할 때 운전자와 작업자 모두가에 수행 할 작업 :

    spark-submit --jars additional1.jar,additional2.jar \
      --driver-class-path additional1.jar:additional2.jar \
      --conf spark.executor.extraClassPath=additional1.jar:additional2.jar \
      --class MyClass main-application.jar
    
  2. ==============================

    2.스파크 2.1.0의 또 다른 방법은 항아리에 사용자를 우선 순위를 부여하여, 스파크 - 작업의 동작을 종속 부하의 우선 순위를 변경, 따라서 어떤 불꽃 제출시 --conf spark.driver.userClassPathFirst = true를 사용하는 것입니다 --jars 옵션을 사용하여 클래스 경로에 추가됩니다.

    스파크 2.1.0의 또 다른 방법은 항아리에 사용자를 우선 순위를 부여하여, 스파크 - 작업의 동작을 종속 부하의 우선 순위를 변경, 따라서 어떤 불꽃 제출시 --conf spark.driver.userClassPathFirst = true를 사용하는 것입니다 --jars 옵션을 사용하여 클래스 경로에 추가됩니다.

  3. ==============================

    3.다음과 같이 배포 모드와 원사의 경우 항아리와 클래스 패스에 관련 구성 스파크 옵션은 있습니다 스파크 문서에서,

    다음과 같이 배포 모드와 원사의 경우 항아리와 클래스 패스에 관련 구성 스파크 옵션은 있습니다 스파크 문서에서,

    사용자가 어떤 inturn 스파크 드라이버의 클래스 경로에 포함됩니다 자신의 항아리를 지정하려면이 매개 변수를 구성 할 수 있습니다.

  4. ==============================

    4.--jars 사용에 제한이 : 당신이 항아리 / XML 파일의 위치에 대한 디렉토리를 지정하려는 경우,이 디렉토리의 확장을 허용하지 않습니다. 각 단지에 대한 절대 경로를 지정해야하는 경우는 것을 의미한다.

    --jars 사용에 제한이 : 당신이 항아리 / XML 파일의 위치에 대한 디렉토리를 지정하려는 경우,이 디렉토리의 확장을 허용하지 않습니다. 각 단지에 대한 절대 경로를 지정해야하는 경우는 것을 의미한다.

    당신이 --driver - 클래스 경로를 지정하고 실 클러스터 모드에서 실행하는 경우, 드라이버 클래스는 업데이트되지 않습니다. 클래스 경로가 업데이트 여부 탭 환경에서 스파크 UI 또는 스파크 역사 서버 아래 경우 우리는 확인할 수 있습니다.

    --conf 옵션은 디렉토리 확장을 포함, 항아리를 전달하는 나를 위해 일한 옵션 원사 클러스터 모드에서 일했다. 그것은 그들이 세션 객체 자체를 촉발 추가하고 그 경로가 스파크 구성에 반영되는, --conf로 드라이버와 실행 프로그램 클래스 경로를 통과하는 것이 좋습니다. 그러나 클러스터에서 동일한 경로에 항아리를 넣어 있는지 확인하십시오.

    spark-submit \
      --master yarn \
      --queue spark_queue \
      --deploy-mode cluster    \
      --num-executors 12 \
      --executor-memory 4g \
      --driver-memory 8g \
      --executor-cores 4 \
      --conf spark.ui.enabled=False \
      --conf spark.driver.extraClassPath=/usr/hdp/current/hbase-master/lib/hbase-server.jar:/usr/hdp/current/hbase-master/lib/hbase-common.jar:/usr/hdp/current/hbase-master/lib/hbase-client.jar:/usr/hdp/current/hbase-master/lib/zookeeper.jar:/usr/hdp/current/hbase-master/lib/hbase-protocol.jar:/usr/hdp/current/spark2-thriftserver/examples/jars/scopt_2.11-3.3.0.jar:/usr/hdp/current/spark2-thriftserver/examples/jars/spark-examples_2.10-1.1.0.jar:/etc/hbase/conf \
      --conf spark.hadoop.mapred.output.dir=/tmp \
      --conf spark.executor.extraClassPath=/usr/hdp/current/hbase-master/lib/hbase-server.jar:/usr/hdp/current/hbase-master/lib/hbase-common.jar:/usr/hdp/current/hbase-master/lib/hbase-client.jar:/usr/hdp/current/hbase-master/lib/zookeeper.jar:/usr/hdp/current/hbase-master/lib/hbase-protocol.jar:/usr/hdp/current/spark2-thriftserver/examples/jars/scopt_2.11-3.3.0.jar:/usr/hdp/current/spark2-thriftserver/examples/jars/spark-examples_2.10-1.1.0.jar:/etc/hbase/conf \
      --conf spark.hadoop.mapreduce.output.fileoutputformat.outputdir=/tmp
    
  5. ==============================

    5.우리는 유틸리티를 불꽃 제출하여 스파크 작업을 제출하는 동안, 옵션 --jars있다. 이 옵션을 사용하여, 우리는 응용 프로그램을 촉발하는 jar 파일을 전달할 수 있습니다.

    우리는 유틸리티를 불꽃 제출하여 스파크 작업을 제출하는 동안, 옵션 --jars있다. 이 옵션을 사용하여, 우리는 응용 프로그램을 촉발하는 jar 파일을 전달할 수 있습니다.

  6. from https://stackoverflow.com/questions/37132559/add-jars-to-a-spark-job-spark-submit by cc-by-sa and MIT license