spark ALS 使用checkpoint 机制
来源:互联网 发布:软件开发详细计划书 编辑:程序博客网 时间:2024/04/19 11:42
最近在开发协同过滤组件,运用了spark millb上的协同过滤 ALS算法。在测试过程中遇到了内存溢出的错误,查找了错误位置,发现在训练的时候,迭代次数的增加便会出现这个问题,原因可能是迭代是的计算的数据量指数上升。为了解决这个问题,参考了许多技术文档后总结出一些自己的见解。
1)在ALS模型中运用checkpoint机制
spark checkpoint 机制 个人理解就是在程序中插入一个检查点,如果程序出错,重新运行程序便会从这个检查点开始,不需要重头再来,大大加强了程序的效率。
在使用checkpoint前 需要先设置checkpoint和相关参数,再进行训练。相关代码如下
sc.setCheckpointDir("hdfs://master:9000/..")//会在..目录创建一个文件夹 这里的sc 是 sparkContext
ALS.setCheckpointInterval(2).setMaxIter(100).setRank(10).setAlpha(0.1)
val model = ALS.run(ratings)
这样就在ALS 模型中运用了checkpoint 机制。
2)删除checkpoint留下的过程数据
但是这样会有一个弊端,每运行一次训练都会在hdfs上保存训练的过程数据,占用集群存储空间。解决的方法是利用spark操作(删除)hdfs上的文件。
sparkConf.set("spark.hadoop.validateOutputSpecs","false") //设置你spark的配置
val sc = SparkContext(sparkConf) //读取你的saprkconf 到 sparkContext通过spark自带的hadoopconf方式删除
val path = new Path("hdfs://xxx"); 声明要操作(删除)的hdfs 文件路径
val hadoopConf = sparkContext.hadoopConfiguration
val hdfs = org.apache.hadoop.fs.FileSystem.get(hadoopConf)
if(hdfs.exists(path)){
//需要递归删除设置true,不需要则设置false
hdfs.delete(path,true) //这里因为是过程数据,可以递归删除
}
总结,checkpoint处理spark mllib内存溢出的方法只能治标,不能治本。只是将内存中的数据固化到硬盘上,解决内存不足的问题。虽然解决了内存溢出,但如果数据量大的话估计还会出现一系列类似IO的问题。然而还没有找到更好的解决方法,也就先这样吧。学无止境,估计以后会有大神分享更好的解决方法。
阅读全文
0 0
- spark ALS 使用checkpoint 机制
- spark checkpoint机制简述
- Spark -12:spark checkpoint机制
- Spark Streaming缓存、Checkpoint机制
- spark streaming 检查点机制(checkpoint)
- spark基础之checkpoint机制
- Spark Streaming之checkpoint机制
- ALS spark
- 使用Spark ALS实现协同过滤
- 如何使用Spark ALS实现协同过滤
- 如何使用Spark ALS实现协同过滤
- 如何使用Spark ALS实现协同过滤
- 如何使用Spark ALS实现协同过滤
- Spark源码分析之Checkpoint机制
- Spark Streaming 实战案例(四) Spark Streaming 缓存、Checkpoint机制
- spark基础之spark streaming的checkpoint机制
- spark checkpoint
- Spark Streaming如何使用checkpoint容错
- ESP8266 WiFi探针 MAC
- Android的控件ImageView几种在代码中设置图片方法
- 将MongoDB服务器作为Windows服务运行
- hashCode和identityHashCode的关系
- 删除桌面蓝色问号-SVN
- spark ALS 使用checkpoint 机制
- poj2115 Looooops(扩展欧几里德模板)
- anaconda的spyder不能打开,pythonw打开闪退
- golang web框架总结
- 进程与线程(持续更新中。。。)
- docker-centos安装docker
- hashmap的底层以及实现
- Nginx--官网中文翻译(中英文对比)--10-服务器名字Server names
- 如何在神箭手上快速开发爬虫——第三课 如何爬取列表页数据【87870 VR资讯文章】