<하둡 시스템의 구성>
I. 하둡 분산 파일 시스템 (HDFS)
1. 일반적인 분산 파일 시스템의 설계
- HDFS도 '분산 파일 시스템'이므로, 일반적인 분산 파일 시스템의 설계를 따른다.
일반적인 분산 파일 시스템의 설계는 아래와 같음.
- (1) 마스터 노드 : 관리자 역할 (1대)
- (2) 슬레이브 노드 : 실제 데이터를 분산 저장. (수십 ~ 수천대)
분산 상태를 마스터 노드가 관리.
2. HDFS의 구조
1) 네임 노드 (마스터 노드)
- 슬레이브 노드의 동작과 메타 데이터를 실시간 관리
ㄴ 메타 데이터 : 데이터에 대한 데이터. ex) 파일 조각들이 어디에 들어있는지 등.
2) 데이터 노드 (슬레이브 노드)
- 하나의 데이터 블록을 여러 대의 데이터 노드가 복제하여 보관
ㄴ 상세설명) 마스터노드가, 하나의 커다란 파일을 그걸 백조각으로 나눠서 데이터 노드에 저장하기로 결정했다면,
한 조각을 하나의 슬레이브 노드에 저장하는 게 아니라, 3개의 슬레이브 노드에 복제해서 저장하도록 함.
데이터 노드는 이 조각만을 보관하는 것이 아니라, 다른 조각도 보관할 수 있도록 설계되어 있다.
ex) 데이터 노드 1번이 데이터 조각1번, 조각5번을 보관하고 / 데이터 노드 2번이 조각1번, 조각7번을 보관...
---> 데이터 노드 1번의 조각1번이 고장나도, 데이터 노드 2번에도 데이터 조각 1번이 저장되어 있으므로 괜찮다 :)
---> 신뢰성과 고장 감내성.
3. HDFS의 특징
- 큰 데이터를 한 번에 빠르게 가져올 수 있도록 설계되어 있음
: 한 블록의 크기가 크게 설정되어 있음.
- 데이터의 일괄 처리에 최적화
: 수집된 데이터를 수정할 필요가 없음.
II. 하둡 맵리듀스
1. 하둡 맵리듀스
- HDFS 상에서 동작하는 데이터 분석 프레임워크
- 데이터 중심 프로그래밍 모형
: 작업 분할, 스케줄링, 네트워크 구성 등의 플랫폼 차원 단순화
- 프로그래머는 맵과 리듀스 함수만을 작성
: 데이터노드에서 실행됨.
(데이터 전송 최소화 - 일괄처리)
2. 맵리듀스 프로그래밍 모형
1) 맵 함수 : 입력의 <키, 값>을 새로운 <키, 값>으로 변환
2) 리듀스 함수 : 시스템이 수집한 <키, (값1,값2, ...)>을 다시 <키, 값>으로 변환하여 HDFS에 저장
ㄴ 같은 키의 값을 모아서 저장.
- 중간 과정은 하둡 시스템이 해결해줌 --> 프로그래머는 맵 함수와 리듀스 함수만 작성하면 된다.
3. 맵리듀스 프로그래밍 예제 (11min)
ex) 여러 개의 문서에 등장하는 단어의 개수 세기
- 맵 : <단어1, 1>, <단어2, 1>, ...
ㄴ <빅데이터, 1>, <빅데이터, 1>, <빅데이터, 1>, <이해, 1>, <이해, 1>, <하하하, 1>
- 중간과정 : <빅데이터, (1,1,1)>, <이해, (1,1)>, <하하하, (1)>
- 리듀스 : <빅데이터, 3>, <이해, 2>, <하하하, 1>
----> 이 예제의 맵함수/리듀스함수의 동작을 의사코드화 시키면 아래 1), 2)와 같다.
1) 맵 함수의 의사 코드
map(key:document, value:text){
for word in tokenize(value)
emit(word,1)
}
2) 리듀스 함수의 의사 코드
reduce(key:word, value:list of 1s){
emit(key, sum(value))
}
3) 이 예제의 동작을 구조화한 그림...
4) 단어 세기 예제의 의의..
- 이 예시는 간단하지만, 전체 문서의 수가 10억 개이고 문서 하나당 100KB라면?
: 전체용량은 100TB...! (빅데이터)
---> 하나의 디스크에 저장 불가. (분산 파일 시스템 이용해야.)
: 100MB/s 컴퓨터 1대로 순차 처리할 경우 12일 소요 ㅠㅠ
---> 컴퓨터 1,000대로 처리하면 17분 소요! :) (분산처리)
4. 컴바인 함수 (19min)
- 노드 간 데이터 전송을 최소화하기 위해서 "중간 과정"을 제어하도록 해주는 함수.
- 맵 작업과 동일한 데이터 노드에서 실행된다.
III. 완전 분산모드와 의사 분산모드, 독자모드
1. 맵 리듀스 프로그램을 편리하게 개발하기 위한 설정
1) 완전 분산 모드 : 여러 대의 서버로 구성된 진짜 분산 시스템. 그런데 개인이 이걸 구성하는 것은 어렵다 ㅠ_ㅠ
2) 의사 분산 모드 : 한 대의 컴퓨터에서 완전 분산 모드를 흉내내는 것. --> HDFS 위에서 동작함.
3) 독자 모드 : 의사 분산 모드에서 로컬 파일 시스템을 사용하는 것.
<맵리듀스를 사용한 통계 계산>
I. RHadoop을 이용한 맵리듀스 통계 계산
1. R로 작성하는 맵리듀스 프로그래밍
- 큰 데이터를 HDFS에 저장 : rhdfs에서 R로 접근 가능 : to.dfs(), from.dfs()
- 맵과 리듀스 함수를 R로 작성 : rmr로 R에서 맵리듀스 프로그램을 실행.
2. 정규방정식 (23min)
ㄴ 이 방정식을 풀면 베타 햇(^β) 값을 구할 수 있다...
<빅데이터 기술의 정리>
1. 빅데이터 요소 기술 구성 및 분류
빅데이터 기술 | 해당 기술 |
수집 | ETL, 크롤링 엔진, 로그수집기, 센싱, RSS, 공개API |
공유 | 멀티 테넌트 데이터 공유, 협업 필터링 |
저장 | 병렬 DBMS, 하둡, NoSQL |
처리 | 실시간 처리, 분산 병렬처리, 인메모리 처리, 인데이터베이스 처리 |
분석 | 통계분석, 데이터 마이닝, 텍스트 마이닝, 예측분석, 평판분석, 소셜 네트워크 분석 |
시각화 | 시간 시각화, 분포 시각화, 관계 시각화, 비교 시각화, 공간 시각화 |
2. R과 빅데이터 기술의 결합
- 비분산 저장 및 처리 기술과 쉽게 결합 : 빅메모리, 빅애널리틱스
- 분산 저장 처리 및 처리 기술과도 쉽게 결합 : 하둡
- 부가가치는 빅데이터 분석에 있음 : R의 확장성을 활용
'Programming > Computer Science Fundamentals' 카테고리의 다른 글
[JSP] 4. JSP 동작 원리 (0) | 2021.09.17 |
---|---|
[JSP] 3. JSP 개요 (0) | 2021.09.17 |
[JSP] 2. 개발 환경 설정하기 (0) | 2021.09.17 |
[JSP] 1. 웹과 자바 (0) | 2021.09.17 |
[빅데이터의 이해] 5. 빅데이터 기술1 (0) | 2021.09.10 |
[빅데이터의 이해] 4. 빅데이터의 활용2 (0) | 2021.09.10 |
[빅데이터의 이해] 3. 빅데이터의 활용1 (0) | 2021.09.09 |
[빅데이터의 이해] 2. 빅데이터의 정의2 (0) | 2021.09.09 |