微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark 线程问题、日志文件过大

1. Spark 线程问题
实时服务器部署着多个Spark和Flink实时任务,Spark任务运行一段时间后发现几个任务异常结束,将失败的任务重启。运行几分钟,发现本来运行正常的任务也异常结束,重启多次依旧如此。开始怀疑是集群资源不足造成了,查看CM中 Yarn的资源池发现资源充足,接着查看运行失败任务的日志,发现共同异常:unable to create new native thread

在这里插入图片描述

出现问题找根本原因,于是就问了度娘,解决方法如下:
1、查看系统线程数 ulimit -u

在这里插入图片描述

这是修改后的,修改前线程数是4096
2修改系统配置文件

在这里插入图片描述

cat

配置文件路径及配置文件可能不一样,修改 /etc/security/limits.d 目录下 20-nproc.conf 配置文件,将部署任务机器用户名对应的线程数修改为 unlimited,认线程配置:4096 ,可能不一样。
如果spark运行模式时Yarn的client 模式,修改Yarn 和 HDFS 对应的机器,按照以上步骤依次修改

2. spark 运行日志过大
spark实时任务运行一段时间,HDFS磁盘会不够用,hdfs dfs -ls /user/spark/applicationHistory

在这里插入图片描述

后缀.inprogress文件是Spark任务处理数据时,每个operator 、stage处理数据输出的(JSON格式)日志,不是我们在任务中手动添加输出日志。
每次出现都会把文件过大对应的任务Kill了重启,这样治标不治本,查看Spark官网发现,可以添加参数进行处理:`

–conf spark.eventLog.compress=true :是否压缩记录的事件,如果spark.eventLog.enabled为 true。认false
–conf spark.io.compression.codec=snappy :压缩记录事件的编解码器。如果没有给出, spark.io.compression.codec将被使用。可以使用其他压缩方式。
–conf spark.eventLog.rolling.maxFileSize=1024m \:当 时spark.eventLog.rolling.enabled=true,指定事件日志文件滚动前的最大大小。
–conf spark.eventLog.rolling.enabled=true :是否启用翻转事件日志文件。如果设置为 true,它会将每个事件日志文件缩减到配置的大小。认false。

`
在启动脚本中添加配置参数,修改后重启任务运行。
发现HDFS 中 /user/spark/applicationHistory 目录下任务日志多了个.snappy 后缀。
这是运行两个多月的日志,进行压缩输出,确实管用

在这里插入图片描述


每天进步一点……

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