以前这个任务没有出过错,随着时间的增加,到12月份的时候,报了上面错误。因为是跑一年的数据,就是1月1号-12月x号,数据量随着时间是慢慢增大的。这个任务按着以前的调度重新启动几次,调度命令如下:/home/data/office/spark-2.1.3-bin-2.6.0-cdh5.14.0/bin/spark-submit --class com.ybs.online.HealthServiceCount --master spark://bd-node01:7077,bd-node02:7077 --driver-memory 1g --executor-memory 5g --total-executor-cores 8 --conf spark.sql.shuffle.partitions=40 --conf spark.executor.memoryOverhead=1024 --conf spark.core.connection.ack.wait.timeout=700 --conf spark.scheduler.mode=FAIR /home/data/www/test/bi-qmjk-report-data-jar-with-dependencies.jar
1.ERROR TransportResponseHandler:
Still have 1 requests outstanding when connection from /10.59.2.47:53288 is closed
2.java.lang.OutOfMemoryError: Java heap space
执行过程中有时候出现1错误,有时候出现2错误,出现1错误次数比较多,虽然有报错,但是数据正常进入ck;出现2错误,数据进入ck只有一部分就停了,随后邮箱报警出现 “spark写ck报错:SparkContext has been shutdown”
自己分析:
由第一个报错得到结果是:我sparksession已经close()了,但是还有一个请求在,于是就减少shuffle的并行度, 设置成16,然后再运行这个任务不在出现1,2错误。我又尝试了下不减少shuffle的并行度,增大driver 内存driver 内存设置成2g,增大executor运行内存,--executor-memory 设置成(8g? 反正是增大了) 还是会出现1,2错误。
最终把调度命令设置成减少shuffle的并行度,并把dirver内存增大1g(保险起见),目前没有出现报错了这个任务:
/home/data/office/spark-2.1.3-bin-2.6.0-cdh5.14.0/bin/spark-submit --class com.ybs.online.HealthServiceCount --master spark://bd-node01:7077,bd-node02:7077 --driver-memory 2g --executor-memory 5g --total-executor-cores 8 --conf spark.sql.shuffle.partitions=16 --conf spark.executor.memoryOverhead=1024 --conf spark.core.connection.ack.wait.timeout=700 --conf spark.scheduler.mode=FAIR /home/data/www/test/bi-qmjk-report-data-jar-with-dependencies.jar
至于为什么是这样,还有待分析。以后有时间补上吧。