반응형
Day 1: MapReduce 개념
- 강의 내용:
- MapReduce의 정의
- MapReduce란 무엇인가?
- Map과 Reduce의 기본 개념
- MapReduce의 역사와 배경
- Google의 MapReduce 논문
- 분산 데이터 처리의 필요성
- MapReduce의 주요 기능
- 데이터 병렬 처리
- 대규모 데이터 집합의 처리
- MapReduce의 정의
- 실습:
- 간단한 MapReduce 개념 시뮬레이션
from collections import defaultdict
def map_function(document):
for word in document.split():
yield (word.lower(), 1)
def reduce_function(word, counts):
yield (word, sum(counts))
documents = ["Hello world", "Hello MapReduce", "MapReduce is awesome"]
# Map step
mapped = []
for doc in documents:
mapped.extend(map_function(doc))
# Shuffle and sort step
shuffled = defaultdict(list)
for key, value in mapped:
shuffled[key].append(value)
# Reduce step
reduced = []
for key, values in shuffled.items():
reduced.extend(reduce_function(key, values))
print(reduced)
Day 2: MapReduce 아키텍처
- 강의 내용:
- MapReduce 아키텍처 구성 요소
- 클라이언트 (Client)
- 마스터 (Master)
- 워커 (Worker)
- Map 단계와 Reduce 단계
- Map 단계: 입력 데이터를 키-값 쌍으로 변환
- Reduce 단계: 키-값 쌍을 집계하여 결과 생성
- MapReduce 작업 흐름
- 입력 분할 (Input Splitting)
- 맵핑 (Mapping)
- 셔플링 (Shuffling)
- 리듀싱 (Reducing)
- MapReduce 아키텍처 구성 요소
- 실습:
- MapReduce 작업 흐름 시뮬레이션
def map_function(document):
for word in document.split():
yield (word.lower(), 1)
def reduce_function(word, counts):
yield (word, sum(counts))
def map_reduce(documents):
# Map step
mapped = []
for doc in documents:
mapped.extend(map_function(doc))
# Shuffle and sort step
shuffled = defaultdict(list)
for key, value in mapped:
shuffled[key].append(value)
# Reduce step
reduced = []
for key, values in shuffled.items():
reduced.extend(reduce_function(key, values))
return reduced
documents = ["Hello world", "Hello MapReduce", "MapReduce is awesome"]
result = map_reduce(documents)
print(result)
Day 3: Map 단계 구현
- 강의 내용:
- Map 함수의 역할
- 입력 데이터를 분할하여 키-값 쌍 생성
- 데이터 필터링 및 변환
- Map 함수 설계
- 키-값 쌍 생성 전략
- 데이터 필터링 및 변환 방법
- Map 함수 예제
- 단어 수 세기 (Word Count)
- 로그 파일 분석
- Map 함수의 역할
- 실습:
- 단어 수 세기를 위한 Map 함수 구현
def map_function(document):
for word in document.split():
yield (word.lower(), 1)
document = "Hello world Hello MapReduce"
mapped = list(map_function(document))
print(mapped)
Day 4: Reduce 단계 구현
- 강의 내용:
- Reduce 함수의 역할
- 중간 결과를 집계하여 최종 결과 생성
- 데이터 집계 및 계산
- Reduce 함수 설계
- 중간 결과의 병합 및 집계 방법
- 결과 데이터 생성 전략
- Reduce 함수 예제
- 단어 수 세기 (Word Count)
- 로그 파일 분석
- Reduce 함수의 역할
- 실습:
- 단어 수 세기를 위한 Reduce 함수 구현
def reduce_function(word, counts):
yield (word, sum(counts))
shuffled = {'hello': [1, 1], 'world': [1], 'mapreduce': [1]}
reduced = []
for key, values in shuffled.items():
reduced.extend(reduce_function(key, values))
print(reduced)
Day 5: MapReduce의 장단점
- 강의 내용:
- MapReduce의 장점
- 대규모 데이터 처리
- 병렬 처리 및 분산 처리
- 확장성 (Scalability)
- MapReduce의 단점
- 처리 지연 (Latency)
- 복잡한 데이터 흐름
- 디버깅의 어려움
- MapReduce의 활용 사례
- 빅데이터 분석
- 로그 파일 처리
- 데이터 마이닝
- MapReduce의 장점
- 실습:
- MapReduce의 장단점을 비교 분석하는 연습
### 장단점 분석 예시
1. 장점
- 대규모 데이터셋을 병렬로 처리 가능
- 클러스터를 이용한 확장성
- 다양한 데이터 소스 처리 가능
2. 단점
- 복잡한 데이터 흐름 및 관리
- 디버깅 및 오류 추적의 어려움
- 처리 지연으로 인한 실시간 처리의 어려움
Day 6: 프로젝트 준비
- 강의 내용:
- 프로젝트 주제 선정 및 요구사항 분석
- 프로젝트 주제 및 요구사항 확정
- 프로젝트 설계 및 계획 수립
- 프로젝트 구현 준비
- 데이터 구조 및 알고리즘 설계
- MapReduce 작업 관리 및 최적화 계획
- 프로젝트 주제 선정 및 요구사항 분석
- 실습:
- 프로젝트 주제 및 요구사항 분석
- 프로젝트 설계 및 계획 수립
### 프로젝트 주제 예시
1. 분산 로그 분석 시스템 개발
2. 대규모 텍스트 데이터 처리 플랫폼 구축
### 프로젝트 요구사항 예시
1. 분산 로그 분석 시스템:
- 대규모 로그 데이터를 분산 처리
- MapReduce를 통한 로그 데이터 분석
- 분석 결과 저장 및 시각화
2. 대규모 텍스트 데이터 처리 플랫폼:
- 대규모 텍스트 데이터를 분할하여 처리
- 데이터 필터링 및 변환
- 분석 결과 저장 및 시각화
### 프로젝트 설계 및 계획 예시
1. 데이터 입력 모듈 구현
2. MapReduce 알고리즘 구현
3. 데이터 출력 및 성능 분석 모듈 구현
반응형
'-----ETC2----- > 고급 프로그래밍 기술' 카테고리의 다른 글
[고급 프로그래밍] Week 7: Apache Spark 개요 및 설치, RDD와 DataFrame 기본 개념 (0) | 2024.06.02 |
---|---|
[고급 프로그래밍] Week 6: Hadoop의 MapReduce 구현과 Python을 이용한 예제 (0) | 2024.06.02 |
[고급 프로그래밍] Week X: 분산 파일 시스템 (Distributed File System) (0) | 2024.06.02 |
[고급 프로그래밍] Week 4: 분산 시스템의 기본 원리 (0) | 2024.06.02 |
[고급 프로그래밍] Week 3: 분산 시스템의 개념과 장단점 (0) | 2024.06.02 |