Hadoop基本流程与应用开发

在分布式环境中客户端创建任务并提交。
InputFormat做Map前的预处理,主要负责以下工作:

    验证输入的格式是否符合JobConfig的输入定义,这个在实现Map和构建Conf的时候就会知道,不定义可以是Writable的任意子类。
    将input的文件切分为逻辑上的输入InputSplit,其实这就是在上面提到的在分布式文件系统中blocksize是有大小限制的,因此大文件会被划分为多个block。
    通过RecordReader来再次处理inputsplit为一组records,输出给Map。(inputsplit只是逻辑切分的第一步,但是如何根据文件中的信息来切分还需要  RecordReader来实现,例如最简单的默认方式就是回车换行的切分)
RecordReader处理后的结果作为Map的输入,Map执行定义的Map逻辑,输出处理后的key和value对应到临时中间文件。
    Combiner可选择配置,主要作用是在每一个Map执行完分析以后,在本地优先作Reduce的工作,减少在Reduce过程中的数据传输量。
    Partitioner可选择配置,主要作用是在多个Reduce的情况下,指定Map的结果由某一个Reduce处理,每一个Reduce都会有单独的输出文件。(后面的代码实例中有介绍使用场景)
    Reduce执行具体的业务逻辑,并且将处理结果输出给OutputFormat。
    OutputFormat的职责是,验证输出目录是否已经存在,同时验证输出结果类型是否如  Config中配置,最后输出Reduce汇总后的结果。

你可能感兴趣的:(hadoop,工作)