spark-shell의 패키지 리졸버에 시작 시 프록시를 넘기기
--packages 해석 전에 드라이버 JVM 프록시 속성을 제공하세요. 나중에 입력하는 셸 코드와 executor 설정은 그 다운로드를 놓칠 수 있습니다.
spark-shell --driver-java-options "-Dhttp.proxyHost=proxy.example -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example -Dhttps.proxyPort=8080" --packages group:artifact:version클라이언트 측 spark-shell 실행에서는 이 드라이버 JVM 옵션이 의존성 해석보다 먼저 도착합니다. 예시 엔드포인트와 group:artifact:version은 설치된 Spark 버전이 지원하는 옵션을 사용해 의도한 값으로 바꾸세요. Java 호스트 이름과 포트는 별개의 속성입니다. 허용된 공개 의존성 다운로드에는 HTTP 프록시 목록이 해당 필드의 후보를 제공합니다.
셸을 쓸 수 있게 되기 전에 --packages이 실패할 때 이 위치를 사용하세요. 나중에 입력한 애플리케이션 코드는 앞선 다운로드를 고칠 수 없습니다. Spark는 시작 옵션과 프로그램 설정을 구분합니다. 클라이언트 모드에서는 애플리케이션 코드가 실행될 때 드라이버 JVM이 이미 존재합니다.
spark.driver.extraJavaOptions에는 배포 모드도 중요합니다. 드라이버가 다른 머신에서 실행될 수 있고, 그 머신은 프록시로 가는 자체 경로가 필요합니다. executor의 이후 API 요청은 다른 프로세스이자 다른 네트워크 위치입니다. executor를 구성한다고 해서 시작 시 해석이 반드시 구성되지는 않습니다.
시작 옵션은 있는데 다운로드가 실패할 때
저장소 호스트 이름, 요청 유형, 첫 오류를 따라가세요. 메타데이터와 아티팩트는 여러 호스트에서 올 수 있습니다. Maven 호환 저장소 URL이 성공한 Maven 명령이 쓰는 settings.xml을 Spark가 읽는다는 것을 증명하지는 않습니다.
Java 다운로더는 프록시 메커니즘과 필요한 인증을 지원해야 합니다. 호스트/포트 속성은 모든 스킴을 제공하지 않으며, 지어낸 http.proxyUsername 속성이 Java가 이름을 받아들인다는 이유만으로 효력이 생기지는 않습니다. 이 단계를 진단할 때 시작 전 구성과 구체적으로 실패한 다운로드를 함께 두세요.