매일 매일 미라클 코딩
Hadoop 기본 개념 본문
✔빅데이터의 정의
• 과거의 데이터는 정제된 데이터. 포맷을 가지고 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는 자신이 분석할 데이터를 가져다가 중간 결과값 출력. 이렇게 출력된 결과값을 Reducer가 Key 를 가지고 취합한다
'데이터베이스 > Hadoop' 카테고리의 다른 글
Hadoop 기본개념 수업자료 (0) | 2021.09.13 |
---|---|
Hadoop 조작을 위한 리눅스 기초(3) (0) | 2021.09.13 |
Hadoop 조작을 위한 리눅스 기초(2) (0) | 2021.09.13 |
Hadoop 조작을 위한 리눅스 기초 (0) | 2021.09.07 |