环境:
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. Sql Server插入随机数

    --处理性别随机select (case when round(rand()*10,0)>5 then '男' else '女' end), --处理时间段范围内随机select dateadd ...

  2. (转)PHP模板smarty简单入门教程

    转之--http://blog.163.com/zf_2011@126/blog/static/166861361201062595057962/ 如何在smarty中开始我们程序设计.PHP代码:- ...

  3. Linux2.6的所有内核版本

    Index of /pub/linux/kernel/v2.6 Name Last modified Size Parent Directory - incr/ 03-Aug-2011 20:47 - ...

  4. javascript基础学习(十一)

    javascript之BOM 学习要点: BOM介绍 Window对象 一.BOM介绍 浏览器对象模型简称为BOM(Brower Object Model),BOM由很多对象构成,对象与对象之间有着相 ...

  5. A simple stack

    // simple stack.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include<iostream>using na ...

  6. CSU 1616: Heaps(区间DP)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1616 1616: Heaps Time Limit: 2 Sec  Memory Lim ...

  7. 【COGS1049】天空中的繁星

    [题目背景] 第二届『Citric』杯NOIP提高组模拟赛 第二题 [题目描述] Lemon最近买了一台数码相机.某天Lemon很无聊,于是对着夜空拍了一张照片,然后把照片导入了电脑.Lemon想依靠 ...

  8. DOS命令行中用MAVEN构建 Java 和 Java Web 项目

    一.Maven的安装 : 1.将 maven3.0解压到任一目录下,如D:\Program Files 2.配置环境变量:变量名: MAVEN_HOME   变量值:D:\Program Files\ ...

  9. css 日常

    去掉input边框    outline:none; 不让用户选择文本 user-select: none; 手机网页点击输入框的瞬间会出现灰色背景    解决方案: -webkit-tap-high ...

  10. Nginx源码研究八:nginx监听socket实现流程

    前面描述了nginx系统分析nginx的配置文件,初始化模块相关参数的过程,这里利用nginx监听socket的实现过程,做一次完整的回顾 1.首先,nginx启动的main函数中,会先初始化cycl ...