其他分享
首页 > 其他分享> > Spark 线程问题、日志文件过大

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 后缀。
这是运行两个多月的日志,进行压缩输出,确实管用
在这里插入图片描述
每天进步一点……

标签:eventLog,任务,线程,spark,Spark,日志
来源: https://blog.csdn.net/Angel_Shura/article/details/117958982