环境:
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:
for b in $MAHOUT_HOME/lib/*.jar; do
  if [ "$HADOOP_CLASSPATH" ]; then
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$b
  else
    export HADOOP_CLASSPATH=$b
  fi
done

for c in $MAHOUT_HOME/*.jar; do
  if [ "$HADOOP_CLASSPATH" ]; then
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$c
  else
    export HADOOP_CLASSPATH=$c
  fi
done

加入完代码,准备好基础数据,上传好jar包后,运行命令:
hadoop jar gul-itemcf-hadoop.jar ItemCFHadoop

注意:
该jar包没有包括全部的依赖包,仅包括了mapreduce类。
用maven添加全部依赖包的做法会导致终于的jar包十分臃肿,这种做法是十分不优雅的,而且会添加网络和内存的负担。所以放弃。


遇到问题
顺利完毕第一个job的运行,从第二个job開始,先抛出例如以下异常
Error: java.lang.ClassNotFoundException: org.apache.mahout.math.Vector
然后抛出例如以下异常
Exception in thread "main" java.io.FileNotFoundException: File does not exist: /RecommenderSystem/                               JiLinSMEPSP/RecommenderEngine/Service/GuessULike/tmp/1414042683946/preparePreferenceMatrix/numUser                              
s.bin

看到第一条错误相信大家都明确,这是hadoop没有识别到第三方(mahout)依赖jar包的问题。

解决思路
首先能确定,向$HADOOP_HOME/etc/hadoop/hadoop-env.sh中加入HADOOP_CLASSPATH的方法是好使的,由于去掉最開始加入的语句后。连mahout的cf相关class都识别不到,可是,为什么仅仅识别了一部分呢?难道是冲突?
随后,我也饶了一些弯路,參照网上众多大神的招数,比方将jar包拷到$HADOOP_HOME/lib,但全部招数都不好使,最后思路还是回到“包冲突”思路上来。


终极解决方式
通过对照$MAHOUT_HOME下的几个jar包得知。mahout-core-0.9-cdh5.2.0-job.jar包括了全部运行job须要用到的class。而且和mahout-math-0.9-cdh5.2.0.jar都反复包括了org.apache.mahout.math.Vector,看来就是冲突导致的不识别该class,所以。终极解决方式非常easy,$HADOOP_HOME/etc/hadoop/hadoop-env.sh中引入一个jar包就可以
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$MAHOUT_HOME/mahout-core-0.9-cdh5.2.0-job.jar

然后,程序成功运行,世界一片光明!

【甘道夫】怎样在cdh5.2上执行mahout的itemcf on hadoop的更多相关文章

  1. 【甘道夫】Win7x64环境下编译Apache Hadoop2.2.0的Eclipse小工具

    目标: 编译Apache Hadoop2.2.0在win7x64环境下的Eclipse插件 环境: win7x64家庭普通版 eclipse-jee-kepler-SR1-win32-x86_64.z ...

  2. 【甘道夫】MapReduce实现矩阵乘法--实现代码

    之前写了一篇分析MapReduce实现矩阵乘法算法的文章: [甘道夫]Mapreduce实现矩阵乘法的算法思路 为了让大家更直观的了解程序运行,今天编写了实现代码供大家參考. 编程环境: java v ...

  3. 【甘道夫】基于Mahout0.9+CDH5.2执行分布式ItemCF推荐算法

    环境: hadoop-2.5.0-cdh5.2.0 mahout-0.9-cdh5.2.0 引言 尽管Mahout已经宣布不再继续基于Mapreduce开发,迁移到Spark.可是实际面临的情况是公司 ...

  4. 【甘道夫】CDH5.2的Maven依赖

    之前一直结合Maven开发Hadoop2.2.0的程序.环境换成CDH5.2后报错,发现是Maven依赖库的问题. 之前一直使用 http://mvnrepository.com/ 查找maven依赖 ...

  5. 【甘道夫】HBase基本数据操作的详细说明【完整版,精绝】

    介绍 之前具体写了一篇HBase过滤器的文章.今天把基础的表和数据相关操作补上. 本文档參考最新(截止2014年7月16日)的官方Ref Guide.Developer API编写. 全部代码均基于& ...

  6. 【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制

    前言 HDFS为管理员提供了针对文件夹的配额控制特性,能够控制名称配额(指定文件夹下的文件&文件夹总数),或者空间配额(占用磁盘空间的上限). 本文探究了HDFS的配额控制特性,记录了各类配额 ...

  7. 【甘道夫】Hive 0.13.1 on Hadoop2.2.0 + Oracle10g部署详细解释

    环境: hadoop2.2.0 hive0.13.1 Ubuntu 14.04 LTS java version "1.7.0_60" Oracle10g ***欢迎转载.请注明来 ...

  8. 【甘道夫】HBase连接池 -- HTablePool是Deprecated之后

    说明: 近期两天在调研HBase的连接池,有了一些收获,特此记录下来. 本文先将官方文档(http://hbase.apache.org/book.html)9.3.1.1节翻译,方便大家阅读,然后查 ...

  9. 【甘道夫】Ubuntu群集配置 - 免费登陆

    引言 这是几年前写的文章,但一直以来该问题被反复问到.所以我决定将它又一次搬上屏幕. 正文 三个节点:masternode    slavenode1   slavenode2 第一步:全部节点分别生 ...

随机推荐

  1. c#字符串驻留机制

    http://www.cnblogs.com/instance/archive/2011/05/24/2056091.html

  2. Linux sed命令删除指定行

    一.删除包含匹配字符串的行## 删除包含baidu.com的所有行sed -i '/baidu.com/d' domain.file 二.删除匹配行及后所有行## 删除匹配20160229的行及后面所 ...

  3. Xcode换版本或者改名字后无法使用simpholders2

    修改一下路径,在终端下输入下面的命令sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer 敲回车后 ...

  4. 跳转到QQ聊天界面和QQ群界面

    // uin=2977046873为QQ号 NSString *urlString = @"mqq://im/chat?chat_type=wpa&uin=2977046873&am ...

  5. jQuery实现checkbox全选反选及删除等操作

    1.list.html 说明:用checkbox数组Check[]存放每一行的ID值 <div id="con"> <table width="100% ...

  6. Flask 快速入门

    最简单的flask程序 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return ...

  7. ExtJs MVC应用架构示例

    项目目录结构 (源码)2. app.js Ext.Loader.setConfig({ enabled : true, paths : { 'Ext' : 'extjs', 'App' : 'app' ...

  8. poj A Round Peg in a Ground Hole

    http://poj.org/problem?id=1584 #include<cstdio> #include<cstring> #include<cmath> ...

  9. 文档整体解决方案(readthedocs、github 、sphinx)使用

    这里是总结了一下,用的工具或者平台:readthedocs.github .sphinx. 使用这三个工具即可轻松创建高效的文档管理库,可以用来翻译,水平再高一点可以写书. readthedocs 文 ...

  10. UVA11388 GCD LCM(数论)

    题目链接. 题意: 给定两个数,一个G,一个L,找出两个数a,b(a<=b),使得这两个数的最大公约数为G,最小公倍数为L,且(a最小). 分析: 当a,b存在时,a一定为G. 自己证了一下,数 ...