接着上篇,继续分析代码.下面就到了MR的循环了,这里MR应该算是比较好理解的,重点是退出循环的条件设置,即如何判断前后两次中心点误差小于给定阈值. 首先,while循环: while (iteration <= numIterations) { conf.set(PRIOR_PATH_KEY, priorPath.toString()); String jobName = "Cluster Iterator running iteration " + iteration + &q…
接上文重点分析map操作: Vector probabilities = classifier.classify(value.get());// 第一行 Vector selections = policy.select(probabilities); // 第二行 for (Iterator<Element> it = selections.iterateNonZero(); it.hasNext();) { Element el = it.next(); classifier.train(…
昨天说到为什么Configuration没有设置conf.set("mapred.job.tracker","hadoop:9000")仍然可以访问hdfs文件系统(我又换回虚拟机了,因为我加了2G内存...所以改为了hadoop:9000),实验证明,是可以的.比如编写下面的测试程序: package mahout.fansy.test.kmeans.middle; import java.io.IOException; import org.apache.had…
首先更正一点,昨天处理数据的时候是有问题的,直接从网页中拷贝的文件的空格是有问题的,直接拷贝然后新建的文件中的空格可能有一个两个.三个的,所以要把两个或者三个的都换为一个,在InputMapper中下面的代码: private static final Pattern SPACE = Pattern.compile(" "); String[] numbers = SPACE.split(values.toString()); 可以看到这个代码是以一个空格来区分的,可以在linux的t…
Mahout源码目录说明 mahout项目是由多个子项目组成的,各子项目分别位于源码的不同目录下,下面对mahout的组成进行介绍: 1.mahout-core:核心程序模块,位于/core目录下: 2.mahout-math:在核心程序中使用的一些数据通用计算模块,位于/math目录下: 3.mahout-utils:在核心程序中使用的一些通用的工具性模块,位于/utils目录下: 上述三个部分是程序的主题,存储所有mahout项目的源码. 另外,mahout提供了样例程序,分别在taste-…
在上篇文章中分析了mybatis解析<mappers>标签,<mybatis源码配置文件解析之五:解析mappers标签>重点分析了如何解析<mappers>标签中的<package>子标签的过程.mybatis解析<mappers>标签主要完成了两个操作,第一个是把对应的接口类,封装成MapperProxyFactory放入kownMappers中:另一个是把要执行的方法封装成MapperStatement. 一.概述 在上篇文章中分析了<…
MapReduce的MapTask任务的运行源码级分析 这篇文章好不容易恢复了...谢天谢地...这篇文章讲了MapTask的执行流程.咱们这一节讲解ReduceTask的执行流程.ReduceTask也有四种任务,可参考前一章节对应的内容,至于Reduce Task要从各个Map Task上读取一片数据,经过排序后,以组为单位交给用户编写的reduce方法,并将结果写入HDFS中. MapTask和ReduceTask都是Task的子类,分别对应于我们常说的map和reduce任务.同上一节一…
Activity源码简要分析总结 摘自参考书籍,只列一下结论: 1. Activity的顶层View是DecorView,而我们在onCreate()方法中通过setContentView()设置的View只不过是这个DecorView中的一部分. DecorView是一个FrameLayout. 2. Activity和UI 有关,它包含一个Window(真实类型是PhoneWindow)和一个WindowManager(真实类型是LocalWindowManager)对象.这两个对象将控制整…
TaskTracker任务初始化及启动task源码级分析 这篇文章中分析了任务的启动,每个task都会使用一个进程占用一个JVM来执行,org.apache.hadoop.mapred.Child方法是具体的JVM启动类,其main方法中的taskFinal.run(job, umbilical)会启动具体的Task. Task分为两种类型:MapTask和ReduceTask,很明显,前者对应于Map任务,后者对应于Reduce任务.且MapTask分为4种:Job-setup Task.Jo…
在监听器初始化Job.JobTracker相应TaskTracker心跳.调度器分配task源码级分析中我们分析的Tasktracker发送心跳的机制,这一节我们分析TaskTracker接受JobTracker的响应信息后的工作内容. TaskTracker中的transmitHeartBeat方法通过调用JobTracker.heartbeat方法获得心跳的响应信息HeartbeatResponse,然后返回给TaskTracker.offerService()方法.HeartbeatRes…