Learn/'24_Fall_(EE542) Internet&Cloud Computin

(Lecture 10) Uses of Cloud

QBBong 2025. 1. 8. 09:31
728x90

강의 요약: EE542 Lecture 10 - Uses of Cloud

 

이번 강의에서는 클라우드 컴퓨팅의 다양한 활용 사례와 핵심 기술을 다루었다. Google, Facebook, Yahoo! 등 주요 IT 기업의 클라우드 활용, Hadoop과 MapReduce 프로그래밍 모델, 데이터 분석 및 클라우드 기반 애플리케이션 개발 사례가 주요 주제였다.


주요 내용

 

Bigdata Market Share

 

1. 클라우드 컴퓨팅의 산업적 활용

  • Google 활용 사례:
    • 인덱스 구축: Google Search를 위한 인덱스 구축.
    • 기사 클러스터링: Google News에서 기사 클러스터링.
    • 통계적 기계 번역: 다양한 언어 간의 번역을 위한 기계 학습 기술 사용.
  • Yahoo!의 활용 사례:
    • 인덱스 구축: Yahoo! Search를 위한 인덱스 구축.
    • 스팸 탐지: Yahoo! Mail에서 스팸 탐지 기능 구현.
  • Facebook의 활용 사례:
    • 데이터 마이닝: 사용자 데이터를 분석하여 인사이트 도출.
    • 광고 최적화: 광고의 효율성을 높이기 위한 데이터 분석.
    • 스팸 탐지 연구: 사용자 경험을 개선하기 위한 스팸 탐지 연구 진행.

 

2. 연구 분야에서의 활용

   Wikipedia 갈등 분석 (PARC).

   자연어 처리 (CMU).

   기후 시뮬레이션 (Washington).

   생물정보학 (Maryland).

   입자 물리학 (Nebraska).

   암 연구: 대량의 데이터를 처리하기 위한 클라우드 환경의 필요성 강조

 

3. 클라우드 환경의 목표

   확장성: 대규모 데이터를 빠르게 처리.

     예: 단일 노드로 100TB 스캔 시 24일 소요 → 1000 노드 클러스터로 35분에 처리.

   비용 효율성:

     저렴한 범용 하드웨어 사용.

     자동 장애 복구와 관리자 부담 감소.

 

4. 클라우드 환경의 도전 과제

   저렴한 노드의 높은 실패율:

     1000 노드의 평균 고장 주기(MTBF) = 하루.

     해결책: 시스템 수준의 내결함성 설계.

   낮은 네트워크 대역폭:

     해결책: 데이터를 계산 지점으로 이동.

   분산 시스템 프로그래밍의 복잡성:

     해결책: MapReduce와 같은 제한된 프로그래밍 모델 활용.

 

5. Hadoop의 개념과 활용

   Hadoop:

     분산 데이터 저장 및 처리 프레임워크.

     Apache 오픈소스 프로젝트로 개발.

   MapReduce 프로그래밍 모델:

     데이터 집약적 컴퓨팅을 위한 모델.

  • MapReduce의 정의:
    • 데이터 집약적 컴퓨팅을 위한 프로그래밍 모델: 저렴한 클러스터에서 실행됨.
    • 구글에 의해 개발됨: 하루에 20PB의 데이터를 처리함.
    • Apache 하둡 프로젝트에 의해 대중화됨: Yahoo!, Facebook, Amazon 등에서 사용됨.
  • MapReduce의 데이터 유형:
    • 키-값 레코드: 데이터는 키-값 쌍으로 구성됨.
  • Map 및 Reduce 함수:
    • Map 함수: (Kin, Vin) → list(Kinter, Vinter)
    • Reduce 함수: (Kinter, list(Vinter)) → list(Kout, Vout)

   주요 사례:

     Yahoo!: 10,000 코어 클러스터에서 웹 검색 데이터 처리.

     Facebook: 100PB 이상의 데이터를 Hadoop 클러스터에서 호스팅.

     AMAZON, NETFLIX: 대량의 데이터를 처리하기 위해 하둡을 사용함.

     New York Times: 1851-1922년의 기사에서 PDF를 동적으로 생성하고, 하둡과 MapReduce를 사용하여 4TB의 TIFF를 24시간 내에 1100만 개의 PDF 기사로 변환함.

   주요 응용 프로그램:

     광고: 사용자 행동을 분석하여 추천 생성.

     검색: 관련 문서 그룹화.

     보안: 비정상적인 패턴 검색.

 

6. MapReduce 사용 사례

   Word Count:

     텍스트 데이터에서 단어 빈도 계산.

# Example: Word Count

