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 コマンドを 1 つ以上入力して、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 を指定します。ワーカー・スレッドが 1 つのローカル 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 Web ユーザー・インターフェース (UI) の URL を取得できます。この URL の名前は次の形式です。
http://dashDB-hostname:port - --env
- このオプションを使用すると、以下の環境変数の設定を取得できます。
- DASHDBURL
- Db2 Warehouse Web コンソールの URL を設定します。
- DASHDBUSER
- Db2 Warehouse Web コンソールへのログインに使用するユーザー名を設定します。
- DASHDBPASS
- Db2 Warehouse Web コンソールへのログインに使用するパスワードを設定します。
- 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
例
- idax_examples.jar ファイルのアプリケーション・コードを基に Scala で作成されたアプリケーションを起動します。そのファイルは、クライアント・システムの現行ディレクトリーの jars サブディレクトリーにあります。
./spark-submit.sh jars/idax_examples.jar --loc client --class com.ibm.idax.spark.examples.ReadExample - ReadExample.py ファイルのアプリケーション・コードを基に Python で作成されたアプリケーションを起動します。このアプリケーションには、example_utilities.egg ファイルの内容も必要です (ファイルは両方ともホスト上にあります)。
./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
