由于 Java 的内存占用超过限制而导致 GC 进程耗尽了所有可用的 CPU 和内存资源导致任务失败
val (rank, iterations, lambda) = (50, 100,0.01)
刚开始准备用这段代码训练,但是电脑配置实在跟不上,就不断地减少rank和iterations,同时增大lambda,然而用处不大,后面使用如下代码
val sparkConf = new SparkConf().setMaster(config("spark.cores")).setAppName("OfflineRecommender")
.set("spark.executor.extraJavaOptions", "-Xss4096m")
.set("spark.driver.extraJavaOptions", "-Xss4096m")//增加 JVM 的最大堆大小限制
.set("spark.executor.memory", "10g")
.set("spark.driver.memory","6g")//使用此配置来为 Executor 和 Driver 分配足够的内存
来改变运行配置,然而,CG回收仍然跟不上。
最后在虚拟机选项处添加-Xmx10G能保证项目正常CG正常回收,完成代码运行