def mapper(line):
    foreach word in line.split():
        output(word, 1)

def reducer(key, values):
    output(key, sum(values))

 

Word Count Execution

# An Optimization: The Combiner
# Local reduce function for repeated keys produced by same map
# For associative ops. like sum, count, max
# Decreases amount of intermediate data

# Example: local counting for Word Count:
def combiner(key, values):
    output(key, sum(values))

Word Count Execution

   정렬(Sort):

     키를 기준으로 데이터 정렬.

   Inverted Index:

     단어가 포함된 파일 목록 생성.

   가장 많이 사용된 단어 찾기:

     여러 파일에서 가장 자주 등장하는 단어 100개 선택.

# 1. Search

# Input: (lineNumber, line) records
# Output: lines matching a given pattern

# Map:
if(line matches pattern):
	output(line)

# Reduce: identity function
#  - Alternative: no reducer (map-only job)


# 2. Sort

# Input: (key, value) records
# Output: same records, sorted by key
# Map: identity function
# Reduce: identify function
# Trick: Pick partitioningfunction p such thatk1 < k2 => p(k1) < p(k2)


# 3. Inverted Index

# Input: (filename, text) records
# Output: list of files containing each word

# Map:
foreach word in text.split():
	output(word, filename)

# Combine: uniquify filenames for each word

#Reduce:
def reduce(word, filenames):
	output(word,sort(filenames))
    
# 4. Most Popular Words

# Input: (filename, text) records
# Output: the 100 words occurring in most files

# Two-stage solution:
#  - Job 1:
#    Create inverted index, giving (word, list(file)) records
#  - Job 2:
#    Map each (word, list(file)) to (count, word)
#    Sort these records by count as in sort job
# Optimizations:
#  - Map to (word, 1) instead of (word, file) in Job 1
#  - Estimate count distribution in advance by sampling

# 5. Numerical Integration

# Input: (start, end) records for sub-ranges to integrate
#  Can implement using custom InputFormat
# Output: integral of f(x) over entire range

# Map:
def map(start, end):
	sum = 0
    for(x = start; x < end; x += step):
    	sum += f(x) * step
    output(“”, sum)

# Reduce:
def reduce(key, values):
	output(key, sum(values))

(Left) Sort, (Right) Inverted Index Example

(Word Count using Hadoop)

# Mapper.py

import sys
for line in sys.stdin:
  for word in line.split():
    print(word.lower() + "\t" + 1)


# Reducer.py

import sys
counts = {}
for line in sys.stdin:
  word, count = line.split("\t")
    dict[word] = dict.get(word, 0) + int(count)
for word, count in counts:
  print(word.lower() + "\t" + 1)

 

 

7. 미래 클라우드 활용

  

  • 데이터 수집 및 처리:
    • 데이터 병합: 다양한 출처의 데이터를 통합함.
    • 데이터 분할: 대량의 데이터를 효율적으로 처리하기 위해 분할함.
  • 데이터 분석:
    • 변환: 데이터를 분석하여 유용한 정보로 변환함.
    • 확장 및 축소: 데이터의 범위를 조정하여 분석의 효율성을 높임.
    • 패턴 매칭: 데이터에서 유의미한 패턴을 찾아냄.
  • 하드웨어 가속:
    • 고성능 데이터 처리: 대량의 데이터를 신속하게 처리함.
    • 전력 효율적인 데이터 처리: 에너지를 절약하면서 데이터 처리 성능을 유지함.

파이썬을 통한 데이터 분석

  • 파이썬 패키지:
    • NumPy/SciPy: 수치 및 과학적 함수 라이브러리.
    • Numba: JIT 컴파일을 지원하는 파이썬 컴파일러.
    • Pandas: 고성능 데이터 구조 및 데이터 분석 도구.
    • ScientificPython: 과학적 컴퓨팅 모듈의 모음.
  • 파이썬의 장점:
    • 오픈 소스: MATLAB보다 유리함.
    • 쉬운 문법: R보다 사용하기 쉬움.
    • HW 가속기 라이브러리: 클라우드 환경에서 파이썬을 선호함.


요약

 

이 강의는 클라우드 컴퓨팅이 IT 산업과 연구 분야에서 어떻게 혁신을 이끌고 있는지 설명한다. Hadoop과 MapReduce는 대규모 데이터 처리의 핵심 도구로 자리 잡았으며, 클라우드 인프라는 데이터 분석 및 애플리케이션 개발의 기반을 제공한다.

 

키워드

 

클라우드 컴퓨팅, Hadoop, MapReduce, 데이터 분석, 확장성, 내결함성, Google, Facebook, 데이터 마이닝, 분산 처리

728x90
반응형