关闭

Hadoop第10周练习—Mahout部署及进行20newsgroup数据分析例子

标签: hadoop
739人阅读 评论(0) 收藏 举报
分类:

转载:http://www.cnblogs.com/shishanyuan/p/4205209.html

1  运行环境说明

1.1  硬软件环境

1.2  机器网络环境

2  书面作业0:搭建MAHOUT环境

2.1  Mahout介绍

2.2  部署过程

2.2.1   下载Mahout

2.2.2   上传Mahout

2.2.3   解压缩

2.2.4   设置环境变量

2.2.5   验证安装完成

2.3  测试例子

2.3.1   下载测试数据,放到$MAHOUT_HOME/testdata目录

2.3.2   启动Hadoop

2.3.3   使用kmeans算法

2.3.4   查看结果

3  书面作业1:运行20NEWSGROUP

3.1  书面作业1内容

3.2  算法流程

3.3  实现过程(mahout 0.6版本)

3.3.1   下载数据

3.3.2   上传并解压数据

3.3.3   建立训练集

3.3.4   建立测试集

3.3.5   上传数据到HDFS

3.3.6   训练贝叶斯分类器

3.3.7   观察训练作业运行过程

3.3.8   查看生成模型

3.3.9   测试贝叶斯分类器

3.3.10观察训练作业运行过程

3.3.11查看结果

3.4     实现过程(mahout 0.7+版本)

4 问题解决

4.1  使用mahout0.7+版本对20Newsgroup数据建立训练集时出错

1 运行环境说明

1.1 硬软件环境

l  主机操作系统:Windows 64 bit,双核4线程,主频2.2G,6G内存

l  虚拟软件:VMware® Workstation 9.0.0 build-812388

l  虚拟机操作系统:CentOS 64位,单核,1G内存

l  JDK:1.7.0_55 64 bit

l  Hadoop:1.1.2

1.2 机器网络环境

集群包含三个节点:1个namenode、2个datanode,其中节点之间可以相互ping通。节点IP地址和主机名分布如下:

序号

IP地址

机器名

类型

用户名

运行进程

1

10.88.147.221

hadoop1

名称节点

hadoop

NN、SNN、JobTracer

2

10.88.147.222

hadoop2

数据节点

hadoop

DN、TaskTracer

3

10.88.147.223

hadoop3

数据节点

hadoop

DN、TaskTracer

所有节点均是CentOS6.5 64bit系统,防火墙均禁用,所有节点上均创建了一个hadoop用户,用户主目录是/usr/hadoop。所有节点上均创建了一个目录/usr/local/hadoop,并且拥有者是hadoop用户。

2 书面作业0:搭建Mahout环境

2.1 Mahout介绍

Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。AMahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。

2.2 部署过程

2.2.1下载Mahout

在Apache下载最新的Mahout软件包,点击下载会推荐最快的镜像站点,以下为下载地址:http://archive.apache.org/dist/mahout/0.6/

clip_image002

2.2.2上传Mahout

把下载的mahout-distribution-0.6.tar.gz安装包,使用SSH Secure File Transfer工具(第1、2作业周2.1.3.1介绍)上传到/home/hadoop/Downloads 目录下

clip_image004

2.2.3解压缩

在Downloads目中将mahout解压缩

cd /home/hadoop/Downloads/

tar -xzf mahout-distribution-0.6.tar.gz

clip_image006

把mahout-distribution-0.6目录移到/usr/local目录下

sudo mv mahout-distribution-0.6 /usr/local/mahout-0.6

cd /usr/local

ls

clip_image008

2.2.4设置环境变量

使用如下命令编辑/etc/profile文件:

sudo vi /etc/profile

clip_image010

声明mahout的home路径和在path加入bin的路径:

export MAHOUT_HOME=/usr/local/mahout-0.6

export MAHOUT_CONF_DIR=/usr/local/mahout-0.6/conf

