英语原文共 415 页,剩余内容已隐藏,支付完成后下载完整资料
目 录
12.2.3以音乐家作为特征向量将Last.fm标签转化为向量 18
12.3.2发现Stack Overflow中的聚类问题 22
11以聚类作为生产
11.1使用Hadoop集群快速入门教程
我们先看看Hadoop框架的一部分。
Hadoop集群中包含两类节点,并以管理者-工作者模式运行,即一个NameNode(管理者)和多个DataNode,其中NameNode主要负责管理HDFS文件系统,NameNode主要管理包含文件、文件位置以及这些文件所在的DataNode内的所有数据块的内存映射。NameNode也同步于Hadoop分布式文件系统(HDFS)。另一类节点称为JobTracker,它负责管理MapReduce的所有工作,并管理在集群中执行Mapper类和Reducer类节点。在每一个节点上,另一种进程叫做TaskTracker,负责管理从JobTracker处发给Mapper类和Reducer类的执行请求。
Hadoop做这一切都是无缝连接,没有任何用户干预。在单节点集群中,Namenode、JobTracker、DataNode和TaskTracker运行在同一系统中作为独立的进程彼此交互。
Mahout所设计的Hadoop版本目前是0.21(它与其他最近的版本兼容)。
11.1.1运行在本地的Hadoop集群
你将会在http://hadoop.apache.org/common/docs/r0.20.2/quickstart.html上找到一个简短的关于基于伪分布模式的本地Hadoop集群安装说明书。你需要为本章的例子设置本地集群。
Hadoop binary位于bin文件夹下,查看HDFS的内容,执行此命令:
bin/hadoop dfs –ls /
将列出文件系统根目录中的所有文件。
当集群第一次启动时,你的主目录可能不存在于HDFS中,因此你应该创建一个/user/lt;your UNIX user namegt; 文件夹:
bin/hadoop dfs –mkdir /user/lt;your UNIX usernamegt;
主目录也可以用如下方法列出:
bin/hadoop dfs –ls
在伪分布式集群上对路透社数据进行聚类之前,准备好包含路透社当地文本数据的SequenceFile文件,将其粘贴到HDFS中:
bin/hadoop dfs –put lt;path-togt;/reuters-seqfiles reuters-seqfiles
使用SequenceFile文件作为输入,你将在集群上运行基于词典的向量表示方法,然后运行K均值聚类算法。
Hadoop MapReduce的工作需要使用Hadoop jar命令执行。Mahout将所有实例类文件和依赖关系放入一个JAR文件中,它在examples/target/mahout-examples-0.4-SNAPSHOT.job 目录之下。在本地Hadoop集群上运行向量字典,利用路透社SequenceFile文件作为输入,只需执行Hadoop的JAR指令如下:
bin/hadoop jar mahout-examples-0.5-job.jar
org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles
-ow -i reuters-seqfiles -o reuters-vectors
运行成功,完成执行本地Hadoop集群聚类。如果默认使用Hadoop的配置且系统有至少两个处理器内核,两映射将并行执行,每一个在一个内核中运行,这可以在JobTracker的仪表板中看到,如图11.1所示。
图11.1截图显示一个典型的Hadoop MapReduce JobTracker页,您可以通过http://localhost:50030查看您的本地Hadoop集群。
11.1.2设定Hadoop配置
如果你的计算机有两个内核,那么执行聚类将是两倍速度。如果有更多可使用内核,那么可以修改Hadoop的配置文件中mapper和reducer,设定更高值来提高计算的整体速度。在Hadoop管理安装的mapred-site.xml文件中,需要基于计算机内核数对mapred.map.tasks和mapred.reduce.tasks属性设定合适的值。
随着内核的增多,并行数量增加,处理时间减少。当并行任务的数量达到单个节点的峰值时,增加任务数将严重影响执行速度。唯一增大规模的方法是拥有多个相同配置的节点——完全分布式Hadoop集群。
提示:你可以在http://hadoop.apache.org/common/docs/r0.20.2/cluster_setup.html上找到一个分布式Hadoop集群设置教程,在Hadoop 0.20.2以及之后的版本中,配置被拆分为三个文件夹,放置于conf文件夹中:core-site.xml、hdfs-site.xml和mapred-site.xml。默认的配置值设置在core-default.xml、hdfs-default.xml和mapred-default.xml中。默认文件中的参数可以在* -site.xml文件下重写。调整MapReduce参数常需要编辑mapred-site.xml文件。
在分布式Hadoop集群执行聚类代码与在单节点集群执行基本相同。通过bin/hadoop 脚本启动任务,唯一的区别是脚本,当运行时,需要通过hadoop_conf_dir环境变量访问正确的集群配置文件。
通过Mahout Launcher在Hadoop集群上执行任务
Mahout也提供一个bin/mahout script(与Hadoop launcher脚本相似)来启动聚类任务,我们在以前的章节中广泛使用它作为一个单一的过程工作。通过设置hadoop_home和hadoop_conf_dir的环境变量,相同的脚本可以用来在Hadoop集群上启动任何的Mahout算法。该脚本会自动读取Hadoop集群配置文件并在集群上启动Mahout任务。典型的输出如下:
export HADOOP_HOME=~/hadoop/
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
bin/mahout kmeans –h
running on hadoop, using HADOOP_HOME=/Users/username/hadoop and
HADOOP_CONF_DIR=/Users/username/hadoop/conf
...
Mahout启动脚本通过正确的集群配置文件内部调用Hadoop启动脚本。在Mahout中,对于调用任何本地算法或者在分布式Hadoop集群上,启动脚本都是最简单的方法。
恭喜你,你已经成功的运行了一个聚类任务。如果你感兴趣,你可以花一些时间试验各种参数来调整聚类质量.。接下来,我们将看看如何通过调整这个设置来实现更高的吞吐量和性能。
11.2调整聚类性能
聚类算法被设计为并行运行,虽然算法不同,但是他们在一方面是相似的:他们从SequenceFile中读写是并行的。聚类算法的许多操作都是计算密集型的,这意味着对于许多操作例如向量的矢量与非矢量化、距离的计算等等问题来说,CPU都是保持充分使用。而有一些操作是I/O密集型的,例如通过网络传送中心到每个Reducer。为了提高聚类性能,你需要学会解决这类性能瓶颈的方法,你将看到基于不同类型输入会产生多少参数占用CPU、硬盘或网络瓶颈。
K均值聚类算法如下图11.3所示,模糊K均值算法、Dirichlet和LDA等其他聚类算法与K均值聚类算法结构相似,并且K均值算法的优化对他们均适用。
图11.3 K均值聚类迭代运行示意图
聚类性能是输入数据
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[137546],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。