Hadoop User 모임 발표자료: hadoop job management
- Posted at 2007/05/09 10:15
- Filed under project/lucene_hadoop
What is hadoop? •
• Distributed File System
– storage cluster using direct attached disk
– Global file namespace
– Failover: 3replication/file
– Split 64MB block
• Job Management System
– Map&Reduce programming model 지원
– Task reassignment -> failover
– Job progress & status monitoring
– Not support job queue function
Parallel Computing

MPI Parallel program

Job Management System
• 클러스터 내의 Job을 관리하는 S/W
• 대부분 Queue 기반의 Job 관리
– J.M.S 자체 병렬컴퓨팅은 지원하지 않음
– MPI 병렬컴퓨팅 프로그램 모델과 병행하여 사용

Job Management System
• NQS (Network Queueing System)
– NASA에서 배치 작업을 위한 도구로서 개발
– 작업에 대한 CPU time, 데이터, 스택, resident set, 파일 크기 등에 제한 가능한 다중 배치 큐 정의
• PBS (Portable Batch System)
- NASA에서 고성능 컴퓨팅을 위한 프로젝트로 개발.
- 배치 큐잉을 위한 Posix 1003.2d 표준 호환.
- 작업의 실행, 멈춤, 재실행, 감시, 삭제에 관한 명령어, 시그널을 통하여 선택, 재실행, 변경이 가능.
- 부하 균등을 위해 각 자원감시 데몬과 연결 가능
• LSF (Load Sharing Facility)
- 이기종 장비 지원, MultiCluster 지원
- 로드의 공유 및 배치 큐잉 컴포넌트로 구성된 workload 관리도구로 구성
- NFS, AFS 및 DCE/DFS를 지원하며 file-stage in/out도 지원
- 배치처리와 대화식, 병렬 작업을 지원
• Condor
- 위스콘신 대학에서 배치 작업을 위한 워크스테이션들에서 유휴 상태에 있는 CPU 시간을 이용하기 위해 개발.
- 자동으로 유휴한 컴퓨터의 자원을 할당하고 위치시키며, 프로세스의 체크포인트와 이동을 제공.
- 로컬 네트워크에서 참여하고 있는 워크스테이션의 모든 행동을 모니터링 할 수 있음.
• DQS (Distributed Queueing System)
- Florida 주립대학의 SCRI에서 개발된 UNIX 기반의 큐잉 시스템.
- 전체 시스템 자원들을 각각의 사용자들이 공평하게 접근할 수 있도록 하고 가장 최적의 방법으로 자원들을 이용할 목적으로 개발.
- CPU time, Wall-clock time, 데이터, 스택 등의 하드 및 소프트 제한을 줄 수 있는 큐 정의.
- 현재 DQS의 확장된 버전은 병렬 작업의 모든 프로세스들에 대해 추적할 수 있으며 병렬 make 유틸리티
Parallel computing in hadoop(Single instruction, Multiple data)

Job Scheduling

관련 Class

Job split to task
- DFS상에 저장된 파일인 경우
- Default, TextInputFormat에 의해 구현되어 있음
• 필요에 따라 개발자가 재정의 가능
- DFS를 입력을 사용하지 않는 경우
- InputFormat interface를 implement
• getSplit() 메소드 구현
class DeployInputFormat implements InputFormat {
public InputSplit[] getSplits(JobConf job, int numSplits) throws IOException {
InputSplit[] result = new InputSplit[numSplits];
Path outDir = job.getOutputPath();
for (int i = 0; i < result.length; ++i) {
result[i] = new FileSplit(new Path(outDir, "part-" + i), 0, 1, job);
}
return result;
}
static class DeployRecordReader implements RecordReader {
boolean end = false;
public boolean next(Writable key, Writable value) {
if (!end) {
end = true;
return true;
} else {
return false;
}
}
}
public RecordReader getRecordReader(InputSplit split, JobConf job, Reporter reporter)
throws IOException {
return new DeployRecordReader();
}
}
Job scheduling 관련 파라미터
-주기가 길 경우 TaskTracker의 CPU가 낭비될 수 있음
• Task의 평균 실행 속도가 10초인데 Heartbeat interval이 20초인 경우 Task를 마친 후 10초간 아무런 작업 하지 않음
- 주기가 짧은 경우 JobTracker에 많은 부하가 발생할 수 있음
• Max task count per node
- TaskTracker의 장비 사양에 따라 설정
• 예: CPU 4개인 경우 4로 설정
- 전용 클러스터로 사용할 경우와 공용 클러스터로 사용할 경우에 대한 고려
• Timeout 파라미터
- 다양한 timeout 파라미터 존재
• 특정 Task를 다른 노드에 restart 시키기 위한 값
• TaskTracker, DataNode를 invalidate 시키기 위한 값
Posted by 김형준
- Response
- No Trackback , No Comment
Trackback URL : http://www.jaso.co.kr/trackback/163






