阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop2.2+Mahout0.9实战

441次阅读
没有评论

共计 11071 个字符,预计需要花费 28 分钟才能阅读完成。

版本:Hadoop2.2.0,mahout0.9。

使用 mahout 的 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob 进行测试。

首先说明下,如果使用官网提供的下载 hadoop2.2.0 以及 mahout0.9 进行调用 mahout 的相关算法会报错。一般报错如下:

java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
 at org.apache.mahout.common.HadoopUtil.getCustomJobName(HadoopUtil.java:174)
 at org.apache.mahout.common.AbstractJob.prepareJob(AbstractJob.java:614)
 at org.apache.mahout.cf.taste.hadoop.preparation.PreparePreferenceMatrixJob.run(PreparePreferenceMatrixJob.java:73)
 at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

这个是因为目前 mahout 只支持 hadoop1 的缘故。在这里可以找到解决方法:https://issues.apache.org/jira/browse/MAHOUT-1329。主要就是修改 pom 文件,修改 mahout 的依赖。

大家可以下载修改后的源码包

1、(Mahout0.9 源码(支持 Hadoop2))

2、自己编译 Mahout(mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests),或者直接下载已经编译好的 jar 包。

—————————————— 分割线 ——————————————

FTP 地址:ftp://ftp1.linuxidc.com

用户名:ftp1.linuxidc.com

密码:www.linuxidc.com

在 2014 年 LinuxIDC.com\4 月 \Hadoop2.2+Mahout0.9 实战

下载方法见 http://www.linuxidc.com/Linux/2013-10/91140.htm

—————————————— 分割线 ——————————————

接着,按照这篇文章建立 eclipse 的环境:http://blog.csdn.net/fansy1990/article/details/22896249。环境配置好了之后,需要添加 mahout 的 jar 包,下载前面提供的 jar 包,然后导入到 java 工程中。

编写下面的 java 代码:

package fz.hadoop2.util;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.conf.YarnConfiguration;

public class Hadoop2Util {
 private static Configuration conf=null;
 
 private static final String YARN_RESOURCE=”node31:8032″;
 private static final String DEFAULT_FS=”hdfs://node31:9000″;
 
 public static Configuration getConf(){
  if(conf==null){
   conf = new YarnConfiguration();
   conf.set(“fs.defaultFS”, DEFAULT_FS);
   conf.set(“mapreduce.framework.name”, “yarn”);
   conf.set(“yarn.resourcemanager.address”, YARN_RESOURCE);
  }
  return conf;
 }
}

===============================================

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

===============================================

package fz.mahout.recommendations;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.cf.taste.hadoop.item.RecommenderJob;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import fz.hadoop2.util.Hadoop2Util;
/**
 * 测试 mahout org.apache.mahout.cf.taste.hadoop.item.RecommenderJob
 * environment:
 * mahout0.9
 * hadoop2.2
 * @author fansy
 *
 */
public class RecommenderJobTest{
 //RecommenderJob rec = null;
 Configuration conf =null;
 @Before
 public void setUp(){
 // rec= new RecommenderJob();
  conf= Hadoop2Util.getConf();
  System.out.println(“Begin to test…”);
 }
 
