Mahout驾驭hadoop之详解

众所周知,Mahout是基于Hadoop分布式系统的,要想看懂Mahout的源码,首先得明白mahout是如何使用hadoop的!

首先,在我的<<Hadoop运行原理详解>>一篇中,详细介绍了hadoop的运行机制,这里就不多说了!下面我就以Kmeans聚类算法为例,讲讲mahout如何利用hadoop实现数据挖掘算法并行化.如以下类图所示,

该图描述了整个mahout实现Kmeans算法的架构图,首先KmeansCluster继承Cluster,在KmeansCluster中有几个比较重要的方法,首先clusterPoints()是实现Kmeans聚类算法的方法,而其中调用了runKMeansIteration()方法,该方法是单次聚类迭代方法.

 尤其可见,这块算法实现和普通kmeans算法没有太大差别!在Mahout针对每个算法都有一个Driver,这个东西是干什么的啊?

 我们先看看KMeansDriver源码,KmeansDriver继承了AbstractJob.我们知道Hadoop上的任务都是以Job的形式启动的!我们要使用某个算法进行一项数据挖掘工作,因此就要启动一个Job.因此,KmeansDriver就是创建一个Job,然后对Job的属性进行配置,然后运行该Job.

上图反映了KMeansDriver工作原理.

时间: 2024-09-18 22:55:57

Mahout驾驭hadoop之详解的相关文章

《Hadoop技术详解》一第1章 简介

第1章 简介 Hadoop技术详解 在过去的几年里,数据的存储.管理和处理发生了巨大的变化.各个公司存储的数据比以前更多,数据来源更加多样,数据格式也更加丰富.这不是因为我们变成了林鼠(译注:林鼠喜欢收集各种物品),而是因为我们想要创造出可以让我们进一步了解某一领域的产品.功能以及对其智能预测(这个领域可以是指用户.数据搜索.机器日志或者是某机构的任何信息).为了更好地服务其成员,各组织正在寻找新的方式来使用那些曾经被认为没有什么价值或者存储起来过于昂贵的数据.采集和存储数据只是其中的一部分工作

《Hadoop技术详解》一导读

前 言 Hadoop技术详解本书采用的约定本书采用以下排版约定. 斜体 用于表明新的术语.URL.电子邮件地址.文件名和文件扩展名. 等宽字体 用于程序清单,正文段落中有关的程序元素,如变量及函数名.数据库.数据类型.环境变量.语句和关键字等. 等宽加粗字体 用于显示命令或应由用户输入的其他文本. 等宽斜体字体 表明这里的文本需要被替换成用户提供的值或由其他上下文确定的值. 目 录 第1章 简介第2章 HDFS 2.1 目标和动机2.2 设计2.3 守护进程2.4 读写数据2.5 管理文件系统元

Hadoop Yarn详解

一.Yarn简介 Yarn是Hadoop集群的资源管理系统.Hadoop2.0对MapReduce框架做了彻底的设计重构,我们称Hadoop2.0中的MapReduce为MRv2或者Yarn.在介绍Yarn之前,我们先回头看一下Hadoop1.x对MapReduce job的调度管理方式(可参考:Hadoop核心之MapReduce架构设计),它主要包括两部分功能: 1. ResourceManagement 资源管理 2. JobScheduling/JobMonitoring 任务调度监控

Hadoop实战之 hadoop作业调度详解

对Hadoop的最感兴趣的地方,也就在于Hadoop的作业调度了,在正式介绍如何搭建Hadoop之前,深入理解一下Hadoop的作业调度很有必要.我们不一定能用得上Hadoop,但是如果理通顺Hadoop的分布式调度原理,在有需要的时候未必不能自己写一个Mini Hadoop~: ) 开始 Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论 文公开发布了.其中对它的定义是,Map/Reduce是一

《Hadoop技术详解》一2.8 访问与集成

2.8 访问与集成 本地访问HDFS的唯一方式是通过其提供的Java应用程序接口,其他的访问方式都是经过定义并建立在这些应用程序接口之上的,而且只能提供这些接口所允许的功能.为了使应用更容易使用和开发,HDFS借用了大量像Java I/O流这样的概念,因而HDFS 应用程序接口对开发者来讲非但不陌生,而且还非常简单.当然HDFS也对这些应用程序接口做了一些改动,以确保提供其所宣称的那些功能,但大部分的改动很容易理解,而且有很详细的文档. 为了访问HDFS,客户端--也就是用应用程序接口编写的应用

《Hadoop技术详解》一2.2 设计

2.2 设计 HDFS在很多方面都遵循了传统文件系统的设计思想.譬如文件以不透明的数据块形式存储,通过元数据管理文件名和数据块的映射关系.目录树结构.访问权限等信息.这些和普通的Linux文件系统(如ext3)是非常相似的.那么,HDFS又有什么与众不同的地方呢? 传统文件系统是内核模块(至少在Linux中是这样的)和用户空间工具,然后通过挂载的形式提供给终端用户使用.但是HDFS却是一种用户空间文件系统.具体来说,文件系统代码以OS进程和扩展的形式运行在内核之外,而无须注册在Linux VFS

《Hadoop技术详解》一2.1 目标和动机

2.1 目标和动机 Apache Hadoop的重要组成部分是Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem).HDFS的设计初衷是为了支持高吞吐和超大文件的流式读写操作.传统的大型存储区域网络(Storage Area Network, SAN)和网络附加存储(Network Attached Storage, NAS)给TB级的块设备或文件系统提供了一种集中式的低延时数据访问解决方案.因为SAN和NAS支持全功能POSIX语法,具有很好的存储

《Hadoop技术详解》一2.6 NameNode的高可用性

2.6 NameNode的高可用性 因为管理员的主要职责是确保大规模系统的服务质量和可用性,单点故障(single point of failure)可能会给我们带来麻烦,甚至带来非常糟糕的后果.不幸的是,长期以来,HDFS的NameNode就是困扰我们的单点故障问题.近来,Hadoop社区投入大量的人力来提升NameNode的高可用性,使Hadoop可以在更多重要应用场景下部署. NameNode 高可用性(或称HA)是通过部署一对主/备NameNode的方式来实现的.主/备NameNode都

《Hadoop技术详解》一2.4 读写数据

2.4 读写数据 客户端可以通过多种不同的工具和应用程序接口(参见2.8节"访问与集成")对HDFS进行读写操作,这些操作都遵循着同样的流程.在某些层面,客户端可能要使用到Hadoop库函数,因为只有Hadoop库函数才清楚知道HDFS的具体细节和相关语法.函数库封装了大部分与NameNode 和DataNode通信相关的细节,同时也考虑了分布式文件系统在诸多场景中的错误处理机制. 2.4.1 数据读取流程 首先,我们来看一下HDFS数据读取操作的处理逻辑.假设,HDFS中已经存储了一