export PATH=$PATH:$MAHOUT_HOME/bin

clip_image012

编译配置文件/etc/profile,并确认生效

source /etc/profile

2.2.5验证安装完成

重新登录终端,确保hadoop集群启动,键入mahout --help命令,检查Mahout是否安装完好,看是否列出了一些算法:

mahout --help

clip_image014

2.3 测试例子

2.3.1下载测试数据,放到$MAHOUT_HOME/testdata目录

下载一个文件synthetic_control.data,下载地址http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data,并把这个文件放在$MAHOUT_HOME目录下clip_image016

cd /home/hadoop/Downloads/

mv synthetic_control.data /usr/local/mahout-0.6/

clip_image018

mkdir testdata

cp synthetic_control.data testdata/

ls

clip_image020

2.3.2启动Hadoop

./start-all.sh

clip_image022

2.3.3使用kmeans算法

使用如下命令进行kmeans算法测试:

mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

clip_image024

2.3.4查看结果

结果会在根目录建立output新文件夹,如果下图结果表示mahout安装正确且运行正常:

cd output

ls

clip_image026

3 书面作业1:运行20newsgroup

3.1 书面作业1内容

安装Mahout,并运行20newsgroup的测试样例,抓图说明实验过程

3.2 算法流程

朴素贝叶斯分类是一种十分简单的分类算法,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率哪个最大,就认为此待分类项属于哪个类别。

这二十个新闻组数据集合是收集大约20,000新闻组文档,均匀的分布在20个不同的集合。这20个新闻组集合采集最近流行的数据集合到文本程序中作为实验,根据机器学习技术。例如文本分类,文本聚集。我们将使用Mahout的Bayes Classifier创造一个模型,它将一个新文档分类到这20个新闻组集合范例演示

clip_image028

 

3.3     实现过程(mahout 0.6版本)

3.3.1下载数据

下载20Newsgroups数据集,地址为 http://qwone.com/~jason/20Newsgroups/ ,下载20news-bydate.tar.gz数据包

clip_image030

3.3.2上传并解压数据

把下载的20news-bydate.tar.gz数据包,使用SSH Secure File Transfer工具(第1、2作业周2.1.3.1介绍)上传到/home/hadoop/Downloads 目录下:

clip_image032

解压20news-bydate.tar.gz数据包,解压后可以看到两个文件夹,分别为训练原始数据和测试原始数据:

cd /home/hadoop/Downloads/

tar -xzf 20news-bydate.tar.gz

clip_image034

在mahout根目录下建data文件夹,然后把20news训练原始数据和测试原始数据迁移到该文件夹下:

mkdir /usr/local/mahout-0.6/data

mv 20news-bydate-t* /usr/local/mahout-0.6/data

ls /usr/local/mahout-0.6/data

clip_image036

3.3.3建立训练集

通过如下命令建立训练集,训练的数据在20news-bydate-train目录中,输出的训练集目录为 bayes-train-input:

mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups \

-p /usr/local/mahout-0.6/data/20news-bydate-train \

-o /usr/local/mahout-0.6/data/bayes-train-input \

-a org.apache.mahout.vectorizer.DefaultAnalyzer \

-c UTF-8

clip_image038

3.3.4建立测试集

通过如下命令建立训练集,训练的数据在20news-bydate-test目录中,输出的训练集目录为 bayes-test-input:

mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups \

-p /usr/local/mahout-0.6/data/20news-bydate-test \

-o /usr/local/mahout-0.6/data/bayes-test-input \

-a org.apache.mahout.vectorizer.DefaultAnalyzer \

-c UTF-8

clip_image040

3.3.5上传数据到HDFS

在HDFS中新建./20news文件夹,把生成的训练集和测试集上传到HDFS的./20news目录中:

hadoop fs -mkdir ./20news

hadoop fs -put /usr/local/mahout-0.6/data/bayes-train-input ./20news

hadoop fs -put /usr/local/mahout-0.6/data/bayes-test-input ./20news

