其他分享
首页 > 其他分享> > MapReduce框架原理

MapReduce框架原理

作者:互联网

InputFormat 数据输入

切片与 MapTask 并行度决定机制

Job提交流程源码

waitForCompletion()

submit();
    // 1 建立连接 
    connect();
    // 1)创建提交 Job 的代理
    new Cluster(getConfiguration());
    // (1)判断是本地运行环境还是 yarn 集群运行环境 
    initialize(jobTrackAddr, conf);

    // 2 提交 job submitter.submitJobInternal(Job.this, cluster)
    // 1)创建给集群提交数据的 Stag 路径
    Path jobStagingArea = JobSubmissionFiles.getStagingDir(cluster, conf);
    // 2)获取 jobid ,并创建 Job 路径
    JobID jobId = submitClient.getNewJobID();

    // 3)拷贝 jar 包到集群
    copyAndConfigureFiles(job, submitJobDir);
    rUploader.uploadFiles(job, jobSubmitDir);

    // 4)计算切片,生成切片规划文件
    writeSplits(job, submitJobDir);
    maps = writeNewSplits(job, jobSubmitDir); 
    input.getSplits(job);

    // 5)向 Stag 路径写 XML 配置文件 
    writeConf(conf, submitJobFile);
    conf.writeXml(out);

    // 6)提交 Job,返回提交状态
    status = submitClient.submitJob(jobId, submitJobDir.toString(),job.getCredentials());

FileInputFormat 切片源码解析(input.getSplits(job))

FileInputFormat 切片机制

MapReduce 工作流程

MapReduce详细工作流程(一)

MapReduce详细工作流程(二)


上面的流程是整个 MapReduce 最全工作流程,但是 Shuffle 过程只是从第 7 步开始到第 16 步结束,具体 Shuffle 过程详解,如下:

注意:

Shuffle 机制

Map 方法之后,Reduce 方法之前的数据处理过程称之为 Shuffle

Partition分区

WritableComparable 排序

排序分类

Combiner 合并

OutputFormat 数据输出

OutputFormat是MapReduce输出的基类,所有实现MapReduce输出都实现了 OutputFormat接口。下面是几种常见的OutputFormat实现类

MapReduce 内核源码解析

MapTask 工作机制

ReduceTask工作机制

数据清洗(ETL)

“ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取 (Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL 一词较常用在数据仓 库,但其对象并不限于数据仓库
在运行核心业务 MapReduce 程序之前,往往要先对数据进行清洗,清理掉不符合用户 要求的数据。清理的过程往往只需要运行 Mapper 程序,不需要运行 Reduce 程序。

Hadoop 数据压缩

压缩的好处和坏处

压缩原则

压缩位置

压缩方式对比

压缩格式 Hadoop 自带? 算法 文件扩展名 是否可切片 换成压缩格式后,原来的程序是否需要修改
DEFLATE 是,直接使用 DEFLATE .deflate 和文本处理一样,不需要修改
Gzip 是,直接使用 DEFLATE .gz 和文本处理一样,不需要 修改
bzip2 是,直接使用 bzip2 .bz2 和文本处理一样,不需要 修改
LZO 否,需要安装 LZO .lzo 需要建索引,还需要指定输入格式
Snappy 是,直接使用 Snappy .snappy 和文本处理一样,不需要 修改

压缩方式选择

压缩方式选择时重点考虑:压缩/解压缩速度、压缩率(压缩后存储大小)、压缩后是否可以支持切片

标签:文件,框架,ReduceTask,MapReduce,MapTask,原理,排序,数据
来源: https://www.cnblogs.com/ding-dang/p/14633738.html