spark-submit.sh 스크립트
제공된 spark-submit.sh 스크립트를 사용하여 클라이언트 시스템에서 Apache Spark 애플리케이션을 실행하고 관리할 수 있습니다. 이 스크립트는 Apache Spark가 제공한 spark-submit 스크립트가 사용한 구성 특성의 서브세트를 인식합니다. 이는 Db2® Warehouse 내 Spark 애플리케이션의 관리에 대해 고유한 추가 명령 및 환경 변수 또한 도입합니다.
제한사항
Db2 Warehouse용 spark-submit.sh 스크립트:
- Linux 및 MacOS 운영 체제에서만 사용 가능
- Scala, Java™, R, 및 Python 애플리케이션 제출에만 사용 가능
- SSL 인증서 확인 미지원(인증서가 무시되며 피어 확인이 수행되지 않음)
전제조건
spark-submit.sh 스크립트를 사용하려면 먼저 cURL 명령행 도구를 다운로드하고 설치해야 합니다. 추가 정보는 필수 REST 툴링의 내용을 참조하십시오.
시작하기 전에
시작하기 전에 다음 작업을 수행하십시오.
- 콘솔에서 spark-submit.sh 스크립트를 다운로드하십시오. 이를 수행하려면 를 클릭하십시오.
- 다음 export 명령 중 하나 이상을 입력하여 spark-submit.sh의 사용을 간소화하는 환경 변수를 설정하십시오.
이러한 환경 변수를 설정하면 spark-submit.sh를 사용할 때마다 동일한 정보를 지정할 필요가 없습니다.export DASHDBURL="https://hostname:8443 # The URL of your dashDB web console. export DASHDBUSER=user-name # Your user name. export DASHDBPASS=password # Your password. export DASHDBJSONOUT=YES|NO # Whether output is to be returned in JSON (YES) or readable (NO) format.
구문
설명
- file_name
- 제출되는 애플리케이션 코드를 포함하는 파일의 이름입니다.
- arguments
- 실행되는 애플리케이션에 대한 입력으로 필요한 인수를 지정합니다.
- --class
- Java 또는 Scala로 작성된 애플리케이션 코드의 경우 이 옵션은 기본 클래스의 이름을 지정합니다.
- --jars
- Java 또는 Scala로 작성된 애플리케이션 코드의 경우 이 옵션은 애플리케이션에서 사용하는 .jar 파일의 쉼표로 구분된 목록을 지정합니다. 이러한 파일은 $HOME/spark/apps 디렉토리에 있어야 합니다.
- --py-files
- Python으로 작성된 애플리케이션 코드의 경우 이 옵션은 애플리케이션에서 사용하는 .py, .zip 또는 .egg 파일의 쉼표로 구분된 목록을 지정합니다. 이러한 파일은 $HOME/spark/apps 디렉토리에 있어야 합니다.
- --name
- 이 옵션은 실행되는 애플리케이션에 지정되는 이름을 지정합니다. 이 옵션이 지정되지 않은 경우에는 이름이 클래스 이름(Java 또는 Scala 애플리케이션의 경우) 또는 파일 이름(Python 또는 R 애플리케이션의 경우)으로 설정됩니다.
- --loc
- 이 옵션은 제출되는 애플리케이션 코드를 포함하는 파일의 위치를 지정합니다.
- host
- 파일이 Db2 Warehouse 호스트 시스템에 있습니다. 파일 이름에 지정된 경로 정보는 파일의 경로($HOME/spark/apps 디렉토리에 대해 상대적)를 나타냅니다. 이는 기본값입니다.
- client
- 파일이 클라이언트 시스템에 있습니다. 파일 이름에 지정된 경로 정보는 파일의 경로(현재 디렉토리에 대해 상대적)를 나타냅니다. 파일은 제출되기 전에 자동으로 $HOME/spark/apps/temp 디렉토리에 배치되며 해당 디렉토리에 이미 있는 같은 이름을 가진 파일을 모두 겹쳐씁니다.
- 파일이 호스트에 있는 $HOME/spark/apps/subdir6/cool.jar인 경우:
./spark-submit.sh --class c.myclass subdir6/cool.jar --loc host - 파일이 클라이언트에 있는 ./subdir6/cool.jar인 경우:
./spark-submit.sh --class c.myclass subdir6/cool.jar --loc client
- --master
- 애플리케이션이 제출되는 Db2 Warehouse URL이 현재 설정된 Db2 Warehouse URL과 다른 경우에는 이 옵션을 사용하여 새 URL을 지정하십시오. 애플리케이션이 단일 작업자 스레드가 있는 로컬 Spark 컨텍스트에서 실행되는 경우에는 local을 지정하십시오.
- --load-samples
- 이 옵션은 다음 파일에 포함된 샘플 Spark 애플리케이션 코드를 $HOME/spark/apps 디렉토리에 로드합니다.
idax_examples.jar ReadExample.py ReadExampleJson.py ReadWriteExampleKMeans.py ReadWriteExampleKMeansJson.py ExceptionExample.py SqlPredicateExample.py example_utilities.egg ReadExample.R ReadExampleJson.R ReadWriteExampleKMeans.R ReadWriteExampleKMeansJson.R ExceptionExample.R SqlPredicateExample.R example_utilities.R - --upload-file
- 이 옵션은 클라이언트 시스템의 지정된 소스 디렉토리에서 지정된 옵션에 해당하는 디렉토리로 지정된 파일을 업로드합니다.
- apps
- $HOME/spark/apps 디렉토리에 업로드합니다. 특정 애플리케이션에서 사용할 수 있도록 설정할 파일의 경우 이 대상을 사용하십시오. 이는 기본 옵션입니다.
- defaultlibs
- $HOME/spark/defaultlibs 디렉토리에 업로드합니다. 사용자의 모든 애플리케이션에서 사용할 수 있도록 설정할 파일의 경우 이 대상을 사용하십시오.
- globallibs
- /globallibs 디렉토리에 업로드합니다. 이 옵션은 관리자 액세스 권한을 필요로 합니다. 모든 사용자의 모든 애플리케이션에서 사용할 수 있도록 설정할 파일의 경우 이 대상을 사용하십시오.
- --user
- 관리자는 사용자의 $HOME/spark/apps 또는 $HOME/spark/defaultlibs 디렉토리에서 파일을 업로드하거나, 다운로드하거나 삭제하는 등과 같이 다른 사용자를 대신하여 일부 명령을 실행할 수 있습니다. 이 옵션은 명령이 대신 실행되는 사용자의 이름을 지정합니다.
- --download-file
- 이 옵션은 지정된 옵션에 해당하는 디렉토리에서 클라이언트 시스템의 현재 디렉토리로 지정된 파일을 다운로드합니다.
- apps
- $HOME/spark/apps 디렉토리에서 다운로드합니다. Spark에 제출할 애플리케이션 코드를 포함하는 파일의 경우 이 대상을 사용하십시오. 이는 기본 옵션입니다.
- defaultlibs
- $HOME/spark/defaultlibs 디렉토리에서 다운로드합니다. 사용자의 모든 애플리케이션에서 사용할 수 있도록 설정할 파일의 경우 이 대상을 사용하십시오.
- globallibs
- /globallibs 디렉토리에서 다운로드합니다. 이 옵션은 관리자 액세스 권한을 필요로 합니다. 모든 사용자의 모든 애플리케이션에서 사용할 수 있도록 설정할 파일의 경우 이 대상을 사용하십시오.
- --dir
- 파일이 다운로드될 클라이언트 시스템의 기존 디렉토리로, 예를 들면 다음과 같습니다.
- --dir target1
- 대상 디렉토리가 현재 디렉토리의 서브디렉토리입니다.
- --dir /target1
- 대상 디렉토리가 루트 디렉토리의 서브디렉토리입니다.
- --dir ../target1
- 대상 디렉토리가 현재 디렉토리와 동일한 레벨에 있습니다.
- --list-files
- 이 옵션은 지정된 옵션에 해당하는 디렉토리에 있는 파일을 나열합니다.
- apps
- $HOME/spark/apps 디렉토리에 있는 파일을 나열합니다. 이는 기본 옵션입니다.
- defaultlibs
- $HOME/spark/defaultlibs 디렉토리에 있는 파일을 나열합니다.
- globallibs
- /globallibs 디렉토리에 있는 파일을 나열합니다. 이 옵션은 관리자 액세스 권한을 필요로 합니다.
- --delete-file
- 이 옵션은 지정된 옵션에 해당하는 디렉토리에서 지정된 파일을 삭제합니다.
- apps
- $HOME/spark/apps 디렉토리에서 삭제합니다. 이는 기본 옵션입니다.
- defaultlibs
- $HOME/spark/defaultlibs 디렉토리에서 삭제합니다.
- globallibs
- globallibs 디렉토리에서 삭제합니다. 이 옵션은 관리자 액세스 권한을 필요로 합니다.
- --cluster-status
- 이 옵션은 현재 실행 중인 애플리케이션의 수와 같은, Spark 클러스터의 상태에 대한 정보를 검색합니다.
- --app-status
- 이 옵션은 지정된 제출 ID를 가진 애플리케이션의 상태에 대한 정보를 검색합니다.
- --list-apps
- 이 옵션은 현재 실행 중이거나 클러스터가 마지막으로 시작된 후 실행된 모든 애플리케이션에 대한 정보를 검색합니다.
- --download-cluster-logs
- 이 옵션은 Spark 클러스터의 마스터 및 작업자 프로세스의 표준 오류 및 표준 출력 로그를 검색합니다.
- --download-app-logs
- 이 옵션은 지정된 제출 ID를 가진 애플리케이션의 모든 로그 파일을 검색합니다. 제출 ID가 지정되지 않은 경우에는 가장 최근의 애플리케이션의 로그 파일이 검색됩니다.
- --kill
- 이 옵션은 지정된 제출 ID를 가진, 실행 중인 애플리케이션을 취소합니다.
- --jsonout
- 이 옵션은 spark-submit.sh 스크립트가 출력을 JSON 형식으로 표시하도록 지정합니다. 이 옵션은 DASHDBJSONOUT 환경 변수의 설정을 대체합니다.
- --display-cluster-log
- 이 옵션은 지정된 유형의 클러스터 로그 파일의 컨텐츠를 표시합니다.
- out
- 표준 출력 로그 파일입니다.
- err
- 표준 오류 로그 파일입니다.
- master
- 클러스터의 마스터 노드의 로그 파일입니다.
- worker
- 지정된 IP 주소를 가진 작업자 노드의 로그 파일입니다.
- --display-app-log
- 이 옵션은 지정된 제출 ID를 가진 애플리케이션의, 지정된 유형의 로그 파일의 컨텐츠를 표시합니다.
- app
- 애플리케이션 로그 파일입니다.
- out
- 표준 출력 로그 파일입니다.
- err
- 표준 오류 로그 파일입니다.
- info
- JSON 형식으로 된, 애플리케이션으로부터의 리턴 코드, 메시지 및 예외 로그를 포함하는 정보 로그 파일입니다.
- --webui-url
- 이 옵션은 클러스터를 모니터하는 데 사용할 수 있는 Spark 웹 사용자 인터페이스(UI)의 URL을 검색합니다. 이 URL의 이름 형식은 다음과 같습니다.
http://dashDB-hostname:port - --env
- 이 옵션은 다음 환경 변수의 설정을 검색합니다.
- DASHDBURL
- Db2 Warehouse 웹 콘솔의 URL을 설정합니다.
- DASHDBUSER
- Db2 Warehouse 웹 콘솔에 로그인하는 데 사용된 사용자 이름을 설정합니다.
- DASHDBPASS
- Db2 Warehouse 웹 콘솔에 로그인하는 데 사용된 암호를 설정합니다.
- DASHDBJSONOUT
- 출력을 JSON 형식으로 리턴할지(YES) 또는 사람이 읽을 수 있는 형식으로 리턴할지(NO) 지정합니다.
- --version
- 이 옵션은 사용 중인 spark-submit.sh 스크립트의 버전 및 Db2 Warehouse의 빌드 레벨을 표시합니다.
- --help
- 이 옵션은 spark-submit.sh 스크립트의 구문에 대한 설명을 표시합니다.
출력 형식
DASHDBJSONOUT 환경 변수는 spark-submit.sh 스크립트에서 리턴하는 출력의 기본 형식을 지정합니다.
- DASHDBJSONOUT=YES
- 출력이 JSON 형식으로 리턴됩니다. 이 형식은 다른 프로그램에서 처리하는 데 적합합니다. 예를 들면,
--clusterstatus명령의 출력은 다음과 유사합니다.{"statusDesc":"Cluster is running.","resultCode":200,"clusters":[{"running_jobs":1, "monitoring_url":"http:\/\/9.152.63.165:25005","username":"user42"}],"username": "user42","status":"running"} - DASHDBJSONOUT=NO
- 출력이 사람이 읽을 수 있는 형식으로 리턴됩니다. 이는 기본값입니다. 예를 들면, --clusterstatus 명령의 출력은 다음과 유사합니다.
status: Running statusDesc: Cluster is running. running jobs: 1
예제
- 클라이언트 시스템의 현재 디렉토리의 jars 서브디렉토리에 있는 idax_examples.jar 파일의 애플리케이션 코드를 기반으로 Scala로 작성된 애플리케이션을 실행합니다.
./spark-submit.sh jars/idax_examples.jar --loc client --class com.ibm.idax.spark.examples.ReadExample - ReadExample.py 파일의 애플리케이션 코드를 기반으로, example_utilities.egg 파일의 컨텐츠도 필요로 하는 Python으로 작성된 애플리케이션을 실행합니다(두 파일은 모두 호스트에 있음).
./spark-submit.sh ReadExample.py --py-files example_utilities.egg --loc host - ReadExample.R 파일의 애플리케이션 코드를 기반으로 R로 작성된 애플리케이션을 실행합니다.
./spark-submit.sh ReadExample.R - 제출 ID가 20160815210608126000인 작업을 취소합니다.
./spark-submit.sh --kill 20160815210608126000 - $HOME/spark/apps 디렉토리에 포함된 파일을 나열합니다.
./spark-submit.sh --list-files apps
