최근 회사에서 빅데이터, 머신러닝, 딥러닝 등 데이터에 대한 수 많은 프로젝트가 진행됨에 따라
차근차근 알아보고자 한다.
그 중, 빅데이터 처리를 위한 방법 중 하둡에 대한 간단한 소개를 한 후, 스파크로 넘어가고자 한다.
아파치 하둡이란?
- 빅데이터를 저장, 처리, 분석할 수 있는 소프트웨어 프레임워크
- 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크(위키백과)
- 하둡에서 꼭 알아야 할 것: HDFS(Hadoop Distributed File System), 맵리듀스(실제 맵리듀스가 핵심)로 구성
아파치 하둡 특성
1) Distributed: 수십만대의 컴퓨터에 자료 분산 저장 및 처리
2) Scalability: 용량이 증대되는대로 컴퓨터 추가
3) Fault-tolerant: 하나 이상의 컴퓨터가 고장나는 경우에도 시스템이 정상 동작
Node가 Fail난 경우, 마스터 노드는 Fail을 감지하고 작업을 다른 Node에 할당함으로 해결
4) Open Source: 공개 소프트웨어
아파치 하둡 아키텍쳐
(사진 출처: http://blog.raremile.com/hadoop-demystified/)
- 하둡은 Master Node와 Slave Node로 구분된다. 위의 그림에서는 Master Node와 Slave Node로 표현이 되어있지만 사실 하둡은 Name Node와 Data Node라고 표현하는 것이 더 맞는 표현인 것 같다. (스파크에서는 Master/Slave로 표현)
- HDFS(Hadoop Distribution File System): 분산 데이터를 처리하기 위해 데이터가 저장되는 파일 시스템
수십 테라/페타 바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 그 데이터를 빠르게 처리할 수 있도록 해주는 파일 시스템이라고 보면 된다. HDFS는 블록 구조의 파일 시스템인데 초기에는 크기가 64MB였는데 하둡 2.0부터 128MB로 증가 되었다.
이 HDFS의 구성 컴포넌트는 아래 Name/Data Node로 나뉘게 된다.
1) Name Node(Master Node): 메타 데이터 관리, Data Node 모니터링, 장애노드의 관리, 클라이언트의 권한 확인
사용자가 파일을 HDFS로 업로드한다고 가정해보자. 이 때, Name Node는 파일을 가지고 있는 것이 아니라 각 Data Node에 분산 저장 되는 파일들의 메타 데이터를 가지고 있다. 쉽게 얘기하자면, 어떤 파일이 어떤 Data Node에 있는지에 대한 정보를 가지고 있다. 또한, Data Node를 모니터링 하는데, 3초마다 Heart Beat를 전송하게 되고, 이에 응답하지 않는 Data Node를 장애 노드로 판단한다.
Name Node의 장애가 발생 시, 전체에 영향을 줄 수 있다. 이에 대비하여 보조 네임 노드가 존재한다.
(Name Node의 백업이 아닌, 메타데이터 파일 시스템 이미지 갱신하는 역할 수행)
2) Data Node(Slave Node): 실제 task를 수행하는 노드.
아파치 하둡 아키텍쳐(1.0과 2.0 비교)
(http://www.oss.kr/oss_news/545626 발췌)
- YARN은 자원 관리와 스케쥴링이라는 두 가지 태스크를 별개의 개념으로 분리하는 기술
- YARN은 중앙 자언 관리자와 어플리케이션 마스터를 보유. 각 어플리케이션을 별개로 구성하기 위해 만들어짐
-> 이는 배치, Interactive, In memory, Streaming, Online, Graph, 기타 유형의 App을 동시에 실행시키도록 돕는 기술
- 하둡 1.0에서는 TaskTracker 수천 개와, 맵리듀스 태스크를 처리해야 하는 JobTracker가 하나 있음
-> 확장성과 관련된 선택권을 줄이며, 클러스터가 하나의 app만 실행
- 하둡 2.0에서는 하나의 Resource manager와 여러 개의 Application Master가 존재하여 별개의 Application Master가 각 Application을 관리하기 때문에 클러스터에서 병목 현상이 발생하지 않음
- 동시에 YARN은 Global Resource manager로 자원 활용도를 높이고, 이를 추가하여 클러스터 속도를 높일 수 있음. YARN에서는 공동 자원 풀을 공유하는 여러 다른 Application을 실행시킬 수도 있음. 맵리듀스 슬롯이 정해져 있지 않기 때문에, 클러스터 내부 자원을 더 효율적으로 활용하는데 도움을 줌
- Apache Giraph, Spark, Apache HAMA, Storm 등 새 아키텍쳐 들에 맞게 조정 되어 있음
아파치 하둡 프레임워크 (Hadoop Ecosystem 2.0)
(사진 출처: http://blrunner.com/99, 밑의 내용 포함)
'기타 > 분산 컴퓨팅' 카테고리의 다른 글
Spark RDD 개념 및 예제 (0) | 2017.04.07 |
---|---|
Apache Spark 설치 (0) | 2017.04.07 |
Apache Spark란 무엇인가? (0) | 2017.04.07 |
아파치 하둡 맵리듀스 (0) | 2017.04.01 |
아파치 하둡 HDFS 사용법(Cloudera 사용) (0) | 2017.03.31 |