제 3 장 맵리 듀스 프레임 워크 원칙
3.1 InputFormat 데이터 입력
MapTask 섹션 3.1.1 및 병렬 의사 결정 메커니즘
- 문제는 인도
병렬 처리함으로써 작업의 전체의 처리 속도에 영향을 미치는지도 MapTask 태스크 처리 동시성의 위상을 결정했다.
생각 : 데이터 1G는, 동시 처리 클러스터의 능력을 향상시킬 수, 8 MapTask를 시작합니다. 또한 팔 MapTask 시작 데이터의 1K 그래서, 그것은 클러스터 성능을 향상시킬 것인가? 이를인지 가능한 MapTask 병렬 작업? 어떤 요인이 병렬 MapTask의 정도에 영향을? - MapTask 병렬 메커니즘 결정
블록 : 블록은 실제 하나에 HDFS 데이터입니다.
데이터 조각 : 입력 데이터 조각은 논리적으로 디스크에 저장되는 조각으로 절단 파편 아닌 될. - MapTask 병렬 의사 결정 메커니즘을
3.1.2 작업 제출 과정의 소스 코드와 소스 코드는 슬라이스 상세
- 작업 제출 절차 자세한 소스
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 (일))
3.1.3 FileInputFormat 슬라이싱기구
3.1.4 CombineTextInputFormat 슬라이싱기구
- 에 상관없이 파일에 파일 작업을 계획하지 기본 프레임 TextInputFormat 슬라이스 메커니즘 조각은 얼마나 작은, 작은 많은 수의 파일이있는 경우 그래서, 그것은 효율성을 처리하는 것은 매우 낮고, MapTask을 많이 생성하는 MapTask를 제공 한 조각이 될 것입니다 .
- 시나리오 :
장면 파일 CombineTextInputFormat가 너무 작은, 논리적으로 작은 파일의 복수가 MapTask에 처리 될 수 있도록 조각 작은 파일의 복수 계획 할 수 있습니다. - 최대 가상 저장 부를 제공
CombineTextInputFormat.setMaxInputSplitSize (직장, 4194304)을 // 4m
주 : 가상 메모리는 바람직하게는 작은 파일의 실제 상황에 따라 특정 크기의 최대 설정 값을 슬라이스하도록 배치된다. - 마이크로톰
슬라이싱 처리 및 가상 저장 절차 두 부분 다음있어서 슬라이싱 프로세스를 발생시킨다.
(1) 가상 저장 절차 :
- 논리적 블록을 분할하는 최대 값 세트보다 모든 입력 디렉토리 파일 크기, 순차적 setMaxInputSplitSize 비교 값 아니더라도 더. 입력 파일이 회,이어서 최대 값으로 잘라보다 최대 이상의 세트 큰이면, 나머지 데이터 사이즈의 최대 값이 아닌 이상 2 배 이하의 최대 값을 초과 할 때, 그 파일은 두 가상 스토리지 블록 (방지로 나누어 작은 조각)가 나타납니다.
- 예컨대 setMaxInputSplitSize가 4M, 입력 파일 크기 8.02M이며, 제 4M 논리적으로 분할된다. 4M 논리적 분할에 따른 경우의 나머지 크기가 4.02M, 0.02M 작은 가상 스토리지 파일 나타난다 4.02M로되도록 나머지 파일 (2.01M 및 2.01M) 두 파일.
(2) 슬라이싱 공정 : - 파일 크기가 가상 스토리지 setMaxInputSplitSize 값보다 큰지 여부를 결정하는 단계 이상의 단일 슬라이스를 형성 같다.
- 그 다음 가상 메모리 파일과 결합 할 수 없습니다 경우, 함께 조각을 형성한다.
- 시험 예는 : 1.7M, 5.1M, 6.8M 340 만 및 네 개의 작은 파일이있다 파일 6 4 작은 파일 크기, 크기 가상 스토리지 블록 형성된 후에는 :
1.7M (2.55M, 2.55 M) 및 340 만 (340 만, 340 만)이
결국 세 개의 섹션을 형성하는, 크기는 :
(1.7 + 2.55) M (2.55 + 3.4) M (3.4 + 3.4) M