Hadoop第10周练习—Mahout部署及进行20newsgroup数据分析例子
:搭建Mahout环境
:运行20newsgroup
内容
运行环境说明
1.1 硬软件环境
线程,主频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 机器网络环境
个namenode、2个datanode,其中节点之间可以相互ping通。节点IP地址和主机名分布如下:
序号 |
IP地址 |
机器名 |
类型 |
用户名 |
运行进程 |
10.88.147.221 |
hadoop1 |
名称节点 |
hadoop |
NN、SNN、JobTracer |
|
10.88.147.222 |
hadoop2 |
数据节点 |
hadoop |
DN、TaskTracer |
|
10.88.147.223 |
hadoop3 |
数据节点 |
hadoop |
DN、TaskTracer |
所有节点均是CentOS6.5 64bit系统,防火墙均禁用,所有节点上均创建了一个hadoop用户,用户主目录是/usr/hadoop。所有节点上均创建了一个目录/usr/local/hadoop,并且拥有者是hadoop用户。
书面作业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/
2.2.2上传Mahout
、2作业周2.1.3.1介绍)上传到/home/hadoop/Downloads 目录下
2.2.3解压缩
在Downloads目中将mahout解压缩
cd /home/hadoop/Downloads/
tar -xzf mahout-distribution-0.6.tar.gz
把mahout-distribution-0.6目录移到/usr/local目录下
sudo mv mahout-distribution-0.6 /usr/local/mahout-0.6
cd /usr/local
ls
2.2.4设置环境变量
使用如下命令编辑/etc/profile文件:
sudo vi /etc/profile
声明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
编译配置文件/etc/profile,并确认生效
source /etc/profile
2.2.5验证安装完成
重新登录终端,确保hadoop集群启动,键入mahout --help命令,检查Mahout是否安装完好,看是否列出了一些算法:
mahout --help
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目录下
cd /home/hadoop/Downloads/
mv synthetic_control.data /usr/local/mahout-0.6/
mkdir testdata
cp synthetic_control.data testdata/
ls
2.3.2启动Hadoop
./start-all.sh
2.3.3使用kmeans算法
使用如下命令进行kmeans算法测试:
mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
2.3.4查看结果
结果会在根目录建立output新文件夹,如果下图结果表示mahout安装正确且运行正常:
cd output
ls
书面作业1:运行20newsgroup
内容
安装Mahout,并运行20newsgroup的测试样例,抓图说明实验过程
3.2 算法流程
朴素贝叶斯分类是一种十分简单的分类算法,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率哪个最大,就认为此待分类项属于哪个类别。
个不同的集合。这20个新闻组集合采集最近流行的数据集合到文本程序中作为实验,根据机器学习技术。例如文本分类,文本聚集。我们将使用Mahout的Bayes Classifier创造一个模型,它将一个新文档分类到这20个新闻组集合范例演示
3.3 实现过程(mahout 0.6版本)
3.3.1下载数据
下载20Newsgroups数据集,地址为 http://qwone.com/~jason/20Newsgroups/ ,下载20news-bydate.tar.gz数据包
3.3.2上传并解压数据
、2作业周2.1.3.1介绍)上传到/home/hadoop/Downloads 目录下:
解压20news-bydate.tar.gz数据包,解压后可以看到两个文件夹,分别为训练原始数据和测试原始数据:
cd /home/hadoop/Downloads/
tar -xzf 20news-bydate.tar.gz
在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
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
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
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
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
3.3.7观察训练作业运行过程
分钟左右:
点击查看具体作业信息
map运行情况
作业运行情况
3.3.8查看生成模型
通过如下命令查看模型内容:
hadoop fs -ls ./20news
hadoop fs -ls ./20news/newsmodel
hadoop fs -ls ./20news/newsmodel/trainer-tfIdf
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
3.3.10 观察训练作业运行过程
个作业,大概运行了5分钟左右:
作业的基本信息
map运行情况
reduce运行情况
3.3.11 查看结果
类别,这就是我们之前给的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
篇文档被划为了a类,这个是正确的数据,其它的分别表示划到 b~u类中的数目。我们可以看到其正确率为 381/398=0.9573 ,可见其正确率还是很高的了。
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 四个选项中选择第一个选项,
问题解决
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
Hadoop第10周练习—Mahout部署及进行20newsgroup数据分析例子的更多相关文章
- Hadoop第8周练习—Pig部署及统计访问日志例子
:搭建Pig环境 :计算每个IP点击次数 内容 运行环境说明 1.1 硬软件环境 线程,主频2.2G,6G内存 l 虚拟软件:VMware® Workstation 9.0.0 build- ...
- Hadoop第9周练习—Hive部署测试(含MySql部署)
1.1 2 :搭建Hive环境 内容 2.2 3 运行环境说明 1.1 硬软件环境 线程,主频2.2G,6G内存 l 虚拟软件:VMware® Workstation 9.0.0 build-8 ...
- Apache Hadoop 2.9.2 完全分布式部署
Apache Hadoop 2.9.2 完全分布式部署(HDFS) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 1>.操作平台 [root@node101.y ...
- 3-3 Hadoop集群完全分布式配置部署
Hadoop集群完全分布式配置部署 下面的部署步骤,除非说明是在哪个服务器上操作,否则默认为在所有服务器上都要操作.为了方便,使用root用户. 1.准备工作 1.1 centOS6服务器3台 手动指 ...
- 一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)
1)集群规划:主机名 IP 安装的软件 运行的进程master 192.168.199.130 jdk.hadoop ...
- Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行
Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我的CDH5.15.1集群中,默 ...
- Hadoop生态圈-Kafka的完全分布式部署
Hadoop生态圈-Kafka的完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要内容就是搭建Kafka完全分布式,它是在kafka本地模式(https:/ ...
- Windows 10 周年版尝鲜
早在今年的 Build 大会上,微软就开始宣传最新的 Windows 10 周年版更新,炫了不少特技,直到昨天(2016/8/2 PST)才正式放出,相关新闻可以参考这里,正式的版本为 Version ...
- 20145212 《Java程序设计》第10周学习总结
20145212 <Java程序设计>第10周学习总结 学习内容总结 一.Java的网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net ...
随机推荐
- Inno setup 安装*.inf文件_示例
nno setup 调用*.Inf文件的条目区段名称_示例 首先自己编写一个INF文件来供 Inno setup 进行测试: ;复制以下代码到记事本然后另存为123.inf .然后把123.inf文件 ...
- 转:ffdshow 源代码分析
ffdshow神奇的功能:视频播放时显示运动矢量和QP FFDShow可以称得上是全能的解码.编码器.最初FFDShow只是mpeg视频解码器,不过现在他能做到的远不止于此.它能够解码的视频格式已经远 ...
- ACPI I/O resource conflict with SMBus
ACPI I/O resource conflict with SMBus 以電子郵件傳送這篇文章BlogThis!分享至 Twitter分享至 Facebook分享到 Pinterest 這幾天遇到 ...
- linux web服务器必需的库文件
往往安装完linux之后,本文用的centos6.4,再编译安装其它服务器软件时,总是提示缺少各种库文件,在这里我总结了一下 平时web服务器经常需要的一些库,如下: yum -y install m ...
- 10条现代EQ技术基础贴士(转)
前言: 无论是追求复古的模拟音色还是高精度的透明音质,现代电脑音乐制作中层出不断的新EQ插件以其超强的频率塑形和个性化功能为音色的润色和重塑提供了无限可能. 虽然EQ并不是音频工程工具中最复杂的,但是 ...
- count有关
1.count有两个作用:统计某个字段有值的记录数:统计结果集的记录数.2.count括号内的表达式不为null,就是统计结果集的记录数.也就是说,count(1),count(*),count(10 ...
- 更改chrome底色为护目色
找到chrome目录:C:\Documents and Settings\用户名\Local Settings\Application Data\Google\Chrome\User Data\Def ...
- php - 执行Linux命令没有报错但也没有输出
今天我需要在同事访问我的PHP页面的时候执行一段python脚本,于是我的代码是这样写的: 1 <?php 2 function my_workjob(){ 3 $this->makeLo ...
- 打包时Xcode报:此证书的签发者无效Missing iOS Distribution signing identity
问题描述 今天准备打包上传AppStore,结果Xcode报以下错误:Missing iOS Distribution signing identity for XXXXXX 查看证书后发现,Deve ...
- Difference between SET, SETQ and SETF in LISP
SET can set the value of symbols; SETQ can set the value of variables; SETF is a macro that will ...