java - 为在 yarn 模式下运行的每个 spark 作业配置 log4j
问题描述
我在纱线客户端模式下运行火花作业。我在 unix 脚本中使用 spark-submit 命令运行这些作业。我想为每个运行的火花作业记录日志。我尝试使用以下命令获取日志:
spark-submit --master yarn --deploy-mode client --num-executors 10 --executor-memory 2G --driver-memory 2G --jars $spark_jars --class $spark_class $main_jar |& tee -a ${log_file}
但是这里如果 spark 作业失败,它不会被命令状态检查捕获,可能是 unix 检查 |$tee 命令的状态,无论 spark 作业成功还是失败,它总是成功
if [ $? -eq 0 ]; then
echo "===========SPARK JOB COMPLETED==================" |& tee -a ${log_file}
else
echo "===========SPARK JOB FAILED=====================" |& tee -a ${log_file}
fi
我尝试使用 log4j 但无法成功。我希望将每个 spark 作业日志文件存储在本地 unix 服务器上。请帮忙 !!
解决方案
提交 Spark 应用程序后。它生成一个application_id
. 由于此应用程序在分布式集群中运行,因此您无法通过重定向获取 spark 应用程序的日志。
但是,当您执行以下操作时,它只会将控制台登录重定向到文件中。
spark-submit --master yarn --deploy-mode client --num-executors 10 --executor-memory 2G --driver-memory 2G --jars $spark_jars --class $spark_class $main_jar > ${log_file}
例如,要获取提交到 yarn 集群的 spark 应用程序的日志记录,您需要使用 yarn logs 命令:
yarn logs -applicationId <application ID> [OPTIONS]
推荐阅读
- xamarin.forms - xamarin 形成 UWP 应用程序 - 如何创建一个在概念上看起来/感觉类似于 MS Word 的“打开文件”对话框?
- css - 如何让 NuxtJS/Vuetify 组件占据其父容器的百分比?
- firebase - Update Firestore with user last active date
- sql - Group questions by answers with SQL
- flutter - Flutter and BoxShapeBorder
- python - Python: convert csv file to list of tuples
- ffmpeg - 从使用单播的 udp 流制作屏幕截图
- laravel - Laravel 和 Vue:如何从 Vue 组件的公共文件夹中获取图像?
- azure - 在 Azure 前门配置维护页面
- python - 使用 pandastable 行着色的 ValueError