spark-submit.sh 스크립트

제공된 spark-submit.sh 스크립트를 사용하여 클라이언트 시스템에서 Apache Spark 애플리케이션을 실행하고 관리할 수 있습니다. 이 스크립트는 Apache Spark가 제공한 spark-submit 스크립트가 사용한 구성 특성의 서브세트를 인식합니다. 이는 Db2® Warehouse 내 Spark 애플리케이션의 관리에 대해 고유한 추가 명령 및 환경 변수 또한 도입합니다.

제한사항

Db2 Warehousespark-submit.sh 스크립트:

  • Linux 및 MacOS 운영 체제에서만 사용 가능
  • Scala, Java™, R, 및 Python 애플리케이션 제출에만 사용 가능
  • SSL 인증서 확인 미지원(인증서가 무시되며 피어 확인이 수행되지 않음)

전제조건

spark-submit.sh 스크립트를 사용하려면 먼저 cURL 명령행 도구를 다운로드하고 설치해야 합니다. 추가 정보는 필수 REST 툴링의 내용을 참조하십시오.

시작하기 전에

시작하기 전에 다음 작업을 수행하십시오.

  • 콘솔에서 spark-submit.sh 스크립트를 다운로드하십시오. 이를 수행하려면 연결 > 도구 다운로드 > 데이터베이스 지원 도구를 클릭하십시오.
  • 다음 export 명령 중 하나 이상을 입력하여 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.
    이러한 환경 변수를 설정하면 spark-submit.sh를 사용할 때마다 동일한 정보를 지정할 필요가 없습니다.

구문

구문 도표 읽기시각적 구문 도표 생략 spark-submit.sh file_nameargumentsapplication options--load-samples--upload-fileappsdefaultlibsgloballibssource_path--useruser_name--download-fileappsdefaultlibsgloballibsfile_name--useruser_name--dirtarget_dir--list-filesappsdefaultlibsgloballibs--useruser_name--delete-fileappsdefaultlibsgloballibspath--useruser_name--cluster-status--app-statussubmission_ID--list-apps--download-cluster-logs--dirtarget_dir--download-app-logssubmission_ID--dirtarget_dir--killsubmission_ID--jsonout--display-cluster-logouterrmasterworkerIP_address--display-app-logappouterrinfosubmission_ID--webui-url--env--version--help
애플리케이션 옵션
구문 도표 읽기시각적 구문 도표 생략--classmain_class--jars,file_name--py-files,file_name--nameapplication_id--namename--lochost--locclient--masterhttps://dashDB_host:8443local

설명

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 디렉토리에 배치되며 해당 디렉토리에 이미 있는 같은 이름을 가진 파일을 모두 겹쳐씁니다.
예를 들면, 다음 두 명령은 동일한 파일 경로(subdir6/cool.jar)를 지정하지만 서로 다른 파일 위치를 지정합니다.
  • 파일이 호스트에 있는 $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 형식으로 된, 애플리케이션으로부터의 리턴 코드, 메시지 및 예외 로그를 포함하는 정보 로그 파일입니다.
제출 ID가 지정되지 않은 경우에는 가장 최근에 제출된 애플리케이션의 로그 파일이 표시됩니다.
--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
단일 명령에 대해 --jsonout 옵션을 지정하여 해당 명령에 대해 이 설정을 대체할 수 있습니다.

예제

  • 클라이언트 시스템의 현재 디렉토리의 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