hadoop源代码学习分析—–mapper和reduce
首先初入hadoop家族,了解了一些hadoop运行作业的基本流程,
由于对编写八股文形式的hadoop程序缺少认知,所以翻了翻源代码。
首先有关继承mapper类的源代码主要由几个方法组成
其中map函数是最经常被重写的
源码中只是运用了封装好了的输出类型的Context进行了简单的输出。
听说技术高超的人会重写run方法:
setup函数会在执行map任务之前调用一次
cleanup会在map执行之后执行一次
Context类型封装了像
Configuration conf, TaskAttemptID taskid,
RecordReader<KEYIN,VALUEIN> reader,
RecordWriter<KEYOUT,VALUEOUT> writer,
OutputCommitter committer,
StatusReporter reporter,
InputSplit split
一些任务的配置信息和要输入输出的参数类型。。
reduce函数的源码,仅仅只是将values进行了遍历,然后进行了输出
大概方式与map相同。。
在main函数中,,我们需要做很多需要的配置。。
job.setMapperClass(Map.class);//设置实现了Map步的类
job.setReducerClass(Reduce.class);//设置实现了Reduce步的类
这些也没有什么好说的,拿到自己写的ampper和reduce类class对象,进行反射,得到类名,为日后创建对象运行,这里只是将名字配置到configuration类属性里。
值得提的是上传提交作业的代码是
主要源码
链接到集群,提交作业,等待结果。。。
欢迎关注我的公众号,领取免费干货学习资源