Flink日志相关

日志位置

Flink-on-yarn模式的job日志输出路径是:
$HADOOP_HOME/logs/userlogs///

以上$HADOOP_HOME/logs/userlogs是yarn容器的默认日志路径, 可通过在yarn-site.xml中进行如下配置来修改:

    
        yarn.nodemanager.log-dirs
        /logs/yarn
    

log4j配置

Flink的log配置是在启动脚本中指定输出目标文件和log4j配置文件的。而且由于生命周期的不同,日志的输出路径和配置文件也都不一样。

不同生命周期的配置

1.启动yarn-session过程

当启动一个yarn-session(Hadoop yarn启动一个Application的时候), 执行命令如下:

yarn-session.sh  -d -jm 1024 -tm 4096 -s 12

其中涉及的脚本:bin/yarn-session.sh中有如下代码:

log=$FLINK_LOG_DIR/flink-$FLINK_IDENT_STRING-yarn-session-$HOSTNAME.log
log_setting="-Dlog.file="$log" -Dlog4j.configuration=file:"$FLINK_CONF_DIR"/log4j-yarn-session.properties -Dlogback.configurationFile=file:"$FLINK_CONF_DIR"/logback-yarn.xml"

//... 
// java启动程序中引入log_setting
// java ... "${log_setting}"
2.执行Flink命令的时候(提交job)

当我们往一个存在的yarn-session中提交任务的时候(或者提交job的时候创建yarn-session), 我们会执行如下命令:

flink run xxx.jar

其中的脚本flink中有如下代码:

log=$FLINK_LOG_DIR/flink-$FLINK_IDENT_STRING-client-$HOSTNAME.log
log_setting=(-Dlog.file="$log" -Dlog4j.configuration=file:"$FLINK_CONF_DIR"/log4j-cli.properties -Dlogback.configurationFile=file:"$FLINK_CONF_DIR"/logback.xml)

//... 
// java启动程序中引入log_setting
// java ... "${log_setting}"
3.TaskManager运行中

当我们往提交了job,yarn为Job启动了TaskManager,会执行bin/taskmanager.sh
该脚本中有如下代码:

if [[ $STARTSTOP == "start-foreground" ]]; then
    exec "${FLINK_BIN_DIR}"/flink-console.sh $ENTRYPOINT "${args[@]}"
else
    "${FLINK_BIN_DIR}"/flink-daemon.sh $STARTSTOP $ENTRYPOINT "${args[@]}"
fi

以上代码是说如果是命令行前端操作,则走flink-console.sh,如果是后端服务走flink-daemon.sh,Job的运行显然是走后端服务脚本flink-daemon.sh的
bin/flink-daemon.sh中有代码

FLINK_LOG_PREFIX="${FLINK_LOG_DIR}/flink-${FLINK_IDENT_STRING}-${DAEMON}-${id}-${HOSTNAME}"
log="${FLINK_LOG_PREFIX}.log"
out="${FLINK_LOG_PREFIX}.out"

log_setting=("-Dlog.file=${log}" "-Dlog4j.configuration=file:${FLINK_CONF_DIR}/log4j.properties" "-Dlogback.configurationFile=file:${FLINK_CONF_DIR}/logback.xml")

//... 
// java启动程序中引入log_setting
// java ... "${log_setting}"

jobmanager执行的也是在bin/flink-daemon.sh指定

log4j or logback?

日志框架的选择是用log4j还是logback,取决于我们在$FLINK_HOME/lib中添加的日志框架jar是Log4j相关的jar,还是logback相关的jar

若要修改成logback,则除了lib下Jar包的替换,还要将$FLINK_HOME/conf/log4j.properties删掉替换成logback.xml

小结

  • 启动yarn-session过程中的日志,我们需要在FLINK_IDENT_STRING-yarn-session-$HOSTNAME.log文件中查看,配置一般不需要自定义修改
  • 提交job过程中的日志,我们需要在FLINK_IDENT_STRING-client-$HOSTNAME.log中查看,配置一般不需要自定义修改
  • 程序中的日志输出(job执行), 我们在FLINK_HOME/conf下面修改

你可能感兴趣的:(Flink日志相关)