Mahout踩坑之路
一、版本对比
- 由于Mahout只能允许于hadoop0.20以上版本上,而百度的hadoop是hadoop0.19的一个分支。因此百度HPC组曾经将Mahout移植到百度的hadoop集群。
- Mahout上古版本,只有itembased一种算法,且只能用于百度版hadoop。
- 运行于开源hadoop集群。
- 建议Mahout0.8版本,支持多种算法。
二、安装、使用
1. 下载开源mahout
http://archive.apache.org/dist/mahout/
推荐用mahout 0.8版本
2. 配置
解压缩后编辑mahout-distribution-0.8/bin/mahout文件
HADOOP_CONF_DIR='/home/work/hadoop-opensource/conf
HADOOP_HOME='/home/work/hadoop-opensource'
3. 运行命令
sh mahout-distribution-0.8/bin/mahout
返回结果是参数说明,按照你的需求配置参数即可。
示例代码
三、踩过的坑
1. id只支持[0, 2^32-1]的正整数
mahout的输入userid、itemid是long型的,但内部会将id转成int型。所以只支持的32位无符号int的范围,即取值范围[0, 2^32-1]的数。
所以如果id类型是baiduid、cuid、url的话,需要先将id做32位签名。
2. OutOfMemoryError 内存不足错误
原因是:mahout在计算协同矩阵前有一轮job countObservations,它使用一个reduce统计用户数量,而且是用HashMap存储,导致数据量稍大,内存就超限。
但是在后续的计算中countObservations数据并没有使用到,这是一轮无用且导致致命错误的任务。
解决办法是使用mahout0.8,此坑只在mahout0.9中出现。
3. 另一种OutOfMemoryError 内存不足错误
即使在mahout0.8,也存在一些使用内存存储hashmap的情况,导致数据量大时oom
recommenditembased和itemsimilarity的第四轮job normsAndTranspose,map阶段分别用hashmap存储了每个item的norm、nonZeroEntries(非0评分用户数)、maxValues(最大pref)。
输入数据200G,item数3500万,oom。
解决办法只能是调大内存、调大map数。
Mahout踩坑之路的更多相关文章
- html2canvas的踩坑之路
html2canvas的踩坑之路 前言 早有耳闻这个html2canvas比较坑,但无奈于产品需求的压迫,必须实现html转图片的功能,自此走上了填坑之路,好在最后的效果还算令人满意,这才没有误了产品 ...
- MySQL Connector/NET 使用小结(踩坑之路)
背景描述 根据项目的需要,需连接MySQL获取数据. 首先,先了解一下项目的情况: 之前的代码是C#编写的的, 运行时:.NETFramework3.5. 由于项目已经部署上线,因此不能升级运行时,这 ...
- Android 上传开源项目到 jcenter 实战踩坑之路
本文微信公众号「AndroidTraveler」首发. 背景 其实 Android 上传开源项目到 jcenter 并不是一件新鲜事,网上也有很多文章. 包括我本人在将开源项目上传到 jcenter ...
- Java踩坑之路
陆陆续续学Java也快一年多了,从开始的一窍不通到现在的初窥门径,我努力过,迷茫过,痛过,乐过,反思过,沉淀过.趁着新年,我希望能把这些东西记下来,就当是我一路走来的脚印. 一.初识网站应用 记得第一 ...
- Android SDK 开发——发布使用踩坑之路
前言 在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的. 为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的. 背景 刚好最近自己遇到了类似需 ...
- jQuery升级踩坑之路
1.使用了被废弃的jQuery.browser属性 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更 ...
- webpack踩坑之路——构建基本的React+ES6项目
转自:http://www.cnblogs.com/ghost-xyx/p/5483464.html webpack是最近比较火的构建工具,搭配上同样比较火的ReacJS与ES6(ES2015)一定是 ...
- webpack踩坑之路——图片的路径与打包
转自:http://www.cnblogs.com/ghost-xyx/p/5812902.html 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不 ...
- 踩坑之路_"var name = ' ';"_迷之BUG
情景介绍:最近写一个拖拽生成图表的工具,自己的思路每次mousedown的时候动态将this的name属性值赋值给全局中变量(自己手贱测试时直接将变量名命名为了'name',一大波bug还有30s到达 ...
随机推荐
- 李洪强漫谈iOS开发[C语言-040]-switch case
李洪强漫谈iOS开发[C语言-039]-switch case 补充:
- lintcode:Subtree 子树
题目: 子树 有两个不同大小的二叉树: T1 有上百万的节点: T2 有好几百的节点.请设计一种算法,判定 T2 是否为 T1的子树. 样例 下面的例子中 T2 是 T1 的子树: 1 3 / \ / ...
- *[topcoder]BracketExpressions
http://community.topcoder.com/stat?c=problem_statement&pm=13243 就是能否通过把字符串中的'X'替换成"()" ...
- Mysql 分页语句Limit用法
转载自:http://qimo601.iteye.com/blog/1634748 1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用 ...
- windows下顽固软件卸载不了的解决方法
下面以autocad2012举例: cad2012卸载显示 “无法获得同类产品” 而且也安装不上. 解决方法:1,开始>运行>输入"regedit",找到下面的注册表路 ...
- PowerDesigner模型设计
原文:PowerDesigner模型设计 绪论 Sybase PowerDesigner(简称PD)是最强大的数据库建模工具,市场占有率第一,功能也确实十分强大,现在最新版本是15.1,已经支持最新的 ...
- 几种C#程序读取MAC地址的方法
原文:几种C#程序读取MAC地址的方法 以下是收集的几种C#程序读取MAC地址的方法,示例中是读取所有网卡的MAC地址,如果仅需要读取其中一个,稍作修改即可. 1 通过IPConfig命令读取MAC地 ...
- 249. Group Shifted Strings
题目: Given a string, we can "shift" each of its letter to its successive letter, for exampl ...
- 完美配置Tomcat的HTTPS
Tomcat配置HTTPS的文章到处都有,过程也比较简单,随后文中会转一段过来. 但对于启用APR情况下报异常“java.lang.Exception: Connector attribute SSL ...
- Eclipse常见设置及快捷键使用总结(更新中)
Eclipse中常见设置: 1.Eclipse在保存时设置自动去掉多余的import和格式化代码 路径: window --> preferences --> java --> Ed ...