SparkStreaming的log4j日志记录

本文介绍了SparkStreaming日志记录的重要性,特别是在流式计算中,日志有助于监控和错误排查。文章讨论了SparkStreaming日志的特殊性,即日志在运行完成后才能在本地查看。提出了两种监控解决方案:一种是通过yarn-client模式配合本地脚本,另一种是利用Kafka作为消息队列。此外,还强调了使用自定义log4j配置以方便管理和维护多个Spark任务日志的方法,分别针对yarn-client和yarn-cluster模式给出了配置指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人GitHub地址 :https://github.com/LinMingQiang

博客前言

  • 为什么我们要写日志
    • 基本上每个程序都要有日志记录的功能,日志的记录最重要的用处就是监控程序的运行状态和错误查找。如果程序没有写日志,那程序就像瞎子一样,瞎跑,你都不知道为什么数据不对,为什么程序报错,程序运行成功还是失败。在流式计算Sparkstreaming中,日志的记录是非常重要的;因为流式计算是需要7*24小时一直运行的,你不记日志你根本不知道程序运行成功还是错误(当然你可以通过spark的history来查看),但是sparkstreaming的日志它只记录程序的内部错误,并不会记录你程序的计算逻辑错误(所以会导致你整个程序计算结果都不对了都不知道)。
  • Sparkstreming日志的特别
    • SparkStreming的日志是比较特别的,特别之处在于,它的日志只有在运行完成之后才能被load到本地查看的,不然它的日志是一直在hdfs上的。
    • 那么,如果我们需要一个这样的功能:需要一个监控程序来监控SparkStreaming的运行情况,并且一旦程序出问题要马上发邮件到自己的邮箱然后自己重启程序。
  • 解决的思路

    • 简单的思路:把SparkStreaming的运行模式选为yarn-client模式,那么程序的driver就会是在固定的机子上,你可以选择把日志都写在这台机子上,然后在这台机子上写一个脚本来监控这个日志文件(tail -f 文件路径);你可以一直看到你日志的写出情况。当遇到一个error日志的时候你就可以选择处理方法。这个方法的缺点是:如果你不希望程序以yarn-client模式运行的话,而且也不想写脚本的话。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值