hadoop2.2+mahout0.9实战

Mahout0.9 ——hadoop2.2.0编译与安装 1. Mahout0.9 ——hadoop2.2.0编译与安装 1.1. 基础准备 1) JDK安装 2) Maven安装 见《1、基础准备(JDK、Maven、服务器配置)》。 1.2. 下载Mahout源码 Mahout官方下载地址: http://archive.apache.org/dist/mahout/   可以直接下载官方已经编译好的包,mahout 阅读详情

版本:hadoop2.2.0,mahout0.9。

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

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

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

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

大家可以下载修改后的源码包(http://download.youkuaiyun.com/detail/fansy1990/7165957)自己编译mahout(mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests),或者直接下载已经编译好的jar包(http://download.youkuaiyun.com/detail/fansy1990/7166017、http://download.youkuaiyun.com/detail/fansy1990/7166055)。

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

编写下面的java代码:

 
  1. package fz.hadoop2.util;
  2.  
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.yarn.conf.YarnConfiguration;
  5.  
  6. public class Hadoop2Util {
  7. private static Configuration conf=null;
  8. private static final String YARN_RESOURCE="node31:8032";
  9. private static final String DEFAULT_FS="hdfs://node31:9000";
  10. public static Configuration getConf(){
  11. if(conf==null){
  12. conf = new YarnConfiguration();
  13. conf.set("fs.defaultFS", DEFAULT_FS);
  14. conf.set("mapreduce.framework.name", "yarn");
  15. conf.set("yarn.resourcemanager.address", YARN_RESOURCE);
  16. }
  17. return conf;
  18. }
  19. }

 
  1. package fz.mahout.recommendations;
  2.  
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.util.ToolRunner;
  5. import org.apache.mahout.cf.taste.hadoop.item.RecommenderJob;
  6. import org.junit.After;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9.  
  10. import fz.hadoop2.util.Hadoop2Util;
  11. /**
  12. * 测试mahout org.apache.mahout.cf.taste.hadoop.item.RecommenderJob
  13. * environment:
  14. * mahout0.9
  15. * hadoop2.2
  16. * @author fansy
  17. *
  18. */
  19. public class RecommenderJobTest{
  20. //RecommenderJob rec = null;
  21. Configuration conf =null;
  22. @Before
  23. public void setUp(){
  24. // rec= new RecommenderJob();
  25. conf= Hadoop2Util.getConf();
  26. System.out.println("Begin to test...");
  27. }
  28. @Test
  29. public void testMain() throws Exception{
  30. String[] args ={
  31. "-i","hdfs://node31:9000/input/user.csv",
  32. "-o","hdfs://node31:9000/output/rec001",
  33. "-n","3","-b","false","-s","SIMILARITY_EUCLIDEAN_DISTANCE",
  34. "--maxPrefsPerUser","7","--minPrefsPerUser","2",
  35. "--maxPrefsInItemSimilarity","7",
  36. "--outputPathForSimilarityMatrix","hdfs://node31:9000/output/matrix/rec001",
  37. "--tempDir","hdfs://node31:9000/output/temp/rec001"};
  38. ToolRunner.run(conf, new RecommenderJob(), args);
  39. }
  40. @After
  41. public void cleanUp(){
  42. }
  43. }

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

输入文件如下:

 
  1. 1,101,5.0
  2. 1,102,3.0
  3. 1,103,2.5
  4. 2,101,2.0
  5. 2,102,2.5
  6. 2,103,5.0
  7. 2,104,2.0
  8. 3,101,2.5
  9. 3,104,4.0
  10. 3,105,4.5
  11. 3,107,5.0
  12. 4,101,5.0
  13. 4,103,3.0
  14. 4,104,4.5
  15. 4,106,4.0
  16. 5,101,4.0
  17. 5,102,3.0
  18. 5,103,2.0
  19. 5,104,4.0
  20. 5,105,3.5
  21. 5,106,4.0

输出文件为:

最后一个MR日志:

 
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 2014-04-09 13:03:09,460 INFO [main] input.FileInputFormat (FileInputFormat.java:listStatus(287)) - Total input paths to process : 1
  7. 2014-04-09 13:03:09,515 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(394)) - number of splits:1
  8. 2014-04-09 13:03:09,531 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - fs.default.name is deprecated. Instead, use fs.defaultFS
  9. 2014-04-09 13:03:09,547 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(477)) - Submitting tokens for job: job_1396479318893_0015
  10. 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
  11. 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/
  12. 2014-04-09 13:03:09,604 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1317)) - Running job: job_1396479318893_0015
  13. 2014-04-09 13:03:24,170 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1338)) - Job job_1396479318893_0015 running in uber mode : false
  14. 2014-04-09 13:03:24,170 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 0% reduce 0%
  15. 2014-04-09 13:03:32,299 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 100% reduce 0%
  16. 2014-04-09 13:03:41,373 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 100% reduce 100%
  17. 2014-04-09 13:03:42,404 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1356)) - Job job_1396479318893_0015 completed successfully
  18. 2014-04-09 13:03:42,485 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1363)) - Counters: 43
  19. File System Counters
  20. FILE: Number of bytes read=306
  21. FILE: Number of bytes written=163713
  22. FILE: Number of read operations=0
  23. FILE: Number of large read operations=0
  24. FILE: Number of write operations=0
  25. HDFS: Number of bytes read=890
  26. HDFS: Number of bytes written=192
  27. HDFS: Number of read operations=10
  28. HDFS: Number of large read operations=0
  29. HDFS: Number of write operations=2
  30. Job Counters
  31. Launched map tasks=1
  32. Launched reduce tasks=1
  33. Data-local map tasks=1
  34. Total time spent by all maps in occupied slots (ms)=5798
  35. Total time spent by all reduces in occupied slots (ms)=6179
  36. Map-Reduce Framework
  37. Map input records=7
  38. Map output records=21
  39. Map output bytes=927
  40. Map output materialized bytes=298
  41. Input split bytes=131
  42. Combine input records=0
  43. Combine output records=0
  44. Reduce input groups=5
  45. Reduce shuffle bytes=298
  46. Reduce input records=21
  47. Reduce output records=5
  48. Spilled Records=42
  49. Shuffled Maps =1
  50. Failed Shuffles=0
  51. Merged Map outputs=1
  52. GC time elapsed (ms)=112
  53. CPU time spent (ms)=1560
  54. Physical memory (bytes) snapshot=346509312
  55. Virtual memory (bytes) snapshot=1685782528
  56. Total committed heap usage (bytes)=152834048
  57. Shuffle Errors
  58. BAD_ID=0
  59. CONNECTION=0
  60. IO_ERROR=0
  61. WRONG_LENGTH=0
  62. WRONG_MAP=0
  63. WRONG_REDUCE=0
  64. File Input Format Counters
  65. Bytes Read=572
  66. File Output Format Counters
  67. Bytes Written=192

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

