概述
 
     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

[Mahout] 完整部署过程的更多相关文章

  1. ice grid 完整部署过程

    待补充 一 理论准备 一个IceGrid集群有一个registry(注册表,用于定位)和多个node组成. IceGrid配置包括集群配置和应用配置: config.grid是集群配置,配置Regis ...

  2. 给tomcat容器配置SSL的记录,包含项目完整部署过程

    给tomcat容器配置SSL(https) 昨天公司有一个旧的项目要部署, 服务器(OS是windows 10) 数据库都是新买的, 写个博客记录一下 1, 下载证书(以阿里云为例子) 参考链接: h ...

  3. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

    公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务.以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人 ...

  4. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置

    继上一篇博客介绍了完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建,本篇继续讲述后续部分的内容 1 虚拟机相关1.1 虚拟机位置介绍 openstack上创建的 ...

  5. 理解裸机部署过程ironic

    部署物理机跟部署虚拟机的概念在nova来看是一样,都是nova通过创建虚拟机的方式来触发,只是底层nova-scheduler和nova-compute的驱动不一样.虚拟机的底层驱动采用的libvir ...

  6. Kubernetes容器集群管理环境 - 完整部署(中篇)

    接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...

  7. 大数据学习笔记——Hadoop高可用完全分布式模式完整部署教程(包含zookeeper)

    高可用模式下的Hadoop集群搭建 本篇博客将会在之前写过的Linux的完整部署的基础上进行,暂时不会涉及到伪分布式或者完全分布式模式搭建,由于HA模式涉及到的配置文件较多,维护起来也较为复杂,相信学 ...

  8. Kubernetes容器集群管理环境 - 完整部署(下篇)

    在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernete ...

  9. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip

    之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...

随机推荐

  1. 先说IEnumerable,我们每天用的foreach你真的懂它吗?

    我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么Linq to Object中要返回IEnumerable? 接下来,先开始我们的正 ...

  2. 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert

    使用webstorm+webpack构建简单入门级"HelloWorld"的应用&&构建使用jquery来实现 1.首先你自己把webstorm安装完成. 请参考这 ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. C++ 事件驱动型银行排队模拟

    最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...

  5. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  6. BPM生产安全管理解决方案分享

    一.方案概述生产安全管理是企业生产管理的重要组成部分,组织实施好企业安全管理规划.指导.检查和决策,保证生产处于最佳安全状态是安全管理的重要内容和职责.H3 BPM企业生产安全管理解决方案是一套专门为 ...

  7. unity3d导出到IOS程序下 集成unity3dAR功能

    转载自: 来自AR学院(www.arvrschool.com),原文地址为:http://www.arvrschool.com/index.php?c=post&a=modify&ti ...

  8. JAVA设计模式之模板模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...

  9. 《MySQL必知必会》学习笔记

    数据库:数据库是一种以某种有组织的方式存储的数据集合.其本质就是一个容器,通常是一个或者一组文件. 表:表示一种结构化的文件,可用来存储某种特定类型的数据. 模式:描述数据库中特定的表以及整个数据库和 ...

  10. VMware下对虚拟机Ubuntu14系统所在分区sda1进行磁盘扩容

    VMware下对虚拟机Ubuntu14系统所在分区sda1进行磁盘扩容 一般来说,在对虚拟机里的Ubuntu下的磁盘进行扩容时,都是添加新的分区,而并不是对其系统所在分区进行扩容,如在此链接中http ...