检查 Spark 应用程序或集群的结果
Apache Spark 应用程序的结果包含在它的标准输出、标准错误和状态日志文件中。有关 Spark 集群的信息包含在它的标准输出和标准错误文件中。
所有的 Spark 日志文件都位于
$HOME/spark/log 目录中,该目录的目录结构如下所示:
spark/
log/
cluster_cluster_id/
master.err
master.out
worker_hostname.err
worker_hostname.out
submission_submission_id/
app-application_id
submission.err
submission.out
submission.info
latest -> submission_submission_id/$HOME/spark/log 目录包含以下三个子目录:- cluster_cluster_id
- 此目录包含 Spark 主节点进程和 Spark 工作节点进程的标准输出和标准错误文件。集群标识是在系统为用户创建 Spark 集群时生成的。
- submission_submission_id
- 此目录包含 Spark 应用程序的以下文件:
- app-application_id
- JSON 对象文件,其中包含 Spark 应用程序的相关信息。文件名中包含的应用程序标识用于唯一地识别 Spark 应用程序。
- submission.out
- 标准输出文件。
- submission.err
- 标准错误文件。
- submission.info
- 此文件包含有关所提交的应用程序的以下信息:
- 返回码,用于指示应用程序的最终状态。可能的值在 IBM® Db2® Warehouse Analytics API 的 submit 端点描述中描述。
- 完整堆栈跟踪。
- 关于应用程序错误和异常的信息(如果有)。
- latest
- 这个伪目录指向最近创建的应用程序目录。
注: Spark 还会将执行程序日志文件写入工作节点节点,后者只能通过 Spark 监视 UI 进行访问。执行程序日志文件会在一定的时间后自动清除。
使用 spark-submit.sh 脚本检查结果
使用 spark-submit.sh 脚本可下载或显示日志文件:
- 下载特定类型的所有日志文件:
- 要下载 Spark 集群的主节点进程和工作节点进程的标准错误日志和标准输出日志,请发出带有
--download-cluster-logs选项的spark-submit.sh命令。 - 要下载应用程序的日志文件,请发出带有
--download-app-logs选项的spark-submit.sh命令。
- 要下载 Spark 集群的主节点进程和工作节点进程的标准错误日志和标准输出日志,请发出带有
- 显示单个日志文件的内容:
- 要显示单个集群日志文件的内容,请发出带有
--display-cluster-log选项的spark-submit.sh命令。 - 要显示单个应用程序日志文件的内容,请发出带有
--display-app-log选项的spark-submit.sh命令。
- 要显示单个集群日志文件的内容,请发出带有
使用 REST API 调用检查结果
要检索
$HOME/spark/log 目录的内容列表,请使用 IBM Db2 Warehouse API 来提交针对 $HOME/spark/log 目录调用 /dashdb-api/home 端点的 HTTP GET 请求。例如,发出以下 cURL 命令(替换用户标识、密码和主机名):
curl --user "userid:password"
-X GET "https://hostname:8443/dashdb-api/home/spark/log"典型的结果类似于:
{"message":"NONE","result":".\/cluster_20160701084701013000\n.\
/cluster_20160701084701013000\/master.out\n.\
/cluster_20160701084701013000\/master.err\n.\
/cluster_20160701084701013000\/worker_9.152.63.161.out\n.\
/cluster_20160701084701013000\/worker_9.152.63.161.err\n.\
/submission_20160701105300359000\n.\
/submission_20160701105300359000\/submission.out\n.\
/submission_20160701105300359000\/submission.err\n.\
/submission_20160701105300359000\/submission.info\n.\
/submission_20160701105300359000\/app-20160701105305-0005\n.\
/submission_20160701105318773000\n.\
/submission_20160701105318773000\/submission.out\n.\
/submission_20160701105318773000\/submission.err\n.\
/submission_20160701105318773000\/submission.info\n.\
/submission_20160701105318773000\/app-20160701105324-0006\n.\
/latest\n.\
/latest\/submission.out\n.\
/latest\/submission.err\n.\
/latest\/submission.info\n.\
/latest\/app-20160701105324-0006\n","errorMessageCode":"NONE","resultCode":"SUCCESS"}要检索特定日志文件,请使用 IBM Db2 Warehouse API 来提交针对该文件调用
/dashdb-api/home 端点的 HTTP GET 请求。例如,发出以下 cURL 命令(替换用户标识、密码和主机名):
curl --user "userid:password"
-X GET "https://hostname:8443/dashdb-api/home/spark/log/submission_20160701105300359000/submission.err"