hadoop下安装mahout
安装hadoop
完成
安装mahout
首先下载mahout压缩文件apache-mahout-distribution-0.12.2.tar.gz
放到/home/hadoop/software-ljd/下
解压该文件到/home/Hadoop/mahout下:
tar –zxvf apache-mahout-distribution-0.12.2.tar.gz –C /home/Hadoop/mahout/
完成后需要配置环境变量:/etc/profile文件需要新增(maven:非必须,java:必须,hadoop:必须, mahout:必须)如下的配置
###配置maven home export MAVEN_HOME=/usr/share/maven export PATH=$PATH:$MAVEN_HOME/bin ### java配置 export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH ###mahout配置 export MAHOUT_HOME=/home/hadoop/mahout/apache-mahout-distribution-0.12.2 export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf export PATH=$MAHOUT_HOME/conf:$MAHOUT_HOME/bin:$PATH ####配置mahout所需要的hadoop环境 export HADOOP_HOME=/home/hadoop/hadoop-2.7.1 export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop export PATH=$PATH:$HADOOP_HOME/bin export HADOOP_HOME_WARN_SUPPRESS=not_null
需要在root下配置,完成后保存,然后 source /etc/profile 立即生效
检测mahout是否配置成功
到mahout-home下执行bin/mahout 查看
这里需要说明下,当你看到下面的代码时,以为是错的,其实不是,原因:
MAHOUT_LOCAL:设置是否本地运行,如果设置这个参数就不会运行hadoop了,一旦设置这个参数,那HADOOP_CONF_DIR 和HADOOP_HOME 这两个参数的
设置就自动失效了。
MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. hadoop binary is not in PATH,HADOOP_HOME/bin,HADOOP_PREFIX/bin, running locally
在hadoop下使用mahout
先启动hadoop
首先下载测试数据
地址:http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data
在hadoop下创建testdata目录
bin/hadoop fs -mkdir /testdata(错误,需要创建的为/user/hadoop/testdata)
bin/hadoop fs -mkdir /user/hadoop bin/hadoop fs -mkdir /user/hadoop/testdata(正确)
查看是否已经创建
bin/hadoop fs –ls /
然后把测试数据放到hadoop的testdata中
bin/hadoop fs -put /home/hadoop/software-ljd/data /user/hadoop/testdata
运行mahout上的kmeans算法:
bin/hadoop jar /home/hadoop/mahout/apache-mahout-distribution-0.12.2/mahout-examples-0.12.2-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
最终运行结果
最终生成的文件在hdfs的/user/Hadoop/output/data/part-m-00000中
使用mahout vectordump –i /user/Hadoop/output/data/part-m-00000 –o /home/Hadoop/software-ljd/test.txt
将该文件转换成正常可读文件并存储到本机的文件系统中(输出文件在非hadoop文件系统,但是输入文件需要时hadoop文件系统中的文件)