新人分享——hadoop源码分析2

  • 上一个博客我们说到了创建一个新的job对象了,我们从那里接着开始
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里创建了这个类并且赋值了好多属性,这下面还有很多
  • 在这里插入图片描述
  • 不说了直接看run()方法吧
  • 在这里插入图片描述
  • 这里创建一个outputCommiter
  • 在这里插入图片描述
  • 一开始我的F盘是这样的
  • 在这里插入图片描述
  • 这里配置好了这个类,获取outputFormat
    -之后就是会去读取切片的元数据信息,然后获取reduce数量,之后会设置作业进度,然后获取可运行的maptask
    在这里插入图片描述
    运行maptask
    在这里插入图片描述
    在这里插入图片描述
    在这里跑任务,并且监控
    我们来看maptaskRunable的run方法
    在这里插入图片描述
    在这里插入图片描述
    这里设置了一堆属性在里面
    在这里插入图片描述
    这里map.run 开始跑任务了
    在这里插入图片描述
    做完了验证,开始初始化方法,初始化方法里面创建了两个对象,jobContext,taskContext,之后获取了任务的状态、是不是使用新的API、获取了输出路径(mapreduce.output.fileoutputformat.outputdir),使用outputFormat获取了一个commiter对象
    在这里插入图片描述
    然后启动task任务,然后获取了一个进程树对象,然后走完这个方法回到run方法中继续
    在这里插入图片描述
    在这里插入图片描述
    额这算是前期准备吧,创建context,创建mapper ,创建input format ,获取分片信息
    在这里插入图片描述
    在这里插入图片描述
    获取output 创建一个mapcontext ,最下 面的方法是用来获取我们自定义的mapper类的
    在这里插入图片描述
    这里调用了TrackIngRecordReader的初始化方法,这里在前面有一步确定了里面的属性real为linerecordReader,这里的初始化方法是调用的lineRecordReaderde的初始化方法,这个方法其实就是使用这个reader怎么读文件,lineRecordReader的读的方法是,一行行的去读,其实重写inputformat和reader方法主要工作还是在这个初始化方法的重写
    在这里插入图片描述
    接下来就是老熟人了
    在这里插入图片描述
    没错,就是你自定义的mapper,然后我们进入父类的run方法,
    在这里插入图片描述
    nextKeyValue,getCurrentKey,getCurrentValue会一直向下调用,最后调用的LineRecordReader的,map也一样,会调用的我们自己的map方法在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这个分区的规则也可以自己规定的,只要继承了partitioner,实现抽象方法就行了
在这里插入图片描述
然后默认的是这样的,直接就一个匿名内部类

在这里插入图片描述
collect,前面做了好多的校验
在这里插入图片描述
在这里插入图片描述
然后就一直重复中上面从while(context.nextKeyValue)开始到最后的代码,直到处理完一整个分片文件
这里应该是到map阶段结束了,下篇详解collect阶段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值