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

    입력 파일의 split block 단위로 split

- DFS상에 저장된 파일인 경우

- Default, TextInputFormat에 의해 구현되어 있음

  필요에 따라 개발자가 재정의 가능

- DFS를 입력을 사용하지 않는 경우

- InputFormat interface implement

 getSplit() 메소드 구현

 

 전체 노드에 프로그램을 Deploy 경우

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 관련 파라미터

   Heartbeat interval

-주기가 길 경우 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 시키기 위한 값

 

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/163

Leave a comment
« Previous : 1 : ... 258 : 259 : 260 : 261 : 262 : 263 : 264 : 265 : 266 : ... 388 : Next »