文档详情

hadoop mapreduce教程 Hadoop-MapReduce入门教程(含视频教程).doc

发布:2017-01-09约1.37万字共41页下载文档
文本预览下载声明
hadoop mapreduce教程 Hadoop-MapReduce入门教程(含视频教程) 导读:就爱阅读网友为您分享以下“Hadoop-MapReduce入门教程(含视频教程)”的资讯,希望对您有所帮助,感谢您对92的支持! 1. 检验作业的输出,例如检查输出路径是否已经存在。 2. 提供一个RecordWriter的实现,用来输出作业结果。 输出文件保存在FileSystem上。 TextOutputFormat是默认的 OutputFormat。 任务的Side-Effect File 在一些应用程序中,子任务需要产生一些side-file,这些文件与作业实际输出结果的文件不同。 在这种情况下,同一个Mapper或者Reducer的两个实例(比如预防性任务)同时打开或者写 FileSystem上的同一文件就会产生冲突。因此应用程序在写文件的时候需要为每次任务尝试(不仅仅是每次任务,每个任务可以尝试执行很多次)选取一个独一无二的文件名(使用attemptid,例如 task_200709221812_0001_m_000000_0)。 为了避免冲突,Map/Reduce框架为每次尝试执行任务都建立和维护一个特殊的 ${mapred.output.dir}/_temporary/_${taskid}子目录,这个目录位于本次尝试执行任务输出结果所在的FileSystem上,可以通过 ${mapred.work.output.dir}来访问这个子目录。 对于成功完成的任务尝试,只有 ${mapred.output.dir}/_temporary/_${taskid}下的文件会移动到 ${mapred.output.dir}。当然,框架会丢弃那些失败的任务尝试的子目录。这种处理过程对于应用程序来说是完全透明的。 在任务执行期间,应用程序在写文件时可以利用这个特性,比如 通过 FileOutputFormat.getWorkOutputPath()获得${mapred.work.output.dir}目录, 并在其下创建任意任务执行时所需的side-file,框架在任务尝试成功时会马上移动这些文件,因此不需要在程序内为每次任务尝试选取一个独一无二的名字。 注意:在每次任务尝试执行期间,${mapred.work.output.dir} 的值实际上是 ${mapred.output.dir}/_temporary/_{$taskid},这个值是Map/Reduce框架创建的。 所以使用这个特性的方法是,在 FileOutputFormat.getWorkOutputPath() 路径下创建side-file即可。 对于只使用map不使用reduce的作业,这个结论也成立。这种情况下,m
显示全部
相似文档