매일 매일 미라클 코딩

Hadoop 기본 개념 본문

데이터베이스/Hadoop

Hadoop 기본 개념

뚜벅-뚜벅 2021. 9. 13. 23:49


✔빅데이터의 정의

과거의 데이터는 정제된 데이터. 포맷을 가지고 RDBMS 스키마가 적용되는데이터였던 반면, 빅데이터는 데이터 관계를 직관적으로 알 수없는 비정제 데이터이다.

 

IDC의 정의에 따르면 빅데이터란?

규모가 크고 구조가 다양하고, 매우 빠르게 획득하고 분석할 수 있도록 새로운 기술로 관리해야하는 데이터이다

 

빅데이터 4가지 구성요소 (3V)

규모(Volume), 다양성(Variety), 복잡성(Complexity), 속도(Velocity)의 증가

-> 복잡성은 다양성에 기인하므로 3V 로 칭한다.

 

✔하둡(Hadoop)

저비용으로 가능한 확장성, 고가용성, 결함허용성이 특징

 

소셜, 기업, 금융데이터를 이전엔 각 도메인 전문가가 따로 분석했으나 이제 하나의 플랫폼에 저장. 따라서 클라우드 컴퓨팅 인프라와 데이터 통합이 중요해졌다.

 

이때 필요한 빅데이터 플랫폼이 하둡. 데이터 수집 및 통합, 관리 역할을 하며, 클라우드 컴퓨팅 인프라까지 지원한다. 다른 부수적인 기능은 하둡 에코시스템이 지원한다.

 

*빅데이터 플랫폼 기능
- 실시간 분석 : 일정구간만 따로 저장해서 분석, 캐시도 저장 -> 이제 Spark 가 대신 함
- 자원관리 : 주키퍼
모두 필요한건 아니고, 원하는대로 구성하여 사용할 수 있다. (빅데이터 아키텍트가 하는 일) 


✔맵리듀스 MapReduce
Map = 데이터 나눠서 각자 분석하는 일
Reducer = 각각 분석한 걸 취합하는 일

 
- 분산컴퓨팅에 적합한 함수형 프로그래밍: API만쓰면 알아서 분산처리가 된다.
- 배치형 데이터처리 (순차적처리)
- 자동화된 병렬처리 및 분산처리
- 내고장성, 결함허용
- 상태 및 모니터링 툴
- 프로그래머를 위한 추상클래스

 

Map task (데이터 노드에서 실행)

- Record reader : 비정형 데이터에서 내가 원하는 레코드를 추출할 수 있어야 함. 읽어들일 레코드 범위만큼 잘라서 읽어들이는 것

- Mapper: 읽어들인 레코드를 키와 밸류 형태로 정렬

- Combiner: 선택적 로컬 Reducer (먼저끝난 node가 다른 노드의 레코드 먼저 취합해주는 것. 실행 안 되는 경우 있음)

 

Reduce task

- Shuffle & Sort : 출력 파일을 Key에 따라 정렬

- Reducer

- Output Format : Record Writer로 파일 출력-> HDFS에 저장

 

Map Task + Reduce Task = Job
Job은 전체 프로그램이며 이를 관리하는 것이 Job Tracker.

각 노드의 Task Tracker에 일 시키는 역할을 하며 작업이 끝나면 Reducer 실행하라고 명령.

맵리듀서
분석할 데이터의 크기가 분석프로그램 크기보다 크기 때문에, 분석할 데이터를 끌고 오는게 아니라 분석할 프로그램을 각 데이터에 던지는 개념

 

HDFS  : 하둡이 실행되는 파일을 관리해주는 시스템

네임노드와 데이터노드로 구성되어있다.

 

• 네임노드

- 분산파일시스템에서 (HDFS)데이터가 어디저장되는지 기록하는 게 '네임노드'

=> 마스터 블록 역할을 한다. 데이터 노드를 관리.

클라이언트가 데이터 읽으려고 하면 네임노드가 어디에 어떻게 저장 되어있는지(네임스페이스) 알려주고 클라이언트가 읽을 수 있게 한다. 망가질 경우를 대비해 secondary name node 백업용으로 저장한다.

데이터 노드

- 하나의 파일은 여러개의 블록들로 분산저장. 모든 블록은 마지막을 제외하고 동일사이즈이다.

-  데이터노드는 주기적으로 네임노드에 살아있다는 신호인 Hearbeat를 보내며, 데이터 저장 정보인 블록 리스트도 보낸다.

- 데이터노드 내의 TaskTracker는 자신이 분석할 데이터를 가져다가 중간 결과값 출력. 이렇게 출력된 결과값을 ReducerKey 를 가지고 취합한다