分享,成长,快乐

转载请注明blog地址:http://blog.youkuaiyun.com/fansy1990

hadoop2.5.2 mahout0.10.1 测试文本分类器 hadoop2.5.2 mahout0.10.0 文本分词 http://my.oschina.net/u/1047640/blog/262468 mmseg4j-solr-2.2.0.jar,mmseg4j-core-1.9.1.jar,mmseg4j-analysis-1.9.1.jar http://download.csdn.net/detail/lu 阅读详情

相关推荐

Mahout0.9—Hadoop2.20—FPG关联规则算法

1. Mahout0.9—Hadoop2.20—FPG关联规则算法 1.1. FPG函数 目前Mahout0.9 无fpg函数,0.9之前版本有,但是在0.9中可以找到fpg的jar包; mahout org.apache.mahout.fpm.pfpgrowth.FPGrowthDriver 等价于 fpg; 1) fpg参数(mahout org.apache.mahout.fpm.p

Spark MLlib 机器学习 3843

Hadoop家族安装系列(2)——安装Mahout0.9框架

在Hadoop1.2.1分布式集群环境下安装Mahout0.9框架   友情提醒:大家最好通读一遍过后,在理解的基础上按照步骤一步一步设置,因为后面的会对前面的有所启示。 一、前提条件 Hadoop1.2.1分布式集群环境搭建成功,并且Hadoop集群服务器正常运行。 二、所需环境和软件 1. Hadoop分布式集群环境: 见《在VMware下安装Ubuntu并部署Hadoop1....

cumtheima的专栏 290

Centos6.5 + Hadoop2.2.0 + Mahout安装(Maven & 发布版安装)

Mahout 简介  Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Apache Mahout项目已经发展到了它的第三个年头,目前已经有了三个公共发行版本。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache H

Zephyr's Blog 2117

mahout 0.9 连接mysql_Hadoop2.2+Mahout0.9实战

版本:Hadoop2.2.0,mahout0.9。使用mahout的org.apache.mahout.cf.taste.hadoop.item.RecommenderJob进行测试。首先说明下,如果使用官网提供的下载hadoop2.2.0以及mahout0.9进行调用mahout的相关算法会报错。一般报错如下:java.lang.IncompatibleClassChangeError: Fou...

weixin_35120567的博客 144

在Hadoop分布式集群环境下Mahout安装和运行K-means、协同过滤实例

在Hadoop1.2.1分布式集群环境下安装Mahout0.9框架   友情提醒:大家最好通读一遍过后,在理解的基础上按照步骤一步一步设置,因为后面的会对前面的有所启示。 注意:mahout运行对于环境要求很严格,JDK:jdk-7u55-linux-x64.tar,MAVEN:apache-maven-3.2.1-bin.tar,MAHOUT:mahout-distribution-0.9

自我学习、提升的专栏 3812

利用Mahout实现在Hadoop上运行K-Means算法

K-Means算法是基于分划分的最基本的聚类算法,是学习机器学习、数据挖掘等技术的最基本的 知识,所以掌握其运行原理是很重要的。     转载请注明出处: http://hanlaiming.freetzi.com/?p=144     一、介绍Mahout     Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有协同过滤/推荐引擎,聚类和分类三

summerhai 2947

用eclipse跑协同过滤算法程序

参考下文,拷贝代码,导入相应的包,调试错误,即可跑出结果。 参考链接如下: hadoop2.2+mahout0.9实战

sunwhut333的专栏 549

hadoop 之Mahout 数据挖掘

Mahout 仅提供一些java的算法包,通过Mahout执行这些算法包,并把hdfs上的文件作为输入可以在hadoop上做分布式计算 提供的常用算法 Mahout 提供了常用算法的程序库,可以基于分布式做数据挖掘. 常见算法 回归算法:用于预测(日期交易量预测等等)。 比如身高和体重作为x,y坐标,给出一组人的身高体重,形成作为图上的一个个点(学习集), 计算出一条直线或者...

FREEDOM 2064

Mahout0.9—Hadoop2.20—协同过滤算法

1. Mahout0.9—Hadoop2.20—协同过滤算法 1.1. 基于物品的协同过滤推荐函数 Mahout支持推荐函数,通过mahout –-help 查看: 函数1:itemsimilarity: : Compute the item-item-similarities for item-based collaborative filtering itemsimilarity是计算

Spark MLlib 机器学习 2339

Pytorch实现softmax多分类

PyTorch实现softmax多分类

天涯雨的博客 1388

Mac和VScode配置fortran

macOS系统 vscode fortran gfortran 终端

weixin_43047707的博客 2410

在hadoop1.2.1上安装配置mahout0.9

1>.配置jdk1.6 2>.安装配置hadoop-1.2.1

u013209432的专栏 648

STM32CubeMX配置FSMC驱动外部SRAM全流程详解

FSMC(灵活静态存储控制器)是STM32实现高速并行外部存储扩展的核心外设,其本质是将片外SRAM地址空间映射为CPU可直接读写的内存区域。原理上依赖于精确的时序寄存器配置(如BTRx)、GPIO复用功能启用及AHB3总线时钟同步机制,技术价值在于免DMA搬运的零拷贝访问能力与确定性低延迟。典型应用场景包括工业HMI缓存、医疗设备实时数据采集、嵌入式图形加速等对带宽和确定性要求严苛的系统。本文围绕STM32F407ZG平台,结合STM32CubeMX工程化配置、硬件信号完整性设计与HAL库底层映射逻辑,系

weixin_34718952的博客 232

hadoop2.7.3 mahout 0.9 遇到问题

hadoop2.7.3 mahout 0.9 遇到问题: 以命令行提交hadoop任务,VMware10虚拟机,ubuntu16.4,单机版hadoop2.7.3,mahout0.9,maven3.3.9 处理数据ratings.csv;

laymenISmouse的专栏 1168

【ComfyUI 基础教程】ComfyUI 局部重绘工作流教程

本篇指南将带你了解 ComfyUI 中的局部重绘工作流,并带你完成一个局部重绘的示例,以及遮罩编辑器的使用等。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 303

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 286

大数据基础(三)Ubuntu下基于Hadoop 2.6.2的Mahout 0.12.1安装和使用

Ubuntu下基于Hadoop 2.6.2的Mahout 0.12.1安装和使用 环境: Ubuntu Server 14.04.04 amd64 Hadoop 2.6.2  参考: http://itindex.net/detail/49323-mahout-%E5%AD%A6%E4%B9%A0-mahout 新版的配置有略微改动 1、下载 http://mirror.bi

星门学派(Star School) 3391

关于 Nginx 监听地址 0.0.0.0 的详细解释

0.0.0.0在Nginx配置中表示监听服务器所有网络接口(包括公网IP、内网IP和本地回环地址),这是默认配置。当使用listen 80;时,Nginx会接受通过服务器任何IP地址的80端口访问请求。相比只监听特定IP,这种配置更通用,但也意味着服务会对外网开放,需注意安全风险。可通过netstat命令验证监听状态,显示0.0.0.0:80即表示正确配置。

weixin_43674738的博客 1566

Mahout实践:Mahout安装部署-9

Mahout实践:Mahout安装部署 1、实验描述 本实验通过在Hadoop集群已经部署的前提下,安装配置Mahout,并使用默认的配置,使得mahout运行于集群模式之下。 实验时长:45分钟 主要步骤: 打开hadoop集群 安装配置Mahout 验证Mahout安装 2、实验环境 虚拟机数量:3 系统版本:CentOS 7.5 Mahout版本:apache-mahout-distribution-0.13.0 Hadoop版本:Hadoop 2.7.

奔腾游子 1991

基于STM32L4XX、HAL库的YT8531C-CA以太网收发器(PHY)驱动程序设计

是一款由裕太微推出的高性价比、低功耗的单端口 10/100M 以太网物理层收发器(PHY)。它通过标准的 MII(介质独立接口)或 RMII(精简介质独立接口)与微控制器的 MAC 层连接,实现将数字信号与网络模拟信号之间的转换。支持自动协商(Auto-Negotiation),自动选择最高速率和双工模式。支持 HP Auto-MDIX(自动交叉直连),无需区分直通线或交叉线。低功耗设计,特别适合电池供电或对功耗敏感的 STM32L4 应用。支持 MII 和 RMII 接口,节省引脚(RMII模式)。

zhusl6688的博客 628

3D医学影像开发入门<一>:VS2019+DCMTK3.6.8编译及环境配置

3D医学影像开发入门:VS2019+DCMTK3.6.8编译及环境配置

欧特GO 1307

mahout 0.9 连接mysql_部署安装 Mahout

一、Mahout简介Mahout是ApacheSoftwareFoundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。ApacheMahout项目已经发展到了它的第三个年头,目前已经有了三个公共发行版本。Mahout包含许多实现,包括集群、分类、推荐过滤、频繁子项挖掘。此外,通过使用ApacheH...

weixin_28892727的博客 343

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【甘道夫】如何在cdh5.2上运行mahout的itemcf on hadoop

环境: hadoop-2.5.0-cdh5.2.0 mahout-0.9-cdh5.2.0 步骤: 基本思路是,将mahout下的所有jar包都引入hadoop的classpath即可,所以修改了$HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加如下代码将mahout的所有jar包引入hadoop的classpath: f

甘道夫的大数据进化论 3292

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【甘道夫】Mahout0.9 打patch使其支持 Hadoop2.2.0

引言 Mahout0.9之前的版本默认不支持Hadoop2.2.0以上版本,但很多情况下,由于集群环境的Hadoop已经是2.2.0以上版本,又必须使用Mahout,此时就需要编译源码,使得Mahout支持Hadoop2了。 欢迎转载,请注明出处: 造好的车轮 让Mahout在Hadoop2.2.0上运行是需求十分广泛的,所以必定有前人已经栽好树了,我们可以在

甘道夫的大数据进化论 2931

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: hadoop学习笔记之maven、mahout
下一篇: 遍历集合时出现的异常Exception in thread "main" java.util.ConcurrentModificationException
ucasliming
博客等级 码龄16年 126粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值