gpt4 book ai didi

apache-spark - 我应该使用哪个记录器在 Cloud Logging 中获取数据

转载 作者:行者123 更新时间:2023-12-04 04:19:06 26 4
gpt4 key购买 nike

我正在使用 Cloud Dataproc 运行 PySpark 作业,并希望使用 logging 记录信息Python的模块。目标是将这些日志推送到 Cloud Logging。

来自 this question ,我了解到我可以通过在 fluentd 配置中添加一个日志文件来实现这一点,该配置位于 /etc/google-fluentd/google-fluentd.conf .

但是,当我查看 /var/log 中的日志文件时,我找不到包含我的日志的文件。我试过使用默认的 python 记录器和 'py4j' 记录器。

logger = logging.getLogger()
logger = logging.getLogger('py4j')

谁能阐明我应该使用哪个记录器,以及应该将哪个文件添加到流利的配置中?

谢谢

最佳答案

tl;博士

现在不原生支持此功能,但 future 版本的 Cloud Dataproc 将原生支持。也就是说,在此期间有一个手动解决方法。

解决方法

首先,确保将 python 日志从 spark 上下文发送到正确的 log4j 记录器。为此,请将您的记录器声明为:

import pyspark
sc = pyspark.SparkContext()
logger = sc._jvm.org.apache.log4j.Logger.getLogger(__name__)

第二部分涉及 native 尚不支持的解决方法。如果您查看下的 Spark 属性文件
/etc/spark/conf/log4j.properties

在集群的主服务器上,您可以看到 log4j 是如何为 spark 配置的。目前它看起来如下所示:
# Set everything to be logged to the console
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Settings to quiet third party logs that are too verbose
...

请注意,这意味着 log4j 日志仅发送到控制台。 dataproc 代理将获取此输出并将其作为 job driver ouput 返回.但是,为了让 fluentd 获取输出并将其发送到 Google Cloud Logging,您需要将 log4j 写入本地文件。因此,您将需要修改 log4j 属性,如下所示:
# Set everything to be logged to the console and a file
log4j.rootCategory=INFO, console, file
# Set up console appender.
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Set up file appender.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/var/log/spark/spark-log4j.log
log4j.appender.file.MaxFileSize=512KB
log4j.appender.file.MaxBackupIndex=3
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Settings to quiet third party logs that are too verbose
...

如果您将文件设置为/var/log/spark/spark-log4j.log,如上所示,您的 Dataproc 集群上的默认 fluentd 配置应该会选择它。如果您想将文件设置为其他内容,可以按照 this question 中的说明进行操作。流利地拿起那个文件。

关于apache-spark - 我应该使用哪个记录器在 Cloud Logging 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34286750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com