搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
博客
群组
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
连载型
›
Hadoop二次开发必懂:源码分析Task的内部类和辅助类(3)
0
0
0
分享
Hadoop二次开发必懂:源码分析Task的内部类和辅助类(3)
yuwenge
2014-1-16 16:25:37
发表于
连载型
[显示全部楼层]
只看大图
阅读模式
关闭右栏
0
8828
本帖最后由 pig2 于 2014-1-16 17:07 编辑
从前面的图中,我们可以发现Task有很多内部类,并拥有大量类成员变量,这些类配合Task完成相关的工作,如下图。
MapOutputFile管理着Mapper的输出文件,它提供了一系列get方法,用于获取Mapper需要的各种文件,这些文件都存放在一个目录下面。我们假设传入MapOutputFile的JobID为job_200707121733_0003,TaskID为task_200707121733_0003_m_000005。MapOutputFile的根为{mapred.local.dir}/taskTracker/jobcache/{jobid}/{taskid}/output在下面的讨论中,我们把上面的路径记为{MapOutputFileRoot}
以上面JogID和TaskID为例,我们有:{mapred.local.dir}/taskTracker/jobcache/job_200707121733_0003/task_200707121733_0003_m_000005/output需要注意的是,{mapred.local.dir}可以包含一系列的路径,那么,Hadoop会在这些根路径下找一个满足要求的目录,建立所需的文件。MapOutputFile的方法有两种,结尾带ForWrite和不带ForWrite,带ForWrite用于创建文件,它需要一个文件大小作为参数,用于检查磁盘空间。不带ForWrite用于获取以建立的文件。
getOutputFile:文件名为{MapOutputFileRoot}/file.out; getOutputIndexFile:文件名为{MapOutputFileRoot}/file.out.indexgetSpillFile:文件名为{MapOutputFileRoot}/spill{spillNumber}.outgetSpillIndexFile:文件名为{MapOutputFileRoot}/spill{spillNumber}.out.index以上四个方法用于Task子类MapTask中;getInputFile:文件名为{MapOutputFileRoot}/map_{mapId}.out用于ReduceTask中。我们到使用到他们的地方再介绍相应的应用场景。
介绍完临时文件管理以后,我们来看Task.CombineOutputCollector,它继承自org.apache.hadoop.mapred.OutputCollector,很简单,只是一个OutputCollector到IFile.Writer的Adapter,活都让IFile.Writer干了。 ValuesIterator用于从RawKeyValueIterator(Key,Value都是DataInputBuffer,ValuesIterator要求该输入已经排序)中获取符合RawComparator<KEY> comparator的值的迭代器。它在Task中有一个简单子类,CombineValuesIterator。 Task.TaskReporter用于向JobTracker提交计数器报告和状态报告,它实现了计数器报告Reporter和状态报告StatusReporter。为了不影响主线程的工作,TaskReporter有一个独立的线程,该线程通过TaskUmbilicalProtocol接口,利用Hadoop的RPC机制,向JobTracker报告Task执行情况。 FileSystemStatisticUpdater用于记录对文件系统的对/写操作字节数,是个简单的工具类。
下一篇
Hadoop二次开发必懂:源码分析mapreduce.lib.partition/reduce/output(4)
上一篇
Hadoop二次开发必懂:源码分析MapTask辅助类(2)
关注公众号,获取大数据、人工智能20套、区块链资源5阶段等资源,随时更新,获取最新技术资源
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
没找到任何评论,期待你打破沉寂
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
yuwenge
版主
关注
518
主题
766
帖子
59
粉丝
TA的主题
入门机器学习必了解的十大算法
2018-9-12
你会让人工智能为你做决定吗?
2018-6-27
yarn配置cgroup隔离cpu资源
2018-6-25
通俗易懂:彻底明白什么是神经网络
2018-6-20
Spark Summits 2018大会介绍及如何下载相关视频资料【附2018年6月AI ppt下载】
2018-6-19
24小时热文
哈佛通识教育红皮书 (北大高等教育文库·大
代码精进之路:从码农到工匠
为什么面试难!一文帮我们看透本质,拿捏of
程序员薪资排名,AI位居榜首,平均年薪277
Django实战:Python Web典型模块与项目开发
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