zoukankan      html  css  js  c++  java
  • MapReduce之提交job源码分析 FileInputFormat源码解析

    MapReduce之提交job源码分析

    job 提交流程源码详解

    //runner 类中提交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))

    (1)找到你数据存储的目录。
    (2)开始遍历处理(规划切片)目录下的每一个文件
    (3)遍历第一个文件 ss.txt(300M)
    		a)获取文件大小 fs.sizeOf(ss.txt);
    		b)计算切片大小
    		computeSliteSize(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128M
    		c)默认情况下,切片大小=blocksize
    		d)开始切,形成第 1 个切片:ss.txt—0:128M 第 2 个切片 ss.txt—128:256M 第 3个切片 ss.txt—256M:300M
    		(每次切片时,都要判断切完剩下的部分是否大于块的 1.1 倍,不大于 1.1 倍就划分一块切片)
    		e)将切片信息写到一个切片规划文件中
    		f)整个切片的核心过程在 getSplit()方法中完成。
    		g)数据切片只是在逻辑上对输入数据进行分片,并不会再磁盘上将其切分成分片进行存储。
    		InputSplit 只记录了分片的元数据信息,比如起始位置、长度以及所在的节点列表等。
    		h)注意:block 是 HDFS 物理上存储的数据,切片是对数据逻辑上的划分。
    (4)提交切片规划文件到 yarn 上,yarn 上的 MrAppMaster 就可以根据切片规划文件计
    算开启 maptask 个数。
    

    本博客仅为博主学习总结,感谢各大网络平台的资料。蟹蟹!!

  • 相关阅读:
    UIKit, AppKit, 以及其他API在多线程当中的使用注意事项
    BOZJ-2590 优惠券
    P3620 [APIO/CTSC 2007] 数据备份
    矩阵乘法与快速幂
    CodeForces
    AtCoder
    CodeForces
    考试成绩和学号的(结构体)排序
    CodeForces
    Atcoder Beginner Contest 092 —— C题
  • 原文地址:https://www.cnblogs.com/shaofeer/p/11154312.html
Copyright © 2011-2022 走看看