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
- 此选项将指定的文件从客户机系统上的所指定源目录,上载到对应于指定选项的目录:
- 应用程序
- 上载到 $HOME/spark/apps 目录。对于要提供给特定应用程序使用的文件,请使用此目标。这是缺省选项。
- defaultlibs
- 上载到 $HOME/spark/defaultlibs 目录。对于要提供给所有应用程序使用的文件,请使用此目标。
- globallibs
- 上载到 /globallibs 目录。此选项需要管理员访问权。对于要提供给所有用户的所有应用程序使用的文件,请使用此目标。
- --user
- 管理员可以代表另一用户发出一些命令,例如,将文件上载到该用户的 $HOME/spark/apps 或 $HOME/spark/defaultlibs 目录,或者从这两个目录中下载或删除文件。此选项指定要以其名义发出命令的用户名。
- --download-file
- 此选项将指定的文件从对应于所指定选项的目录下载到客户机系统上的当前目录:
- 应用程序
- 从 $HOME/spark/apps 目录下载。对于包含要提交给 Spark 的应用程序代码的文件,请使用此目标。这是缺省选项。
- defaultlibs
- 从 $HOME/spark/defaultlibs 目录下载。对于要提供给所有应用程序使用的文件,请使用此目标。
- globallibs
- 从 /globallibs 目录下载。此选项需要管理员访问权。对于要提供给所有用户的所有应用程序使用的文件,请使用此目标。
- --dir
- 客户机系统上现有目录的名称,文件将会下载到其中,例如:
- --dir target1
- 目标目录是当前目录的子目录。
- --dir /target1
- 目标目录是根目录的子目录。
- --dir ../target1
- 目标目录与当前目录处于同一层次。
- --list-files
- 此选项列示与指定选项对应的目录中的文件:
- 应用程序
- 列出 $HOME/spark/apps 目录中的文件。这是缺省选项。
- defaultlibs
- 列出 $HOME/spark/defaultlibs 目录中的文件。
- globallibs
- 列出 /globallibs 目录中的文件。此选项需要管理员访问权。
- --delete-file
- 此选项从对应于指定选项的目录中删除指定的文件:
- 应用程序
- 从 $HOME/spark/apps 目录中删除。这是缺省选项。
- defaultlibs
- 从 $HOME/spark/defaultlibs 目录中删除。
- globallibs
- 从 globallibs 目录中删除。此选项需要管理员访问权。
- --cluster-status
- 此选项检索有关 Spark 集群状态的信息,例如当前正在其中运行的应用程序数目。
- --app-status
- 此选项检索具有所指定提交标识的应用程序的状态信息。
- --list-apps
- 此选项检索有关当前正在运行或自最近一次启动集群以来运行的所有应用程序的信息。
- --download-cluster-logs
- 此选项检索 Spark 集群的主节点进程和工作节点进程的标准错误日志和标准输出日志。
- --download-app-logs
- 此选项检索具有所指定提交标识的应用程序的所有日志文件。如果未指定提交标识,那么将检索最近应用程序的日志文件。
- --kill
- 此选项取消具有所指定提交标识的运行中应用程序。
- --jsonout
- 此选项指定 spark-submit.sh 脚本以 JSON 格式显示其输出。此选项覆盖 DASHDBJSONOUT 环境变量的设置。
- --display-cluster-log
- 此选项显示所指示类型的集群日志文件的内容:
- out
- 标准输出日志文件。
- err
- 标准错误日志文件。
- 主进程
- 集群主节点的日志文件。
- worker
- 具有所指定 IP 地址的工作节点的日志文件。
- --display-app-log
- 针对具有所指定提交标识的应用程序,此选项显示所指示类型的日志文件的内容:
- 应用程序
- 应用程序日志文件。
- out
- 标准输出日志文件。
- err
- 标准错误日志文件。
- 信息
- 参考日志文件,其中以 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 - 取消提交标识为 20160815210608126000 的作业:
./spark-submit.sh --kill 20160815210608126000 - 列示包含在 $HOME/spark/apps 目录中的文件:
./spark-submit.sh --list-files apps