 @Test
 public void testMain() throws Exception{
  String[] args ={
  “-i”,”hdfs://node31:9000/input/user.csv”, 
        “-o”,”hdfs://node31:9000/output/rec001″, 
        “-n”,”3″,”-b”,”false”,”-s”,”SIMILARITY_EUCLIDEAN_DISTANCE”, 
        “–maxPrefsPerUser”,”7″,”–minPrefsPerUser”,”2″, 
        “–maxPrefsInItemSimilarity”,”7″, 
        “–outputPathForSimilarityMatrix”,”hdfs://node31:9000/output/matrix/rec001″,
        “–tempDir”,”hdfs://node31:9000/output/temp/rec001″};
  ToolRunner.run(conf, new RecommenderJob(), args);
 }
 
 @After
 public void cleanUp(){
 
 }
}

在前面下载好了 mahout 的 jar 包后,需要把这些 jar 包放入 Hadoop2 的 lib 目录(share/hadoop/mapreduce/lib,注意不一定一定要这个路径,其他 hadoop lib 也可以)。然后运行 RecommenderJobTest 即可。

输入文件如下:

1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0
2,102,2.5
2,103,5.0
2,104,2.0
3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0
4,101,5.0
4,103,3.0
4,104,4.5
4,106,4.0
5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0

输出文件为:

Hadoop2.2+Mahout0.9 实战

最后一个 MR 日志:

2014-04-09 13:03:09,301 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) – io.sort.factor is deprecated. Instead, use mapreduce.task.io.sort.factor
2014-04-09 13:03:09,301 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) – mapred.map.child.java.opts is deprecated. Instead, use mapreduce.map.java.opts
2014-04-09 13:03:09,302 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) – io.sort.mb is deprecated. Instead, use mapreduce.task.io.sort.mb
2014-04-09 13:03:09,302 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) – mapred.task.timeout is deprecated. Instead, use mapreduce.task.timeout
2014-04-09 13:03:09,317 INFO  [main] client.RMProxy (RMProxy.java:createRMProxy(56)) – Connecting to ResourceManager at node31/192.168.0.31:8032
2014-04-09 13:03:09,460 INFO  [main] input.FileInputFormat (FileInputFormat.java:listStatus(287)) – Total input paths to process : 1
2014-04-09 13:03:09,515 INFO  [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(394)) – number of splits:1
2014-04-09 13:03:09,531 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) – fs.default.name is deprecated. Instead, use fs.defaultFS
2014-04-09 13:03:09,547 INFO  [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(477)) – Submitting tokens for job: job_1396479318893_0015
2014-04-09 13:03:09,602 INFO  [main] impl.YarnClientImpl (YarnClientImpl.java:submitApplication(174)) – Submitted application application_1396479318893_0015 to ResourceManager at node31/192.168.0.31:8032
2014-04-09 13:03:09,604 INFO  [main] mapreduce.Job (Job.java:submit(1272)) – The url to track the job: http://node31:8088/proxy/application_1396479318893_0015/
2014-04-09 13:03:09,604 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1317)) – Running job: job_1396479318893_0015
2014-04-09 13:03:24,170 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1338)) – Job job_1396479318893_0015 running in uber mode : false
2014-04-09 13:03:24,170 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) –  map 0% reduce 0%
2014-04-09 13:03:32,299 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) –  map 100% reduce 0%
2014-04-09 13:03:41,373 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) –  map 100% reduce 100%
2014-04-09 13:03:42,404 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1356)) – Job job_1396479318893_0015 completed successfully
2014-04-09 13:03:42,485 INFO  [main] mapreduce.Job (Job.java:monitorAndPrintJob(1363)) – Counters: 43
 File System Counters
  FILE: Number of bytes read=306
  FILE: Number of bytes written=163713
  FILE: Number of read operations=0
  FILE: Number of large read operations=0
  FILE: Number of write operations=0
  HDFS: Number of bytes read=890
  HDFS: Number of bytes written=192
  HDFS: Number of read operations=10
  HDFS: Number of large read operations=0
  HDFS: Number of write operations=2
 Job Counters
  Launched map tasks=1
  Launched reduce tasks=1
  Data-local map tasks=1
  Total time spent by all maps in occupied slots (ms)=5798
  Total time spent by all reduces in occupied slots (ms)=6179
 Map-Reduce Framework
  Map input records=7
  Map output records=21
  Map output bytes=927
  Map output materialized bytes=298
  Input split bytes=131
  Combine input records=0
  Combine output records=0
  Reduce input groups=5
  Reduce shuffle bytes=298
  Reduce input records=21
  Reduce output records=5
  Spilled Records=42
  Shuffled Maps =1
  Failed Shuffles=0
  Merged Map outputs=1
  GC time elapsed (ms)=112
  CPU time spent (ms)=1560
  Physical memory (bytes) snapshot=346509312
  Virtual memory (bytes) snapshot=1685782528
  Total committed heap usage (bytes)=152834048
 Shuffle Errors
  BAD_ID=0
  CONNECTION=0
  IO_ERROR=0
  WRONG_LENGTH=0
  WRONG_MAP=0
  WRONG_REDUCE=0
 File Input Format Counters
  Bytes Read=572
 File Output Format Counters
  Bytes Written=192

