15주차 월~금요일, 71~75일차 Today I Learned 머신러닝 : ML E2E, 기초개념, 기초선형대수, 확률기초/분포, 선형회귀/분포 ✏️ 학습 내용 1. 머신러닝 End-to-End 큰 그림을 본다. 데이터를 구한다. 데이터로부터 통찰을 얻기 위해 탐색하고 시각화한다. 머신러닝 알고리즘을 위해 데이터를 준비 (머신러닝이 사용할 수 있게 가공) 한다. 모델을 선택하고 훈련시킨다. 모델을 상세하게 조정한다. (=파인튜닝) 솔루션을 제시한다. 시스템을 론칭, 모니터링, 유지보수 한다. 2. 머신러닝 기초 개념 수업 발표에 사용한 문서를 첨부하기로 한다. 3. 기초 선형 대수 1) 기본 표기법 2) 행렬의 곱셈 3) 중요 연산과 성질들 4) 전치, 대칭행렬, 대각합, Norms, 선형독립과 Ran..
Data Engineering
프로그래머스 데브코스 [데이터 엔지니어링 2기]14주차 금요일, 70일차 Today I Learned 스트리밍 처리 (5) : Spark Streaming ✏️ 학습 내용 1. Spark Streaming 이전에 배운 Spark은 빅데이터 처리 관련 다양한 기능을 제공한다고 했다. 그 중 Spark Streaming이란, 실시간 데이터 스트림 처리를 위한 Spark API로, Kafka, Kinesis, Flume, TCP 소켓 등의 다양한 소스에서 발생하는 데이터 처리와 Join, Map, Reduce, Window와 같은 고급 함수 사용이 가능하다. 데이터를 마이크로 배치로 처리 계속해서 쉬의 과정을 반복 (트리커) 이렇게 읽은 데이터를 앞서 읽은 데이터에 리플레이스 배치마다 데이터 위치 관리 Fault Tolerance와 데이터 재처리 관리 S..
14주차 목요일, 69일차 Today I Learned 스트리밍 처리 (4) : Kafka 기본 프로그래밍 ✏️ 학습 내용 1. Client tool Kafka에서 기본으로 제공해주는 Client tool 사용을 위해선 해당 브로커 노드 안으로 로그인하거나, 컴퓨터에 kafka 클라이언트 설치 후 Docker 안에 있는 kafka를 쓰도록 세팅해주면 된다. 1) 토픽 리스팅 및 토픽 삭제 docker ps를 통해 Broker의 컨테이너 ID 혹은 이름을 파악하여 로그인하고, 거기서 다양한 kafka 관련 클라이언트 툴을 사용 가능하다. $ kafka-topics --bootstrap-server kafka1:9092 --list $ kafka-topics --bootstrap-server kafka1:9..
14주차 수요일, 68일차 Today I Learned 스트리밍 처리 (3) : Kafka 소개 ✏️ 학습 내용 1. 소개 2008년 링크드인에서 내부 실시간 데이터 처리를 위해 개발한 소프트웨어 플랫폼으로, 스칼라와 자바로 작성되어 있다. 2011년 초에 오픈소스화하였으며, 포춘지 선정 100대 기업 중 80% 이상이 카프카를 사용하는 것으로 알려져있다. 즉, 실시간 데이터를 처리하기 위해 설계된 오픈 소스 기반의 분산 스트리밍 플랫폼으로, 실시간 데이터 처리를 위해 다수의 서버로 구상되어 있다. Scalability와 Fault Tolerance를 제공하는 Publish-Subscription 메시징 시스템이라고 볼 수 있음 High Throughput과 Low Latency 지원 - 실시간 데이터 ..
14주차 화요일, 67일차 Today I Learned 스트리밍 처리 (2) : Udemy 추천 엔진 발전 여정 ✏️ 학습 내용 Udemy 데이터 시스템이 어떻게 배치에서 실시간으로 발전했는지 그 여정을 살펴보며 케이스 스터디를 진행한다. 1. 데이터팀 빌딩 여정 2014년 8월, 데이터 엔지니어링팀 빌딩 - 데이터 웨어하우스 (Redshift) 도입 및 ETL 프로세스 개발 2015년 4월, 데이터 분석팀 설립 - BI툴 도입, 데이터 분석 요구 프로세스 도입, 지표 표준화 2015년 4월, 데이터 사이언스팀 설립 - ML 모델을 프로덕션에 사용, A/B 프로세스 도입, ML 모델 배포 프로세스 도입 2. 추천 엔진 발전 1기 추천 엔진 배치로 매일 밤, 지난 90일간 방문했던 사용자들과 어느 조건이 ..
14주차 월요일, 66일차 Today I Learned 스트리밍 처리 (1) : 실시간 데이처 처리 ✏️ 학습 내용 1. 구글이 데이터 분야에 끼친 영향 구글이 데이터 분야에 끼친 영향은 하둡 등을 통한 배치 프로세싱부터 텐서플로우, K8s 등 이루 말할 수 없다. 페이지 랭크 : 중요한 페이지는 더 많은 다른 사이트들로부터 링크를 받는다. 이를 기반으로 계산을 반복하면 웹상의 모든 페이지들에 중요도 점수를 부여할 수 있고, 페이지 랭크의 계산은 대용량 컴퓨팅 인프라와 소프트웨어 없이는 불가능하다. 검색엔진의 데이터 처리 : 주기적 검색 인덱스 빌딩 (구글 댄스), 람다 아키텍처로 배치 및 스트리밍 따로 처리하도록 바뀌었다. 구글 애드워즈 : 검색 기술과 검색 마케팅이 결합되었다. 웹기반 자동화를 염두에..
13주차 금요일, 65일차 Today I Learned 빅데이터 처리 시스템, Hadoop Spark (5) : SparkML, 클라우드 기반의 Spark 클러스터 ✏️ 학습 내용 1. SparkML 머신러닝 관련 다양한 알고리즘, 유틸리티로 구성된 라이브러리이다. (아직 딥러닝 지원은 미약하다.) https://spark.apache.org/docs/latest/ml-classification-regression.html Classification and regression - Spark 3.5.0 Documentation spark.apache.org 원스톱 ML 프레임웍이자, 대용량 데이터도 처리 가능하다. 데이터 프레임과 SparkSQL 등을 이용해 전처리 spark.ml : 모델 빌딩 ML Pi..
13주차 목요일, 64일차 Today I Learned 빅데이터 처리 시스템, Hadoop Spark (4) : Spark 내부 동작 이해하기 ✏️ 학습 내용 1. 지원 파일 포맷 데이터는 디스크에 파일로 저장된다. Spark SQL이나 데이터프레임을 통해 데이터 처리를 한다면 입력 데이터는 대부분 HDFS에서 올 것이다. HDFS에 어떤 형식으로 저장되어 있느냐가 성능에 큰 영향을 끼친다. 비구조화 데이터 : text type이 없는 세미 구조화 데이터 : JSON, XML, CSV 구조화 데이터 : PARQUET, AVRO, ORC, SequenceFile PARQUET 란, Spark의 기본 파일 포맷이다. 하나의 데이터 블록은 하나의 Row Group으로 구성된다. 2. Execution Plan..
13주차 수요일, 63일차 Today I Learned 빅데이터 처리 시스템, Hadoop Spark (3) : Spark 프로그래밍 - SQL ✏️ 학습 내용 1. Spark SQL 구조화된 데이터를 다루는 한 SQL은 데이터 규모와 상관없이 쓰인다. 모든 대용량 데이터 웨어하우스는 SQL 기반이며, Spark도 예외는 아니다. Spark SQL이란 구조화된 데이터 처리를 위한 Spark 모듈로, 데이터 프레임 작업을 SQL로 처리 가능하다. 데이터프레임에 테이블 이름 지정 후 SQL 함수를 사용 가능하고, HQL (Hive Query Language)과 호환 제공되어 Hive 테이블들을 읽고 쓸 수 있다. SQL로 가능한 작업이라면 DataFrame을 사용할 이유는 없다 (동시에 사용할 수 있음). ..
13주차 화요일, 62일차 Today I Learned 빅데이터 처리 시스템, Hadoop Spark (2) : Spark 프로그래밍 - DataFrame ✏️ 학습 내용 1. Spark 데이터 처리 데이터 병렬처리가 가능하려면 데이터가 먼저 분산되어야 하는데, Spark에서는 이를 파티션 (Partition)이라고 부른다. 다음으로 나눠진 데이터를 각각 따로 동시에 처리하면 된다. 처리 데이터 나누기 파티션 (executor의 수 * executor당 CPU의 수가 적절한 파티션의 수가 됨) 병렬처리 데이터프레임은 작은 파티션들로 구성되어 있으며, 데이터프레임은 한 번 만들어지면 수정이 불가능하다. 입력 데이터프레임을 원하는 결과 도출까지 다른 데이터 프레임으로 계속 변환하는 방식으로 Spark 데이터..