hadoop fs -ls ./20news

hadoop fs -ls ./ 20news/bayes-test-input

clip_image042

3.3.6训练贝叶斯分类器

使用trainclassifier类训练在HDFS中./20news/bayes-train-input的数据,生成的模型放到./ 20news/newsmodel 目录中:

mahout trainclassifier \

-i /user/hadoop/20news/bayes-train-input \

-o /user/hadoop/20news/newsmodel \

-type cbayes

-ng2 \

-source hdfs

clip_image044

 

3.3.7观察训练作业运行过程

在训练过程中在JobTracker页面观察运行情况,链接地址为http://hadoop1:50030/jobtracker.jsp,训练任务四个作业,大概运行了15分钟左右:

clip_image046

点击查看具体作业信息

clip_image048

map运行情况

clip_image050

作业运行情况

clip_image052

3.3.8查看生成模型

通过如下命令查看模型内容:

hadoop fs -ls ./20news

hadoop fs -ls ./20news/newsmodel

hadoop fs -ls ./20news/newsmodel/trainer-tfIdf

clip_image054

3.3.9测试贝叶斯分类器

使用testclassifier类训练在HDFS中./20news/bayestest-input的数据,使用的模型路径为./ 20news/newsmodel:

mahout testclassifier \

-m /user/hadoop/20news/newsmodel \

-d /user/hadoop/20news/bayes-test-input \

-type cbayes

-ng2 \

-source hdfs\

-method mapreduce

 

clip_image056

3.3.10   观察训练作业运行过程

在执行过程中在JobTracker页面观察运行情况,链接地址为http://hadoop1:50030/jobtracker.jsp,训练任务1个作业,大概运行了5分钟左右:

clip_image058

作业的基本信息

clip_image060

map运行情况

clip_image062

reduce运行情况

clip_image064

3.3.11   查看结果

这个混合矩阵的意思说明:上述a到u分别是代表了有20类别,这就是我们之前给的20个输入文件,列中的数据说明每个类别中被分配到的字节个数,classified说明应该被分配到的总数

381  0  0  0  0  9  1  0  0  0  1  0  0  2  0  1  0  0  3  0  0  |  398  a = rec.motorcycles

意思为rec.motorcycles 本来是属于 a,有381篇文档被划为了a类,这个是正确的数据,其它的分别表示划到 b~u类中的数目。我们可以看到其正确率为 381/398=0.9573 ,可见其正确率还是很高的了。

clip_image066

3.4 实现过程(mahout 0.7+版本)

在0.7版本的安装目录下$MAHOUT_HOME/examples/bin下有个脚本文件classifu-20newsgroups.sh,这个脚本中执行过程是和前面分布执行结果是一致的,只不过将各个API用shell脚本封装到一起了。从0.7版本开始,Mahout移除了命令行调用的API:prepare20newsgroups、trainclassifier和testclassifier,只能通过shell脚本执行。

执行 $MAHOUT_HOME/examples/bin/classify-20newsgroups.sh 四个选项中选择第一个选项,

clip_image068

 

clip_image070

4 问题解决

4.1  使用mahout0.7+版本对20Newsgroup数据建立训练集时出错

使用如下命令对20Newsgroupt数据建立训练集时:

mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups \

-p /usr/local/mahout-0.9/data/20news-bydate-train \

-o /usr/local/mahout-0.9/data/bayes-train-input \

-a org.apache.mahout.vectorizer.DefaultAnalyzer\

-c UTF-8

出现如下错误,原因在于从0.7版本开始,Mahout移除了命令行调用的prepare20newsgroups、trainclassifier和testclassifier API,只能通过shell脚本执行$MAHOUT_HOME/examples/bin/classify-20newsgroups.sh进行

14/12/7 21:31:35 WARN driver.MahoutDriver: Unable to add class: org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups

