Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 在Spark RDD处理功能中的何处查找日志?(纱线簇模式)_Logging_Apache Spark_Yarn_Spark Streaming - Fatal编程技术网

Logging 在Spark RDD处理功能中的何处查找日志?(纱线簇模式)

Logging 在Spark RDD处理功能中的何处查找日志?(纱线簇模式),logging,apache-spark,yarn,spark-streaming,Logging,Apache Spark,Yarn,Spark Streaming,我正在纱线簇上运行Spark应用程序。无论我做什么,我都无法打印RDD函数中的日志。下面是我为RDD处理函数编写的示例代码段。我简化了代码,以说明我用来编写函数的语法。当我在本地运行它时,我可以看到日志,但不能在集群模式下看到。System.err.println和记录器似乎都不工作。但是我可以看到我所有的驱动程序日志。我甚至尝试使用根日志记录器进行日志记录,但它在RDD处理功能中根本不起作用。我急切地想看到日志消息,所以最后我找到了将日志记录器用作瞬态事件的指南,但没有任何帮助 class S

我正在纱线簇上运行Spark应用程序。无论我做什么,我都无法打印RDD函数中的日志。下面是我为RDD处理函数编写的示例代码段。我简化了代码,以说明我用来编写函数的语法。当我在本地运行它时,我可以看到日志,但不能在集群模式下看到。System.err.println和记录器似乎都不工作。但是我可以看到我所有的驱动程序日志。我甚至尝试使用根日志记录器进行日志记录,但它在RDD处理功能中根本不起作用。我急切地想看到日志消息,所以最后我找到了将日志记录器用作瞬态事件的指南,但没有任何帮助

class SampleFlatMapFunction implements PairFlatMapFunction <Tuple2<String,String>,String,String>{

    private static final long serialVersionUID = 6565656322667L;
    transient Logger  executorLogger = LogManager.getLogger("sparkExecutor");


    private void readObject(java.io.ObjectInputStream in)
            throws IOException, ClassNotFoundException {
            in.defaultReadObject();
            executorLogger = LogManager.getLogger("sparkExecutor");
    }
    @Override
    public Iterable<Tuple2<String,String>> call(Tuple2<String, String> tuple)        throws Exception {

        executorLogger.info(" log testing from  executorLogger ::");
        System.err.println(" log testing from  executorLogger system error stream ");


            List<Tuple2<String, String>> updates = new ArrayList<>();
            //process Tuple , expand and add it to list.
            return updates;

         }
 };
我的Log4j配置如下所示

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{1}: %m%n log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender log4j.appender.RollingAppender.File=/var/log/spark/spark.log log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout log4j.appender.RollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n log4j.appender.RollingAppenderU=org.apache.log4j.DailyRollingFileAppender log4j.appender.RollingAppenderU.File=${spark.yarn.app.container.log.dir}/spark-app.log log4j.appender.RollingAppenderU.DatePattern='.'yyyy-MM-dd log4j.appender.RollingAppenderU.layout=org.apache.log4j.PatternLayout log4j.appender.RollingAppenderU.layout.ConversionPattern=[%p] %d %c %M - %m%n # By default, everything goes to console and file log4j.rootLogger=INFO, RollingAppender, console # My custom logging goes to another file log4j.logger.sparkExecutor=INFO, stdout, RollingAppenderU 我尝试过纱线日志、Spark UI日志,但在任何地方都看不到RDD处理函数中的日志语句。我尝试了以下方法,但没有成功

yarn logs -applicationId I checked even below HDFS path also /tmp/logs/ 我通过传递下面的参数来运行spark submit命令,即使它不起作用

--master yarn --deploy-mode cluster --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties" --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties"
有人能指导我在spark RDD和map函数中登录吗?我在上述步骤中遗漏了什么

您是否得到纱线日志的任何输出-applicationId命令,理想情况下应该是这样的work@shekhar,是的,我正在获取纱线日志的输出-applicationId,但它只包含驱动程序日志,不包含RDD处理函数的日志检查executor节点上是否存在log4j.properties,还要指定log4j.properties文件的完整路径。@shekhar,是的,log4j.properties存在于executor节点,甚至在executor节点上创建RollingAppender文件。此外,RollingAppenderU文件也在创建中,我可以在hadoop UI的应用程序日志部分看到它。我无法在这些文件中看到RDD log语句。@a可能您已经解决了这个问题,我面临着一个类似的问题,我希望看到RDD映射循环中的日志消息。您是否获得了纱线日志的任何输出-applicationId命令,理想情况下应该是这样的work@shekhar ,是的,我正在获取纱线日志的输出-applicationId,但它只包含驱动程序日志,不包含RDD处理函数中的日志检查executor节点上是否存在log4j.properties,同时指定log4j.properties文件的完整路径。@shekhar,是的,log4j.properties存在于executor节点上,实际上它甚至在executor节点上创建了RollingAppender文件。此外,RollingAppenderU文件也在创建中,我可以在hadoop UI的应用程序日志部分看到它。我无法看到这些文件中的RDD日志语句。@a可能您已经解决了这个问题,我面临着类似的问题,我希望看到RDD映射循环中的日志消息。