Gentle Breeze

[Hadoop] MapReduce, YARN 본문

⑨ 직무역량강화/Bigdata

[Hadoop] MapReduce, YARN

재령 2015. 1. 19. 16:23

- MapReduce

 

 

▲ Click to Enlarge ▲

 

① 사용자는 Job에 대한 실행 정보를 설정한 후 waitForCompletion 메소드를 호출해 Job을 실행

 

② Job 인터페이스에서는 새로운 Job Client가 생성되고 이 객체가 Job Tracker에 접속해 Job을 실행해 줄 것을 요청. Job Tracker는 Job ID를 Return.
   * Job Client는 사용자가 설정한 출력 경로 확인을 실시하며 이미 존재할 경우 MapReduce 작업이 종료됨.

 

③ Job Client는 Job의 입력 데이터에 대한 입력 Split을 계산. Split이 계산되면 입력 Split 정보, 설정파일, MapReduce JAR File을 HDFS에 저장하고 Job Tracker에게 실행 준비를 통보(Message). 
   * 입력 Split 계산 불가 시 MapReduce 작업이 종료됨

 

④ Job Client의 Message를 받은 Job Tracker가 Job을 Queue에 등록하고 Job Scheduler가 Queue에서 Job을 가져와 초기화. 초기화 후 Split 정보를 바탕으로 입력 Split의 수 만큼 Map Task를 생성하고 ID 부여. Task Tracker는 주기적으로 Job Tracker의 heartbeat 메소드를 call해서 자신의 상태정보를 Job Tracker에게 알려줌

 

⑤ Task Tracker가 Job Tracker가 할당해 준 Map Task를 실행. Map Task는 map 메소드에 정의된 로직을 실행하고 출력 데이터를 메모리 버퍼에 저장. 이 때 Partitioner는 해당 출력 데이터가 어떤 Reduce Task에 전달되어야 할 지를 결정하고 그에 맞는 Partition을 지정. Partition은 메모리에 있는 데이터를 key에 따라 정렬한 후 로컬디스크에 저장.

 

⑥ Map Task 출력이 완료되면 Task Tracker에게 Mapper 작업이 완료되었음을 알리고 이 Message를 받은 Task Tracker가 Job Tracker에게 Map Task의 상태와 출력 데이터 경로를 알려줌. Reduce Task는 주기적으로 Job Tracker에게 Map Task의 출력 데이터 경로를 물어보고 출력 데이터 경로가 정상적으로 조회되면 출력 데이터를 로컬 노드로 복사. 이 때 파일이 크면 디스크로, 작으면 메모리로 복사함

 

⑦ Reduce Task는 모든 Map Task의 출력 데이터를 복사한 후 Map Task의 출력 데이터를 Merge. Merge 완료 후 reduce 메소드를 call 해서 분석 로직을 실행

 

⑧ Reduce Task의 출력 데이터가 HDFS에 part-nnnnn 형태로 저장됨. (nnnnn = 파티션 ID, 00000 부터 1씩 증가)

 

- YARN (Yet Another Resource Negotiator)

 

 

▲ Click to Enlarge ▲

 

 

- Hadoop 1.0 → Hadoop 2.0

 

 

 

- 출처 : [BigData] 클라우드 컴퓨팅을 위한 하둡 (멀티캠퍼스 교재)

'⑨ 직무역량강화 > Bigdata' 카테고리의 다른 글

[Hadoop] HDFS Checkpoint  (0) 2015.01.19
[Hadoop] Apache Hadoop Performance Tuning  (0) 2015.01.14
[Hadoop] HDFS Default Block Size  (0) 2015.01.12
Comments