设为首页 收藏本站
查看: 826|回复: 0

[经验分享] [Mahout] 完整部署过程

[复制链接]

尚未签到

发表于 2017-2-28 11:08:46 | 显示全部楼层 |阅读模式
概述

     Mahout底层依赖Hadoop,部署Mahout过程中最困难的就是Hadoop的部署
     本文假设用户本身没有进行Hadoop的部署,记述部署Mahout的过程

     关于Mahout
     官网:http://mahout.apache.org/
     介绍:http://www.ibm.com/developerworks/cn/java/j-mahout/


目录:

    1. 准备工作
    2. 部署Hadoop
    3. 部署测试Mahout


一. 准备工作

    0. 工具列表及版本

         (1) 平台:Linux Ubuntu 13.10 64-bit
         (2) Java:1.7.0_45,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
         (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
          DSC0000.png
              
         (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

         参考:http://blog.csdn.net/xocoder/article/details/9155901
         

        C. 修改源码中的hadoop-common-project/hadoop-auth/pom.xml文件

         添加:      

  •      <dependency>  
  •         <groupId>org.mortbay.jetty</groupId>  
  •         <artifactId>jetty-util</artifactId>  
  •         <scope>test</scope>  
  •      </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

          DSC0001.png

    2. 部署Hadoop

         单节点部署,参考:http://blog.csdn.net/focusheart/article/details/14005893
         要注意,一定要进行HADOOP_HOME与HADOOP_CONF_DIR的路径配置,/etc/profile相关内容如下:
          DSC0002.png

         如后在使用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进行计算的

    3. 准备测试数据,wget http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data

         $ 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/目录下


四. 参考文章

    http://blog.csdn.net/bamuta/article/details/13506893
    http://blog.csdn.net/licongcong_0224/article/details/12972889
    http://www.cnblogs.com/duzl/archive/2012/05/18/2507470.html   
    关于停止Hadoop时no datanode to stop的问题,参考:http://blog.sina.com.cn/s/blog_6d932f2a0101fsxn.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348362-1-1.html 上篇帖子: Maven搭建webService (一) 创建服务端---使用main函数发布服务 下篇帖子: spring MVC项目中,欢迎页首页根路径到底是怎么设置的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表