大数据学习之Hadoop——09MapReduce框架原理

一. InputFormat 数据输入

在这里插入图片描述

1. 数据切片与MapTask并行度决定机制

1. 数据切片

数据块:Block是HDFS物理上把数据分成一块一块。
数据切片:数据切片只是在逻辑上对输入进行分片。

2. MapTask并行度决定机制
  1. 一个Job的Map阶段并行度由客户端在提交Job时的切片数决定
  2. 每一个Split切片分配一个MapTask并行实例处理
  3. 默认情况下,切片大小 = BlockSize = 128M
    4)切片时不考虑数据集整体,而是逐个针对每一个文件单独切片

2. Job提交流程源码和切片源码详解

1. Job提交流程源码详解
  1. 源码
    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());
    
    
2. FileInputFormat切片源码解析(input.getSplits(job))
  1. 示意图
    在这里插入图片描述
  2. 程序先找到你数据存储的目录。
    (2)开始遍历处理(规划切片)目录下的每一个文件
    (3)历第一个文件s.txt a)获取文件大小6.sizeOff5s.txt)b)计切片大小
    computeS plitsize(M ath rmaxd mind ize,Matlhrmin(rmaxs ize,blocksize)))=blocksize=128M c)默认情况下,切片大小=blocksize d)开始切,形成第1个切片:ss.txt-0:128M第2个切片5s.txt-128:256M第3个切片ss.txt-256M:300M
    (每次切片时,都要判断切完剩下的部分是否大于块的11倍,不大于11倍就划分一块切片)e)将切片信息写到一个切片规划文件中
    f)整个切片的核心过程在getSpli()方法中完成
    g)Imputpt只记录了切片的元数据信息,比如起始位置、长度以及所在的节点列等。
    (4)提交切片规划文件到YARN上,YARN上的MrAppMaster就可以根据切片规划文件计开后MapTask个数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值