Apache spark apachesparkstderr和Stdout
我正在运行spark-1.0.0,连接到一个spark独立群集,该群集有一个主群集和两个从群集。我通过Spark submit运行wordcount.py,实际上它从HDFS读取数据,并将结果写入HDFS。到目前为止,一切正常,结果将正确写入HDFS。但让我担心的是,当我为每个工人检查Stdout时,它是空的,我不知道它是否应该是空的?我在stderr得到了以下信息: 一些标准的标准记录页(app-20140704174955-0002)Apache spark apachesparkstderr和Stdout,apache-spark,Apache Spark,我正在运行spark-1.0.0,连接到一个spark独立群集,该群集有一个主群集和两个从群集。我通过Spark submit运行wordcount.py,实际上它从HDFS读取数据,并将结果写入HDFS。到目前为止,一切正常,结果将正确写入HDFS。但让我担心的是,当我为每个工人检查Stdout时,它是空的,我不知道它是否应该是空的?我在stderr得到了以下信息: 一些标准的标准记录页(app-20140704174955-0002) Spark总是将所有信息都写入stderr。人们这样做似
Spark总是将所有信息都写入stderr。人们这样做似乎是为了停止标准输出缓冲消息并导致不太可预测的日志记录。当知道应用程序永远不会在bash脚本中使用时,这是一种可接受的做法,因此在日志记录中尤其常见。在log4j中尝试此操作。属性传递给Spark(或在Spark/conf下修改默认配置) 此外,信息级显示的进度条将发送到stderr 禁用
spark.ui.showConsoleProgress=false
这没关系。你的驱动程序已经完成了它的工作(字数计数)并断开了连接。至于Stdout呢,它是空的,有意义吗?谢谢你的回答--我还有一个问题是关于ReduceBykey的。实际上,我想知道使用这种方法将涉及多少个从节点?它将取决于我们设置为reduce tasks参数的reducer的数量吗?如果您的分区多于您的核心总数,那么将使用所有节点。建议每个核心至少有2-4个分区。如果您的数据已被分割成一个合适的数字,则无需将此参数传递到reduceByKey方法。@samthebest-您是说所有Spark输出都将传递到stderr吗?我在spark map函数中执行了一个简单的“print()”,当我查看从机的日志文件时,在work/app-/0/下,我看到了stderr中的打印输出,但没有看到stdout。我的邮箱是空的。我觉得很奇怪——如果stdout总是空的,那有什么意义呢?
# Log to stdout and stderr
log4j.rootLogger=INFO, stdout, stderr
# Send TRACE - INFO level to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=TRACE
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.filter.filter1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.stdout.filter.filter1.levelMin=TRACE
log4j.appender.stdout.filter.filter1.levelMax=INFO
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Send WARN or higher to stderr
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold=WARN
log4j.appender.stderr.Target =System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Change this to set Spark log level
log4j.logger.org.apache.spark=WARN
log4j.logger.org.apache.spark.util=ERROR
spark.ui.showConsoleProgress=false