[HDFS] Hadoop 개념 및 구성요소
1. 개념
빅데이터의 에코시스템들은 대부분 하둡을 위해 존재하고 하둡에 의존해서 발전해 가고 있다 해도 과언이 아니다.
하둡은 크게 두 가지 기능이 있다.
1. 대용량 데이터를 분산 저장하는 기능
2. 분산 저장된 데이터를 가공/분석 처리하는 기능
2. 구성요소
-DataNode : 블록단위 (64MB or 128MB) 로 분할된 대용량 파일들이 DataNode의 디스크에 저장 및 관리, 하나의 서버이다.
-NameNode : DataNode에 저장된 파일들의 메타 정보를 메모리상에서 로드해서 관리, 어떤 데이터가 어떤 DataNode에 있는지 정보를 관리하고 저장한다.
-EditsLog : 파일들의 변경 이력(수정, 삭제 등) 정보가 저장되는 로그 파일
-Fslmage : NameNode의 메모리상에 올라와 있는 메타 정보를 스냅샷 이미지로 만들어 생성한 파일
=Ver 1.x
-SecondaryNameNode : NameNode의 Fslmage와 EditsLog 파일을 주기적으로 유지 관리해 주는 체크포인팅 노드
* EditsLog, Fslmage, SecondaryNameNode는 모두 NameNode를 도와주는 녀석들
-MapReduce v1 : DataNode에 분산 저장된 파일이 스필릿(Map)되어 다양한 연산(정렬, 그루핑, 집계 등)을 수행한 뒤 그 결과를 다시 병합(Reduce)하는 분산 프로그래밍 기법
-JobTracker : 맵리듀스의 잡을 실행하면서 태스크에 할당하고, 전체 잡에 대해 리소스 분배 및 스케줄링
-TaskTracker : JobTracker가 요청한 맵리듀스 프로그램이 실행되는 태스크이며, 이때 맵 태스크와 리듀스 태스크가 생성된다.
*JobTracker와 TaskTracker는 MapReduce를 도와준다.
=Ver 2.x
-Active/Stand-By NameNode : NameNode를 이중화해서 서비스 중인 Active NamaNode와 실패 처리를 대비한 Standby NameNode로 구성
-MapReduce v2 / YARN : 하둡 클러스터 내의 자원을 중앙 관리하고, 그 위에 다양한 애플리케이션을 실행 및 관리가 가능하도록 확장성과 호환성을 높인 하둡 2.x의 플랫폼, 하둡의 여러 DataNode들 위에 YARN 리소스 매니저를 설정하고 그 위에서 다양한 SW활용 가능하게 함.
-ResourceManager : 하둡 클러스터 내의 자원을 중앙 관리하면서, 작업 요청 시 스케줄링 정책에 따라 자원을 분배해서 실행시키고 모니터링
-NodeManager : 하둡 클러스터의 DataNode마다 실행되면서 Container를 실행시키고 라이프 사이클을 관리한다.
*ResourceManager NodeManager 는 ver.1의 JobTracker와 TaskTracker와 같다.
-Container : DataNode의 사용가능한 리소스(CPU, 메모리, 디스크 등)를 Container 단위로 할당해서 구성, Container위에서 다양한 분산 Job들이 실행된다.
-ApplicationMaster : 애플리케이션 실행되면 ApplicationMaster가 생성되며 ApplicationMaster는 NodeManager에게 애플리케이션이 실행되리 Container를 요청하고, 그 위에서 애플리케이션을 실행 및 관리한다. Container위에서 실행되는 분산 Job들은 ApplicationMaster에서 관리된다.
-JournalNode : 3개 이상의 노드로 구성되어 EditsLog를 각 노드에 복제 관리하며 Active NameNode는 EditsLog에 쓰기만을 수행하고 Stanby NameNode는 읽기만을 실행한다.