[Mahout] 完整部署过程

概述
 
     Mahout底层依赖Hadoop,部署Mahout过程中最困难的就是Hadoop的部署
     本文假设用户本身没有进行Hadoop的部署,记述部署Mahout的过程
 
     关于Mahout
     官网: http://mahout.apache.org/
 
 
目录:
 
    1. 准备工作
    2. 部署Hadoop
    3. 部署测试Mahout
 
 
一. 准备工作
 
     0. 工具列表及版本
 
         (1) 平台:Linux Ubuntu 13.10  64-bit
         (3) Maven:apache-maven-3.1.1-bin.tar.gz,下载地址: http://maven.apache.org/download.cgi
         (4)  protobuf: protobuf-2.5.0.tar.gz,下载地址: https://code.google.com/p/protobuf/downloads/list
         (5) Hadoop:hadoop- 2.2.0-src.tar.gz,注意:这里要下载源码包,下载地址: http://www.apache.org/dyn/closer.cgi/hadoop/common/
         (6) Mahout:mahout-distribution- 0.8.tar.gz,下载地址: http://www.apache.org/dyn/closer.cgi/mahout/
 
     1. Java and Maven
 
         这一步假设已经完成,完成路径配置,$ java -version,$ javac -version,$ mvn -version输出正确版本号
 
 
二. Hadoop的编译、部署和运行
 
     1. 编译Hadoop源代码
 
          (1) 问题引入
 
          Hadoop官方只提供了32位的预编译包,如果将32位Hadoop部署在64位服务器上,运行时会报错:
         

          Java HotSpot(TM) 64-BitServer VM warning: You have loaded library/usr/local/bin/hadoop/lib/native/libhadoop.so.1.0.0 which might havedisabled stack guard. The VM will try to fix the stack guard now.

          It's highly recommendedthat you fix the library with 'execstack -c <libfile>', or link it with'-z noexecstack'.

 
         如果在运行时看到这段话,那不好意思,你需要重新编译Hadoop,本人就是经历了这个过程。
 
         可以确定一下服务器上的Hadoop是多少位构建的:
         $ file $HADOOP_HOME/lib/native/libhadoop.so.1.0.0
         
              
          (2) 编译过程
 
          A.  准备工作
 
         $ sudo apt-get install  autoconf automake libtool cmake
         $ sudo apt-get install libssl-dev
         $ sudo apt-get install libncurses5-dev
         $ sudo apt-get install gcc*
 
         B. 安装protobuf
 
         准备步骤中下载好的protobuf-2.5.0.tar.gz,解压,./configure , make ,make install,检查protoc --version
        

         如果成功,则会输出版本号信息,例如:libprotoc 2.5.0
         如果有问题,则会输出错误内容:protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared

         错误原因:protobuf的默认安装路径是/usr/local/lib,而/usr/local/lib 不在Ubuntu体系默认的 LD_LIBRARY_PATH 里,所以就找不到该lib

         解决方法:
         1. 创建文件 /etc/ld.so.conf.d/libprotobuf.conf 包含内容:/usr/local/lib 

         2. 输入命令: $ sudo ldconfig

         
 
          C. 修改源码中的hadoop-common-project/hadoop-auth/pom.xml文件
 
         添加:       
  1.      <dependency>  
  2.         <groupId>org.mortbay.jetty</groupId>  
  3.         <artifactId>jetty-util</artifactId>  
  4.         <scope>test</scope>  
  5.      </dependency> 
        
         说明:不添加上述配置直接进行编译,会遇到
         [ERROR] class file for org.mortbay.component.AbstractLifeCycle not found
         [ERROR] 找不到org.mortbay.component.AbstractLifeCycle的类文件
         这是Hadoop的一个Bug,参照 https://issues.apache.org/jira/browse/HADOOP-10110
 
          D. 使用Maven编译Hadoop源码
  

         yusong@yusong-ps:~/下载/hadoop-2.2.0-src$ mvn package -Pdist,native -DskipTests -Dtar

         大约需要15分钟,视网络情况而定,直至提示success编译完成

         编译后可以在hadoop-dist/target里边找到压缩包hadoop-2.2.0.tar.gz

         
 
     2. 部署Hadoop
 
         单节点部署,参考: http://blog.csdn.net/focusheart/article/details/14005893
         要注意,一定要进行HADOOP_HOME与HADOOP_CONF_DIR的路径配置,/etc/profile相关内容如下:
         
 
         如后在使用Hadoop的时候遇到类似  mkdir: `./testdata': No such file or directory 这样的提示,那就回去设置一下吧,设置完就好了
 
    3. 运行Hadoop
 
         按照步骤2中参考博文上的操作即可,确保执行$ jps 能看到 NameNode和DataNode
         浏览器访问http://127.0.0.1:50070/dfshealth.jsp能看到信息
 
三. 部署测试Mahout
 
     1. 解压,设置好MAHOUT_HOME和bin的PATH
 
     2. 确保Hadoop运行正常,因为Mahout是依赖Hadoop进行计算的
 
 
         $ cd $MAHOUT_HOME
         $  hadoop fs -mkdir /testdata              #  mahout会默认找这个文件名的目录
         $ hadoop fs -put synthetic_control.data testdata
         $ hadoop fs -lsr testdata
 
     4. 执行聚类算法,输入mahout命令会有列出很多算法, 其输入目录默认为testdata
 

          mahout org.apache.mahout.clustering.syntheticcontrol.canopy.Job 
          mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
          mahout org.apache.mahout.clustering.syntheticcontrol.fuzzykmeans.Job
          mahout org.apache.mahout.clustering.syntheticcontrol.dirichlet.Job
          mahout org.apache.mahout.clustering.syntheticcontrol.meanshift.Job

          使用mahout org.apache.mahout.clustering.syntheticcontrol.canopy.Job进行计算

    5. 命令行输出计算结果,默认输出结果在output/目录下

 
四. 参考文章
 
    关于停止Hadoop时 no datanode to stop的问题,参考:http://blog.sina.com.cn/s/blog_6d932f2a0101fsxn.html

转载于:https://www.cnblogs.com/sysuys/p/3492791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值