环境:
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. Ci 简单分页,保证能实现

    某晚,自己写项目的时候去找资料,关于CI分页的, 发现百度出来的前几名的基本都是写的都是垃圾, 要么是实现不了,要么就是坑逼 所以我自己在这里写一个,不是很完美,只是说是简单的实现了原理 有了最基本的 ...

  2. 【转】iOS6中的Auto Layout:通过代码添加约束

        最近做的项目用到了Auto Layout,于是经过了一番大量的google,这是我看到的讲用代码创建约束最清晰的一篇教程,于是想跟更多的人分享一下.原文也比较简单,可以直接过去看,如果我翻译的 ...

  3. 【原】push过快的错误 (Pushing the same view controller instance more than once is not supported)

    今天在点击按钮push viewController 时,控制台报错: Terminating app due to uncaught exception 'NSInvalidArgumentExce ...

  4. 02C#基础(1)

    1.关键字 C#中定义了很多关键字,关键字是构成C#基本语法的,不用去背,用的多就记住了 2.标识符 标识符是用来给类.方法.变量等命名的 命名规则:  (1)由字母.中文(不推荐).数字.下划线组成 ...

  5. EBS与FMW集成工作流管理器的检查

    工作流管理器的检查点(DB层面): --1:数据库job aq参数设置,建议设置job_queue_processes>=10 select p.NAME,p.DESCRIPTION,p.VAL ...

  6. POJ 1240 Pre-Post-erous! 解题报告

    题意: 给出一个m叉树的前,后序遍历求这样的树有多少种. Solution: 我们知道前序遍历的第一个点一定是根节点,后序遍历的最后一个点一定是根节点. 由此,我们只一要确定对于每一个节点,它有多少个 ...

  7. 基于jq插件开发及弹窗实例

    基于jq的插件开发是什么鬼,$.fn是什么鬼,我在实际工作中也遇到过这个问题,下面就让我们一起来看一看这些都是什么鬼. 首先我们介绍$.fn. $.fn是指jquery的命名空间,加上fn上的方法及属 ...

  8. (转载)最实用的清除浮动代码 css的文字过长裁剪后面跟着省略号

    css: .clearfloat:after{display:block;clear:both;content:"";visibility:hidden;} .clearfloat ...

  9. 实验一:基于Winsock完成简单的网络程序开发

    第一部分:简答的UDP网络通信程序 // UDP5555.cpp : Defines the entry point for the application. //================== ...

  10. XCode7打包上传报错

      在XCode7上传应用时,上传失败遇到两个错误,提示如下: ERROR ITMS-90535: "Unexpected CFBundleExecutable Key. The bundl ...