[TIL]Day 129

이재희·2021년 4월 7일
0

TIL

목록 보기
129/312

빅데이터의 정의와 예
빅데이터란 무엇이며 어떤 예들이 있는가?
빅데이터의 정의 1
서버 한대로 처리할 수 없는 규모의 데이터 - 존라우저
빅데이터의 정의 2
기존의 소프트웨어로는 처리할 수 없는 규모의 데이터
빅데이터의 정의 3
4V
volume:데이터의 크기가 대용량?
velocity:데이터의 처리 속도가 중요?
variety:구조화/비구조화 데이터 둘다?
veracity:데이터의 품절이 좋은지?

빅데이터의 예제 - 디바이스 데이터
모바일 디바이스 - 위치정보
스마트 TV
각종센서데이터
네트워킹 디바이스
웹페이지
수십조개의 이상의 웹페이지 존재
이를 크롤하여 중요한 페이지를 찾아내고(페이지랭크) 인덱싱하는 것은 엄청난 크기의 데이터 수집과 계산을 필요로함
사용자 검색어와 클릭 정보 자체도 대용량
이를 마이닝하여 개인화 혹은 별도 서비스 개발이 가능
검색어 자동완성, 동의어 찾기, 통계 기반 번역
이런 문제를 해결하면서 구글이 빅데이터 기술의 발전에 지대한 공헌을 하게됨

대용량 처리 기술이란?
분산환경기반(1대 혹은 그 이상의 서버로 구성)
분산 컴퓨팅과 분산 파일 시스템이 필요
Fault Tolerance
소수의 서버가 고장나도 동작해야함
확장이 용이해야함

하둡의 등장
오픈소스 검색엔진의 하부 프로젝트로 시작
크게 두 개의 서브 시스템으로 구현됨
분산 파일 시스템인 HDFS
분산 컴퓨팅 시스템인 MapReduce
새로운 프로그래밍 방식으로 대용량 데이터 처리의 효율을 극대화 하는데 맞춤

MapReduce 프로그래밍의 문제점
작업에 따라서는 MapReduce 프로그래밍이 너무 복잡해짐
결국 Hive처럼 MapReduce로 구현된 SQL 언어들이 다시 각광을 받게 됨
SQL on Hadoop
빅데이터가 뜨면서 SQL이 한물 갔다 평가되었지만 컴백
또한 MapReduce는 기본적으로 배치 작업에 최적화(not realtime)

하둡의 발전
하둡1.0은 HDFS위에 MapReduce라는 분산컴퓨팅 시스템이 도는 구조
다른 분산컴퓨팅 시스템은 지원하지 못함
하둡 2.0에서 아키텍처가 크게 변경됨
하둡은 분산처리 시스템이 되고 그 위에 애플리케이션 레이어가 올라가는 구조
Spark은 하둡 2.0위에서 애플리케이션 레이어로 실행됨
손쉬운 개발을 위한 로컬모드도 지원: 이번 강좌에서는 로컬모드 사용
YARN == 하둡2.0에서 분산 컴퓨팅 시스템 이름 일종의 운영체제같은?

HDFS - 분산파일시스템
데이터를 블록단위로 저장
블록의 크기는 128MB 디폴트
블록 복제 방식 Replication
각 블록은 3군데 중복 저장됨
Fault tolerance를 보장할 수 있는 방식으로 이 블록들은 저장됨

분산컴퓨팅시스템
하둡1.0
하나의 잡 트래커와 다수의 태스크 트래커로 구성됨
잡트래커가 일을 나눠서 다수의 태스크 트래커에 분배
하둡2.0
클라이언트,리소스 매니저, 노드매니저, 컨테이너로 역할을 세분화
Spark 지원이 2.0부터 시작

하둡을 이용한 데이터 시스템 구성
하둡은 흔히 이야기하는 Data Warehouse에 해단
웤플로우 관리로는 Airflow 가 대세

하둡1.0 구조 -> HDFS 위에 맵 리듀스
하둡2.0 구조 -> HDFS2 위에 YARN 위에 애플리케이션으로 맵리듀스 스파크 등 동작

Spark vs. MapReduce
Spark는 기본적으로 메모리기반
메모리가 부족해지면 디스크 사용
mapreduce는 디스크 기반
mapReduce는 하둡 위에서만 동작
spark는 하둡 이외에도 다른 분산 컴퓨팅 환경 지원
mapreduce는 키와 밸류 기반 프로그래밍
spark는 판다스와 개념적으로 흡사
spark는 다양한 방식의 컴퓨팅을 지원
배치프로그래밍, 스트리밍 프로그래밍, SQL, 머신러닝, 그래프 분석

Spark 구조
드라이버 프로그램의 존재
Spark는 하둡 2.0,3.0 위에 올라가는 애플리케이션

Spark 3.0의 구성
spark core
spark sql
spark streaming
mllib
sparkgraph
k8s 지원

spark 프로그래밍 개념
RDD(resilient distributed dataset)
로우레벨 프로그래밍 API로 세밀한 제어가 가능
하지만 코딩의 복잡도 증가
Dataframe & dataset 판다스의 데이터프레임과 흡사
하이레벨 프로그래밍 API로 점점 많이 사용하는 추세
sparkSQL을 사용한다면 이를 쓰게 됨
보통 scala,java,python 중의 하나를 사용
이 강좌에서는 python을 사용할 예정: pyspark 모듈

판다스
파이썬으로 데이터 분석을 하는데 가장 기본이 되는 모듈 중의 하나
엑셀에서 하는 일을 파이썬에서 가능하게 해주는 모듈이라고 생각하면 됨
시각화나 머신러닝과 같은 다른 파이썬 모듈과 같이 사용됨
소규모의 구조화된 데이터를 다루는데 최적
한대의 서버에서 다룰수 있는 데이터로 크기가 제약이 됨
병렬처리를 지원하지 않음
큰 데이터의 경우 spark을 사용
작은 데이터를 다루는데 굳이 Spark을 쓸 필요가 없음

pandas로 할 수 있는 일의 예
구조화된 데이터를 읽어오고 저장하기
csv,json 등등 다양한 포멧 지원
웹과 관계형 데이터베이스에서 읽어오는것도 가능
다양한 통계 뽑아보기
컬럼별로 평균, 표준편차, percentile 등 계산하기
컬럼 A와 컬럼 B간의 상관관계 계산하기 correlation
데이터 청소 작업 -> 데이터 전처리
컬럼별로 값이 존재하지 않는 경우 디폴트 값 지정하기
컬럼별로 값의 범위를 조정하기 normalization
visualization
matplotlib와 연동하여 다양한 형태의 시각화 지원

pandas의 데이터 구조
엑셀시트에 해당하는 것이 dataframe
엑셀시트의 컬럼에 해당하는것이 series
입력 dataframe을 원하는 최종 dataframe으로 계속 변환하는 것이 핵심

profile
오늘부터 열심히 산다

0개의 댓글