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到达 ...
随机推荐
- Android 近百个项目的源代码
Android 近百个项目的源代码 Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/个人记账工具 OnMyMeans http ...
- sqlserver 空间数据类型
--.建立有空间数据的表 create table x ( v ,) primary key, geog geography not null, geogWKT as geog.STAsText() ...
- APAC Practice
2016 round A A. Googol String small && large LL a[]; int dfs(LL pos, int id, bool f) { || po ...
- 机器学习第三课(EM算法和高斯混合模型)
极大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一.说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值. ...
- windows系统下Python环境的搭建
1.下载最新的Python版本3.5.0.
- Java API —— 网络编程
1.网络编程概述 1)网络编程概述 · 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通 ...
- 怎么在eclipse里调试WebDriver的源代码
当你看完WebDriver的工作原理这篇博客以后,是不是也跃跃欲试想印证文章里的理论是不是正确,想自己也看下webdriver的源代码,并且调试下,通过代码来更深入的了解WebDriver的工作原理. ...
- PHP开发者常犯的10个MySQL错误
原文出处: kaiyuanba 欢迎分享原创到伯乐头条 数据库是WEB大多数应用开发的基础.如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分. PHP看起来很简单,一个初 ...
- linux sort命令学习
linux sort命令以行为单位对文本文件进行排序. 接下来我们会以/tmp/sort_test.txt这个文本文件为例对sort命令的用法进行说明. sh-# cat /tmp/sort_test ...
- (贪心5.2.1)UVA 10026 Shoemaker's Problem(利用数据有序化来进行贪心选择)
/* * UVA_10026.cpp * * Created on: 2013年10月10日 * Author: Administrator */ #include <iostream> ...