zoukankan      html  css  js  c++  java
  • 【甘道夫】怎样在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:
    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

    然后,程序成功运行,世界一片光明!
  • 相关阅读:
    第一次作业-准备篇
    个人作业——软件工程实践总结
    团队作业第二次—项目选题报告
    软工实践第三次作业(结对第二次作业)
    软工实践第二次作业(结对第一次作业)
    第一次作业-准备篇
    软工实践|个人作业——软件工程实践总结作业
    软工实践|团队作业第二次—项目选题报告
    软工实践|结对第二次—文献摘要热词统计及进阶需求
    软工实践|结对第一次—原型设计(文献摘要热词统计)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5248047.html
Copyright © 2011-2022 走看看