실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

WordCount 의사코드

 



 



 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

WordCount 의사코드

 



 



 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

WordCount 의사코드

 



 



 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

WordCount 의사코드

 



 



 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

Scheduler

 

기본적으로 MapReduce 프레임웍은 FIFO 스케줄링을 지원.
Job 제출시 job의 우선순위를 지정해줄 수 있지만 실행중인 job의 pre-emption은 불가
Job 하나가 전체 클러스터의 리소스를 독점가능.
Capacity 스케줄러
야후에서 만든 스케줄러. 여러 큐를 만들어 큐별로 쿼터 제공.
Fair 스케줄러
페이스북에서 만든 스케줄러. 사용자별로 쿼터 제공.
스케줄러는 플러그인 형태라 커스텀 스케줄러의 개발이 용이


 



 

 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

Job & Tasks

 

 

보통 사용자가 실행하고자 하는 MapReduce 프로그램을 칭함. Job Tracker가 관리.
보통 Job은 하나이상의 mapper와 하나이상의 reducer로 구성되며 이 mapper들과 reducer들을 task라고 부름.
각각의 task는 Task Tracker에 의해 관리되며 각 task는 별개의 JVM에서 실행.
실패한 task는 Job Tracker에 의해 다른 노드에서 재시도됨.
Speculative Execution: JobTracker는 다른 태스크들이 실행이 현저하게 느린 태스크들을 proactively하게 다른 TaskTracker들에서 중복실행하게 할 수 있음. mapred-site.xml의 mapred.map.tasks.speculative.execution 파라미터로 조절.
하나 이상의 Job들이 엮어서 실제로 원하는 일을 수행하게 되는 경우가 대부분 (Hadoop Job Chaining). 이러한 웍플로우 관리가 굉장히 중요 (Cascading, Oozie 등등).

 



 

 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

Job Tracker (2)

 

 

Task Tracker는 주기적으로 Job Tracker에 상태보고 (heartbeat)를 함
“나 살아있소”.
실행중인 태스크의 상태 (카운터 정보 포함)
mapper의 경우 이는 입력 레코드들의 처리 퍼센트를 알림.
reducer의 경우 조금 더 복잡
셔플링이 끝나면 33%
소팅이 끝나면 66%
그 이후부터는 reducer의 입력 레코드 처리 퍼센트 * 0.34 + 66%.
놀고 있는 태스크 슬롯의 유무.
만일 heartbeat이 지정된 시간동안 안 오면 해당 서버는 죽은 것으로 간주되고 그 서버에서 돌던 태스크들은 다른 Task Tracker에서 재수행됨.
 



 

 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

Job Tracker (1)

 

 

2MapReduce 프레임웍의 마스터로 한 클러스터에 하나만 존재.
프레임웍에서 실행되는 모든 Job들을 실행을 관리.
사용자로부터 하둡 잡 실행 요청(하둡코드가 들어간 jar 파일, 입력데이터 위치, 출력데이터 위치 등등)을 받아 클러스터내의 Task Tracker들로 나눠서 Job을 실행.
정확히 이야기하면 사용자의 하둡 잡 실행 요청은 Job 스케줄러로 들어가고 Job Tracker는 Scheduler로부터 다음 실행할 Job을 얻는다.
태스크들이 종료될때까지 관리하며 만일 특정 태스크가 실패하면 다른 Task Tracker에 그 태스크를 다시 실행.
T보통 Job Tracker는 HDFS의 마스터의 NameNode와 같은 서버에 위치
Task Tracker 역시 HDFS의 DataNode들과 같이 공존.
하둡 셀커맨드나 웹 인터페이스를 Job/Tasks들의 상태를 볼 수 있음.
NameNode와 마찬가지로 A Single Point of Failure. 무슨 이유로건 Job Tracker가 재시작되면 모든 Job들도 재시작되어야 함. NameNode와 마찬가지로 이 문제는 Hadoop 0.23이나 Hadoop 2.0에서 개선됨.



 

 

 

  

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

+ Recent posts