5. 행복했던 우리들의 데이터 처리
01_다가오는 거대한 데이터
CSV를 통해서 데이터를 처리한 경험이 한번쯤 있으실 겁니다.
데이터를 읽기도 쉽고, 불러오고 저장하는 것도 쉬워서 항상 많은 사랑을 받고 있죠 😆
아마도 우리들 분석할 CSV 데이터 주피터 노트북
분석
시각화
6. 데이터 협업 환경
01_다가오는 거대한 데이터
CSV로 협업하는 것도 복잡하지는 않습니다.
물론 파일을 전달하는 것이기에, 조금 번거로울 뿐이죠
아마도 우리들 CSV 데이터 전처리 데이터 직장동료
분석
데이터
프로세싱
메일전송
7. 협업에서 찾아오는 문제들
01_다가오는 거대한 데이터
물론 협업할 때부터 보이지 않는 문제가 터지기 시작합니다.
데이터 전달일자에 갑자기 깨진 파일 (백업이
없다)
비기! 최종본 분신술 복구할려고 메일을 뒤졌지만 기간이 만료됬다.
8. 데이터베이스를 통한 협업 시도
01_다가오는 거대한 데이터
MongoDB
MySQL
아마도 우리들
분석 및 전처리
데이터 변경
안내
데이터베이스를 사용하면, 협업에서 발생하는 문제를 줄일 수 있습니다.
주기적인 데이터백업
10. 오늘날에는 Data 기술의 향상이 불러온 것
01_다가오는 거대한 데이터
https://techcrunch.com/2012/08/22/how-big-is-facebooks-data-2-5-billion-pieces-of-content-and-500-terabytes-ingested-every-day/
11. 데이터가 늘어남에 따라, 늦어지는 처리 속도
01_다가오는 거대한 데이터
데이터를 10만개 정도 넣어보고...
12. 데이터가 늘어남에 따라, 늦어지는 처리 속도
01_다가오는 거대한 데이터
delimiter $
CREATE FUNCTION grade(score INT)
RETURNS CHAR
BEGIN
DECLARE grade_score CHAR;
SELECT CASE WHEN score BETWEEN 90 AND 100 THEN 'A'
WHEN score BETWEEN 80 AND 89 THEN 'B'
WHEN score BETWEEN 70 AND 79 THEN 'C'
WHEN score BETWEEN 60 AND 69 THEN 'D'
ELSE 'F'
END INTO grade_score;
RETURN grade_score;
END $
SELECT
grade((score_eng + score_math + score_science
+ score_history) / 4) AS grade_score,
COUNT(*) AS count,
CONCAT(CEILING(COUNT(*) / (SELECT COUNT(*)
FROM dsts.dsts) * 100), '%')
FROM dsts.dsts
GROUP BY grade_score
ORDER BY grade_score;
집계 함수와 CASE 문, 서브쿼리 조합 (지옥의 조합)
이용해서 전체 데이터를 취합하는
쿼리를 테스트해봅시다.
*참고로 좌측의 쿼리는
전체 점수를 평균내어
아래와 같은 기준으로 등급을 매겨줍니다.
90~100 -> ‘A’
80~89 -> ‘B’
70~79 -> ‘C’
60~69 -> ‘D’
그 밖에 -> ‘F’
결과 값은 각 등급별 사람의 수와
그 등급이 전체에서
몇 % 비중을 가지는지 보여줍니다.
13. 데이터가 늘어남에 따라, 늦어지는 처리 속도
01_다가오는 거대한 데이터
쿼리 결과를 조회하기까지 총 11초가 소요되었습니다.
이 정도면 나쁜 조건은 아닙니다.
14. 데이터가 늘어남에 따라, 늦어지는 처리 속도
01_다가오는 거대한 데이터
1천만 Rows를 가진 테이블에서의 쿼리 결과는 총 1분 50초가 소요되었습니다.
점점 작업 조회가 늦어집니다. 😢
20. 하둡이 가지고 있는 생태계
02_하둡과 에코시스템
하둡은 수 많은 프레임워크들의 생태계를 가지고 있습니다.
다양한 프레임워크들은 데이터 사이언티스트들의 업무에 맞게 골라가며 사용할 수 있게
되어있습니다.
21. 하둡의 구성
02_하둡과 에코시스템
HDFS
YARN
Map Reduce Others
하둡은 크게 3가지의 구조로 나눌 수 있습니다.
거대한 데이터를 처리하는 메커니즘인 맵 리듀스(MapReduce)
분산 환경에서 흩어진 리소스를 적절하게 관리해주는 얀(Yarn)
그리고 모든 데이터를 분산하여 보관하는 HDFS
하둡을 얘기할 땐 이 세가지 구성요소를 얘기합니다.
YARN
HDFS
Resourc
e
Manager
Name
Node
Node
Manager
Data
Node
Node
Manager
Data
Node
Node
Manager
Data
Node
Node
Manager
Data
Node
22. 수 많은 데이터 프레임워크들
02_하둡과 에코시스템
코디네이터
리소스매니저
데
이
터
수
집
데
이
터
배
치
분
석
데
이
터
처
리
실
시
간
데
이
터
분
석
대
화
형
분
석
워크플로우 관리
클라우드
에디터
데이터
시각화
23. 수 많은 데이터 프레임워크들
02_하둡과 에코시스템
대화형 쿼리 엔진
데이터베이스
배치 데이터 분석
워크 플로우
코디네이터
메시지 처리
분산 리소스 관리
인메모리 데이터 처리
데이터 수집
시각화
24. 수 많은 데이터 프레임워크들
02_하둡과 에코시스템
대화형 쿼리 엔진
데이터베이스
배치 데이터 분석
워크 플로우
코디네이터
메시지 처리
분산 리소스 관리
인메모리 데이터 처리
데이터 수집
시각화
MapReduce, Apache Tez
Apache Hive, Apache HBase
Presto, Impala, Apache Tajo
Oozie, Ambari
Zookeeper
Apache Spark
YARN, Apache Mesos
Apache Kafka
Apache Sqoop, Hiho, Flume, Chunkwa
Apache Zeppelin, Apache Superset
26. 기존 데이터 처리 과정의 비효율성
03_협업을 위한 하둡
아마도 우리들 Data Lake 분석할 CSV 데이터 주피터 노트북
시각화
ETL
쿼리
기존에는 데이터를 시각화하기 위해서
쿼리를 통해 원하는 데이터를 확인하고, 그것을 가공하고 추출해서(ETL), 시각화하기 까지
각 단계를 별도로 관리했습니다.
27. 기존 데이터 처리 과정의 비효율성
03_협업을 위한 하둡
로그 수집
트랜잭션 데이터
NOSQL
Batch
Adhoc 분석
로그 집계
Batch 분석
비정형 분석
서비스
아마도 우리들
데이터 저장소가 하나면 다행이지만, 업무에서 사용하는 데이터 소스가 다양하다면
업무처리는 더 복잡해집니다.
28. 하둡으로의 대체
03_협업을 위한 하둡
데이터 저장소가 하나면 다행이지만, 업무에서 사용하는 데이터 소스가 다양하다면
업무처리는 더 복잡해집니다.
Batch 분석
비정형 분석
인메모리 분석
실시간 분석
Data lake
(Hadoop HDFS)
아마도 우리들
29. 데이터 시각화
03_협업을 위한 하둡
여러가지 데이터 소스를 자동으로 불러와 시각화를
도와주기 때문에 매번 새로 추가된 데이터를 불러와
차트를 만드는 작업을 할 필요가 없어집니다.
Apache Zeppelin
Apache Superset
30. 데이터 플로우
03_협업을 위한 하둡
서비스 데이터베이스
Pub/Sub
로그 저장소
Cold Data
Data lake
Query EngineVisualization
Workflow
아마도 우리들
31. 데이터 플로우
03_협업을 위한 하둡 Workflow
(Airflow)
Service Flow
Hadoop HDFS
Pub/Sub
Visualization
Query Engine
로그데이터 수집
Pipeline
Pipeline
Schedule
Query
Query