正文描述:《mapreduce编程说明和程序流程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、HowToWriteMap-ReduceOnHadoop概述HadoopMap-Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。一个Map-Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。通常,Map-Reduce框
2、架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用。Map-Reduce框架由单独一个master JobTracker 和每个集群节点一个slave TaskTracker共同组成。这个master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。应用程序至少应该指明输入/输出的位置(路径),并通过实现合适的接
3、口或抽象类提供map和reduce函数。再加上其他作业的参数,就构成了作业配置(jobconfiguration)。然后,Hadoop的jobclient 提交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责分发这些软件和配置信息给slave、调度任务且监控它们的执行,同时提供状态和诊断信息给job-client。虽然Hadoop框架是用JavaTM实现的,但Map-Reduce应用程序则不一定要用Java来写。·HadoopStreaming是一种运行作业的实用工具,它允许用户创建和运行任何可执行程序(例如:Shell工具)来做为ma
4、pper和reducer。·HadoopPipes是一个与SWIG兼容的C++API(没有基于JNITM技术),它也可用于实现Map-Reduce应用程序。输入与输出Map-Reduce框架运转在 键值对上,也就是说,框架把作业的输入看为是一组 键值对,同样也产出一组 键值对做为作业的输出,这两组键值对的类型可能不同。框架需要对key和value的类(classes)进行序列化操作,因此,这些类需要实现 Writable接口。另外,为了方便框架执行排序操作,key类必须实现 WritableC
5、omparable接口。一个Map-Reduce作业的输入和输出类型如下所示:(input) -> map -> -> combine -> -> reduce -> (output)作业配置老接口JobConf代表一个Map-Reduce作业的配置。JobConf的功能已被新的类Configuration和Job替换。Configuration类描述了资源,这些资源大多都是从XML配置文件中读取的属性和值组成。比如来自core-default.xml和core-site.xml。Job描述了用户
6、角度的视图,它允许用户配置、提交、控制它的执行和查询状态。只有在作业提交之后才能使用set方法。setNumReduceTasks()设置Reduce的任务数;setJarByClass()设置Jar包的类来源;setMapperClass()设置实现的Mapper类;setCombinerClass()设置实现的Combiner类;setReducerClass()设置实现的Reducer类;setInputFormatClass()设置实现的InputFormat类;setOutputKeyClass()设置最终的输出key类;setOutputValue
7、Class()设置最终的输出Value类。默认情况下使用的是FileInputFormat类作为InputFormat类。MapReduce编程接口参数作用缺省值其它实现InputFormat将输入的数据集切割成小数据集InputSplits,每一个InputSplit将由一个Mapper负责处理。此外InputFormat中还提供一个RecordReader的实现,将一个InputSplitTextInputFormat(针对文本文件,按行将文本文件切割成InputSplits,并用LineRecordReader将InputSplit解析成
8、ue>对,key是行在文件中的位置,v
显示全部收起
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。