log4j gcloud CLI应用程序日志到存储桶

wfveoks0  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(149)

GCP中每天都有Scala应用程序Spark作业在运行。我尝试设置一个在运行完成时发送的通知。因此,我想到的一种方法是从它那里获取日志和特定完成消息的grep(不确定是否有更好的方法)。但我发现日志只是显示在控制台中,在“职务详细信息”页面中,并且未保存在文件中。
是否有办法将这些日志路由到存储桶中的某个文件,以便在其中进行搜索?是否必须指定在log4j属性文件中显示这些日志的位置,例如将存储桶位置指定为log4j.appender.stdout = org.apache.log4j.ConsoleAppender
我尝试使用此提交作业,但出现以下错误:grep:**-2022-07-08.log: No such file or directory

...

gcloud dataproc jobs submit spark \
    --project $PROJECT --cluster=$CLUSTER --region=$REGION --class=***.spark.offer.Main \
    --jars=gs://**.jar\
    --properties=driver-memory=10G,spark.ui.filters="",spark.memory.fraction=0.6,spark.sql.files.maxPartitionBytes=5368709120,spark.memory.storageFraction=0.1,spark.driver.extraJavaOptions="-Dcq.config.name=gcp.conf",spark.executor.extraJavaOptions="-Dlog4j.configuration=log4j-executor.properties -Dcq.config.name=gcp.conf" \
    --gcp.conf > gs://***-$date.log  2>&1
drkbr07n

drkbr07n1#

默认情况下,Dataproc作业驱动程序日志保存在GCS中Dataproc生成的作业的driverOutputResourceUri处。有关详细信息,请参阅此文档。
但是IMHO,一个更好的方法来确定一个作业是否已经完成是通过gcloud dataproc jobs describe <job-id>1,或者jobs.get REST API 2

相关问题