14/12/7 21:31:35 WARN driver.MahoutDriver: No org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups.props found on classpath, will use command-line arguments only

Unknown program 'org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups' chosen.

Valid program names are:

  arff.vector: : Generate Vectors from an ARFF file or directory

  baumwelch: : Baum-Welch algorithm for unsupervised HMM training

  .......

调用shell脚本执行参见3.4


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测

一、CIFAR-10数据模型训练 1.下载二进制的cifar文件   cd $CAFFE_ROOT ./data/cifar10/get_cifar10.sh     说明:该脚本会下载二进制的ci...
  • liuweizj12
  • liuweizj12
  • 2016-08-06 20:17
  • 4520

机器学习(周志华) 参考答案 第四章 决策树

机器学习(周志华) 参考答案 第四章 决策树 机器学习(周志华西瓜书) 参考答案 总目录 http://blog.csdn.net/icefire_tyh/article/details/520...
  • icefire_tyh
  • icefire_tyh
  • 2016-08-01 00:39
  • 8587

机器学习(周志华) 参考答案 第三章 线性模型

机器学习(周志华) 参考答案 第三章 线性模型 机器学习(周志华西瓜书) 参考答案 总目录 http://blog.csdn.net/icefire_tyh/article/details/5...
  • icefire_tyh
  • icefire_tyh
  • 2016-07-29 22:12
  • 11284

Hadoop—Mahout部署及进行20newsgroup数据分析例子---练习10

1 运行环境说明 1.1 硬软件环境 l  主机操作系统:Windows 64 bit,双核4线程,主频2.2G,6G内存 l  虚拟软件:VMware® Workstation 9.0.0 b...
  • u013337889
  • u013337889
  • 2015-07-19 11:22
  • 550

运行Mahout分类算法,分析20newsgroup的分类过程

1.也就是classify-20newsgroups.sh #!/bin/bash # # Licensed to the Apache Software Foundation (ASF) under...
  • chen517611641
  • chen517611641
  • 2014-04-06 15:30
  • 2026

大数据分析- 基于Hadoop/Mahout的大数据挖掘

随着互联网、移动互联网和物联网的发展,我们已经切实地迎来了一个大数据的时代。大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫的需...
  • shenmanli
  • shenmanli
  • 2014-05-16 09:29
  • 545

“大数据分析挖掘-基于Hadoop/Mahout/Mllib的大数据挖掘(含Spark、Storm和Docker应用介绍)”培训

目前对大数据的分析工具,首选的是Hadoop/Yarn平台。Hadoop/Yarn在可伸缩性、健壮性、计算性能和成本上具有无可替代的优势,事实上已成为当前互联网企业主流的大数据分析平台。
  • shenmanli
  • shenmanli
  • 2017-04-12 10:50
  • 711

大数据分析- 基于Hadoop/Mahout的大数据挖掘

随着互联网、移动互联网和物联网的发展,我们已经切实地迎来了一个大数据的时代。大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫的需...
  • shenmanli
  • shenmanli
  • 2014-10-28 16:39
  • 805

大数据分析- 基于Hadoop/Mahout的大数据挖掘

随着互联网、移动互联网和物联网的发展,我们已经切实地迎来了一个大数据的时代。大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫的需...
  • shenmanli
  • shenmanli
  • 2015-03-16 10:27
  • 531

大数据分析- 基于Hadoop/Mahout的大数据挖掘

培训对象 1,系统架构师、系统分析师、高级程序员、资深开发人员。 2,牵涉到大数据处理的数据中心运行、规划、设计负责人。 3,政府机关,金融保险、移动和互联网等大数据来源单位的负责人。 4,高...
  • shenmanli
  • shenmanli
  • 2014-06-30 11:07
  • 564
    个人资料
    • 访问:282618次
    • 积分:5038
    • 等级:
    • 排名:第6505名
    • 原创:201篇
    • 转载:155篇
    • 译文:0篇
    • 评论:66条
    文章分类
    最新评论