분산컴퓨팅(1)-하둡 개요
업데이트:
숭실대학교 박영택교수님의 “빅데이터분산컴퓨팅” 강의를 참고했습니다.
Hadoop 개요
빅데이터를 저장, 처리, 분석할 수 있는 소프트웨어 프레임워크
- Distributed
- Scalable
- Fault-Tolerant
- Open Source
분산 처리 시스템
- 하나의 작업에 여러 대의 machine을 사용
- MPI(Message Passing Interface)
- 문제점
- MPI의 복잡한 프로그래밍
- 데이터와 프로세스의 sync 유지
- Bandwidth의 한계
- Partial Failures
- 일부 컴퓨터가 고장나는 경우
- MPI의 복잡한 프로그래밍
Partial Failure
시스템은 반드시 partial failure에 대처가 요구됨
- 컴포넌트의 failure는 애플리케이션 성능 저하를 유발함
데이터 Recoverability
시스템의 컴포넌트가 fail하더라도 시스템을 통해 작업은 지속적으로 수행되어야 함
- Failure로 인해 어떠한 데이터의 손실도 발생하면 안됨
컴포넌트 Recovery
시스템의 컴포넌트가 fail되고 다시 recover된 경우, 시스템에 rejoin하는 것이 가능해야 함
- 전체 시스템의 재시작 없이 수행
Consistency
job이 수행되는 동안 컴포넌트의 failure는 결과에 영향을 주지 않아야 함
Scalability
데이터의 양이 증가하면, 각 작업의 성능이 감소함
- 시스템은 fail되지 않음
시스템의 resource를 증가시키면, 비례적으로 로드 capacity가 증가함
Core Hadoop Concepts
Easy to use
- 애플리케이션을 High-level 코드로 작성
- 개발자에 네트워크 프로그래밍, 의존성, low-level 인프라 구조에 대한 고려가 요구되지 않음
- 각 노드들은 가급적 최소한의 데이터를 주고 받음
- 개발자는 노드들 사이의 통신에 대한 코드 작성이 필요 없음
- ‘Shared Nothing’ architecture
- 데이터는 여러 노드에 미리 분산되어 저장
- 데이터가 저장된 위치에서 연산을 수행
- availability와 reliability를 향상 시키기 위해서 데이터는 여러개의 복제본을 두고 사용
- 데이터가 저장된 위치에서 연산을 수행
High-Level Overview
- 시스템이 데이터를 로드할 때 ‘block’으로 나누어짐
- 기본적으로 64Mb 또는 128Mb 크기를 사용
- Map tasks(MapReduce 시스템의 첫 번째 파트)는 single block 단위의 작업을 처리
- 마스터 프로그램은 분산되어 저장된 데이터의 block에 대한 Map task 작업을 각 노드에 할당
- 전체 데이터 셋 중 각 노드에 저장된 데이터를 이용해 병렬적으로 작업을 수행
Fault Tolerance
- 노드가 fail한 경우, master node는 failure를 감지하고 작업을 다른 node에 할당
- Task를 재시작하는 것은 다른 부분에 대한 작업을 수행중인 다른 노드와의 통신을 필요로 하지 않음
- Fail된 node를 재시작하는경우, 자동적으로 시스템에 연결되어 새로운 task를 할당함
- 특정 Node의 성능이 낮은 것으로 감지되면, master node는 같은 task를 다른 node에 할당
- Speculative Execution
#
댓글남기기