为在yarn模式下运行的每个spark作业配置log4j

iqih9akk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(425)

我正在以客户机模式运行spark作业。我在unix脚本中使用spark submit命令运行这些作业。我想有日志为每个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 |& tee -a ${log_file}

但是如果spark作业失败,它将不会在命令状态检查中被捕获,可能是unix检查|$tee命令的状态,无论spark作业成功还是失败,它都是success

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服务器上。请帮忙!!

svdrlsy4

svdrlsy41#

一旦你提交你的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 cluster的spark应用程序的日志,需要使用yarn logs命令: yarn logs -applicationId <application ID> [OPTIONS]

相关问题