全部博文(436)
分类: 云计算
2011-09-25 13:43:18
基于hadoop的大规模数据排序算法
(第二次报告)
-------2011.9.24
小组成员:
组长:韩旭红 1091000161
组员:李巍 1091000167 李越 1091000169 闫悦 1091000178
本周内容:
这周我们对Hadoop MapReduce 做了研究,对mapreduce有了初步的了解,并为以后工作做了一些规划。
一.概述
Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
二. 简单工作原理
一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
通常,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用。
Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。
应用程序至少应该指明输入/输出的位置(路径),并通过实现合适的接口或抽象类提供map和reduce函数。再加上其他作业的参数,就构成了作业配置(job configuration)。然后,Hadoop的 job client提交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责分发这些软件和配置信息给slave、调度任务并监控它们的执行,同时提供状态和诊断信息给job-client。
Hadoop 有许多元素构成。其最底部是HDFS,它存储 Hadoop 集群中所有存储节点上的文件。HDFS的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。
三. 运行环境
四.输入与输出
Map/Reduce框架运转在
框架需要对key和value的类(class)进行序列化操作, 因此,这些类需要实现 Writable接口。 另外,为了方便框架执行排序操作,key类必须实现 WritableComparable接口。
一个Map/Reduce 作业的输入和输出类型如下所示:
(input)
五.Map/Reduce - 用户界面
这部分文档为用户将会面临的Map/Reduce框架中的各个环节提供了适当的细节。这应该会帮助用户更细粒度地去实现、配置和调优作业。然而,需要注意每个类/接口的javadoc文档提供最全面的文档。
我们会先看看Mapper和Reducer接口。应用程序通常会通过提供map和reduce方法来实现它们。
然后,我们会讨论其他的核心接口,其中包括: JobConf,JobClient,Partitioner, OutputCollector,Reporter, InputFormat,OutputFormat等等。
最后,我们将通过讨论框架中一些有用的功能点(例如:DistributedCache, IsolationRunner等等)来收尾。
六.下一步计划
下周我们将对mapreduce 的核心功能进行探究,对其作业配置,任务的执行和环境进行进一步的了解。