报错:
Lost executor 33 on xx.xx.xx.152: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages.
原因:
由于spark某节点可用内存不足导致整个任务失败,在执行日志中找到可以上面的报错信息。
我这里应该是提交了多个任务后内存占用超过了spark可用内存,导致报错,有个任务提交占用45g内存,而spark配置的可申请内存是80G,所以导致了任务失败。
解决:
- 将spark-env.sh中的
SPARK_WORKER_MEMORY
参数调大一些,需要注意服务器内存,因为我这里可用内存还有156g,目前spark只用了80,所以直接调大了。
- 如果内存不足的话,就将提交任务时申请的内存
executor-memory
调小,保证内存够用。
spark-submit --master spark://xx.xx.xx.xx:7077 --class $main --deploy-mode client --driver-memory $driver_mem --executor-memory $exec_mem --executor-cores $exec_cores --total-executor-cores $total_core --conf spark.driver.maxResultSize=0 --conf spark.memory.fraction=0.7 --conf spark.memory.storageFraction=$storageFraction --conf spark.memory.offHeap.enabled=true --conf spark.memory.offHeap.size=5g --conf spark.executor.memoryOverhead=5G --conf spark.speculation=true --conf spark.network.timeout=3000 --conf spark.executor.extraJavaOptions="-XX:+UseG1GC -XX:-TieredCompilation -XX:G1HeapRegionSize=16m -XX:InitiatingHeapOccupancyPercent=55 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-UseCompressedClassPointers -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:ReservedCodeCacheSize=512m -XX:+UseCodeCacheFlushing -XX:ParallelGCThreads=20 -XX:ConcGCThreads=20 -Xms20g -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" --conf spark.driver.extraJavaOptions="-XX:+UseG1GC" --jars $jars xxx-1.0.jar $date1 $max $date2 >> log/$log_file