说明:由于只测试了一个协同过滤算法的程序,其他的算法并没有测试,如果其他算法在此版本上有问题,也是可能有的。

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

版本:Hadoop2.2.0,mahout0.9。

使用 mahout 的 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob 进行测试。

首先说明下,如果使用官网提供的下载 hadoop2.2.0 以及 mahout0.9 进行调用 mahout 的相关算法会报错。一般报错如下:

java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
 at org.apache.mahout.common.HadoopUtil.getCustomJobName(HadoopUtil.java:174)
 at org.apache.mahout.common.AbstractJob.prepareJob(AbstractJob.java:614)
 at org.apache.mahout.cf.taste.hadoop.preparation.PreparePreferenceMatrixJob.run(PreparePreferenceMatrixJob.java:73)
 at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

这个是因为目前 mahout 只支持 hadoop1 的缘故。在这里可以找到解决方法:https://issues.apache.org/jira/browse/MAHOUT-1329。主要就是修改 pom 文件,修改 mahout 的依赖。

大家可以下载修改后的源码包

1、(Mahout0.9 源码(支持 Hadoop2))

2、自己编译 Mahout(mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests),或者直接下载已经编译好的 jar 包。

—————————————— 分割线 ——————————————

FTP 地址:ftp://ftp1.linuxidc.com

用户名:ftp1.linuxidc.com

密码:www.linuxidc.com

在 2014 年 LinuxIDC.com\4 月 \Hadoop2.2+Mahout0.9 实战

下载方法见 http://www.linuxidc.com/Linux/2013-10/91140.htm

—————————————— 分割线 ——————————————

接着,按照这篇文章建立 eclipse 的环境:http://blog.csdn.net/fansy1990/article/details/22896249。环境配置好了之后,需要添加 mahout 的 jar 包,下载前面提供的 jar 包,然后导入到 java 工程中。

编写下面的 java 代码:

package fz.hadoop2.util;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.conf.YarnConfiguration;

public class Hadoop2Util {
 private static Configuration conf=null;
 
 private static final String YARN_RESOURCE=”node31:8032″;
 private static final String DEFAULT_FS=”hdfs://node31:9000″;
 
 public static Configuration getConf(){
  if(conf==null){
   conf = new YarnConfiguration();
   conf.set(“fs.defaultFS”, DEFAULT_FS);
   conf.set(“mapreduce.framework.name”, “yarn”);
   conf.set(“yarn.resourcemanager.address”, YARN_RESOURCE);
  }
  return conf;
 }
}

===============================================

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

===============================================

package fz.mahout.recommendations;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.cf.taste.hadoop.item.RecommenderJob;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import fz.hadoop2.util.Hadoop2Util;
/**
 * 测试 mahout org.apache.mahout.cf.taste.hadoop.item.RecommenderJob
 * environment:
 * mahout0.9
 * hadoop2.2
 * @author fansy
 *
 */
public class RecommenderJobTest{
 //RecommenderJob rec = null;
 Configuration conf =null;
 @Before
 public void setUp(){
 // rec= new RecommenderJob();
  conf= Hadoop2Util.getConf();
  System.out.println(“Begin to test…”);
 }
 
 @Test
 public void testMain() throws Exception{
  String[] args ={
  “-i”,”hdfs://node31:9000/input/user.csv”, 
        “-o”,”hdfs://node31:9000/output/rec001″, 
        “-n”,”3″,”-b”,”false”,”-s”,”SIMILARITY_EUCLIDEAN_DISTANCE”, 
        “–maxPrefsPerUser”,”7″,”–minPrefsPerUser”,”2″, 
        “–maxPrefsInItemSimilarity”,”7″, 
        “–outputPathForSimilarityMatrix”,”hdfs://node31:9000/output/matrix/rec001″,
        “–tempDir”,”hdfs://node31:9000/output/temp/rec001″};
  ToolRunner.run(conf, new RecommenderJob(), args);
 }
 
 @After
 public void cleanUp(){
 
 }
}

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计11071字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7968424
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...