Hadoop : 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈 소스 프레임워크
1. Distributed File System
2. Distributed/Parallel Computing Framework
3. Open Source Project
Hadoop 에코 시스템
- Avro : 멀티 플랫폼간 데이터 호환 Serialization 도구
- Cassandra : DHT기반의 분산 데이터 관리 시스템. Hadoop은 사용하지 않고 로컬디스크 이용
- Chukwa : 분산 환경에서 로그를 수집하기 위한 시스템. 저장소로 HDFS를 이용하고 로그분석을 위해 Map/Reduce를 이용
- Hama : Map/Reduce 방식이 아닌 BSP(Bulk Synchronous Parallel) 방식의 컴퓨팅 플랫폼
- HBase : HDFS에 데이터 파일을 저장하는 분산 데이터 관리 시스템
- Hive : SQL과 비슷한 스크립트 질의를 이용해 HDFS에 저장된 데이터를 Map/Reduce로 분석하는 도구
- Impala : Hive 질의 문법을 지원하는 준 실시간 질의 실행 플랫폼
- Mahout : Hadoop 기반 Machine Library
- Oozie : Hadoop Workflow 엔진
- Pig : Hive와 유사하게 스트립트 질의를 이용해 HDFS에 저장된 데이터를 Map/Reduce로 분석하는 도구. 단순 스크립트가 아닌 반복문, 제어문, 변수 등 사용 가능
- Zookeeper : 분산 환경을 관리하는 분산 코디네이터
대용량 파일 시스템
DAS
NAS
SAN
GFS(Google File System) : 구글에서 개발된 파일 시스템으로 많은 구글의 서비스에서 이용
소프트웨어는 공개하지 않고 논문만 공개
http://www.cs.rochester.edu/meeting/sosp2003/papers/p125-ghmawat.pdf
다음과 같은 설계원칙
- 저가형 서버로 구성된 환경으로 서버의 고장이 번번히 발생할 수 있다고 가정
- 대부분의 파일은 대용량 파일로 가정
- 작업 부하는 연속적으로 많은 데이터를 읽는 연산이거나 임의의 영역에서 적은 데이터를 읽는 연산
- 파일에 대한 쓰기 연산은 주로 순차적으로 데이터를 추가하는 연산. 파일에 대한 수정은 드물게 발생
- 여러 클라이언트에서 동시에 동일한 파일에 데이터를 추가하는 환경에서 동기화 오버헤드를 최소화할 수 있는 방법 필요
- 낮은 응답 지연 시간보다 높은 처리율이 좀 더 중요
HDFS(Hadoop Distributed File System)
1. Very Large Scale Distributed File System
- 10K node, 100 million files, 10 PB(1PB = GB)
2. Use Commodity Hardware
- Self-Healing : failover, recovery, backup
- 서버 장애를 일반적인 상황이라고 가정
3. Optimized for batch processing
- 주로 저장 후 읽기 윚의 데이터 저장
- 1 File = n개의 64MB size block으로 split
- 각 block은 서로 다른 node에 분산저장
4. POSIX 표준 API는 지원하지 않음
- 자체 API 지원(Java, C)
HDFS 컴포넌트
1. NameNode
2. Secondary NameNode
3 .DataNode
4. Client Library
Map/Reduce
Map : 키와값으로 키와 값으로 구성된 목록을 만들어 준다.
Reduce : 키와 목록으로 다시 목록을 만들어 준다.
Hive
HiveQL