본문 바로가기

데이터엔지니어링

(44)
[11주차] 하둡과 Spark (5) 🙂 Spark ML머신러닝 관련 다양한 알고리즘, 유틸리티로 구성된 라이브러리spark.mllib(RDD) vs. spark.ml(DataFrame)✔ 장점원스톱 ML Framework데이터 프레임과 SparkSQL 등을 이용해 전처리Spark MLlib을 이용해 모델 빌딩ML Pipeline을 통해 모델 빌딩 자동화MLflow로 모델 관리하고 서빙 ✔ MLflow모델 관리와 서빙을 위한 Ops 관련 기능 제공모델 개발과 테스트와 관리와 서빙까지 제공해주는 End-to-End Framework파이썬, 자바, R, API를 지원Tracking, Models, Projects 지원 ✔ 제공 알고리즘ClassificationLogistic regression, Decision tree, Random fore..
[11주차] 하둡과 Spark (4) 🙂 Spark 파일 포맷Unstructured: TextSemi-structured: JSON, XML, CSVStructured: PARQUET, AVRO, ORC, SequenceFile🙂 Execution Plan✔ Transformations and ActionsTransformationsNarrow Dependencies: 독립적인 Partition Level 작업select, filter, map 등Wide Dependencies: Shuffling이 필요한 작업groupby, reduceby, partitionby, repartition, coalesce 등ActionsRead, Write, Show, Collect -> Job을 실행시킴 (실제 코드가 실행)Lazy Execution어떤..
[11주차] 하둡과 Spark (2) 🙂 Spark 프로그래밍✔ 데이터 병렬처리데이터가 먼저 분산되어야 함하둡 맵의 데이터 처리 단위는 디스크에 있는 데이터 블록 (128MB)hdfs-site.xml에 있는 dfs.block.size 프로퍼티가 결정Spark에서는 이를 Partition이라 부름. (128MB)spark.sql.files.maxPartitionBytes: HDFS 등에 있는 파일을 읽어올 때만 적용나눠진 데이터를 각각 따로 동시 처리맵리듀스에서 N개의 데이터 블록으로 구성된 파일 처리 시 N개의 Map 태스크가 실행Spark에서는 파티션 단위로 메모리로 로드되어 Executor가 배정🍦 처리 데이터를 나누기 -> 파티션 -> 병렬처리 ✔ Spark 데이터 처리 흐름데이터프레임은 작은 파티션들로 구성됨데이터프레임은 한 번 ..
[11주차] 하둡과 Spark (1) 🙂 빅데이터✔ 정의서버 한대로 처리할 수 없는 규모의 데이터기존의 소프트웨어(Oracle, MySQL 등 Production DB)로는 처리할 수 없는 규모의 데이터4V (Volume, Velocity, Variety, Veracity)✔ 특징큰 데이터를 손실없이 보관할 방법이 필요: 스토리지처리 시간이 오래 걸림: 병렬처리이런 데이터들은 비구조화된 데이터: SQL X🍦 해결방안큰 데이터 저장이 가능한 분산 파일 시스템이 필요병렬 처리가 가능한 분산 컴퓨팅 시스템이 필요비구조화 데이터를 처리할 방법이 필요결국 다수의 컴퓨터로 구성된 Framework가 필요✔ 대용량 분산 시스템분산 환경 기반 (1대 혹은 그 이상의 서버로 구성 - 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요)Fault Toleran..
[10주차] Airflow 고급 기능, DBT와 Data Catalog (4) 🙂 DBTData Build Tool✔ dbt 구성 컴포넌트데이터 모델 (models)테이블을 몇 개의 티어로 관리일종의 CTAS, Lineage 트래킹Table, View, CTE 등데이터 품질 검증 (tests)스냅샷 (snapshots)✔ dbt 사용 시나리오데이터 변경 사항을 이해하기 쉽고 필요하다면 롤백데이터간 Lineage 확인 가능데이터 품질 테스트 및 에러 보고Fact 테이블의 증분 로드 (Incremental Update)Dimension 테이블 변경 추적 (히스토리 테이블)용이한 문서 작성✔ dbt Models: Input🍦 ModelELT 테이블을 만듦에 있어 기본이 되는 빌딩블록테이블이나 뷰나 CTE의 형태로 존재입력, 중간, 최종 테이블을 정의하는 곳raw => staging ..
[10주차] Airflow 고급 기능, DBT와 Data Catalog (3) 🙂 Dag Dependencies✔ Dag 실행 방법주기적 실행: schedule로 지정다른 Dag에 의해 트리거Explicit Trigger: Dag A가 분명하게 Dag B를 트리거 (TriggerDagOperator)Reactive Trigger: Dag B가 Dag A가 끝나기를 대기 (ExternalTaskSensor)알아두면 좋은 상황에 따라 다른 Task 실행 방식조건에 따라 다른 Task로 분기 (BranchPythonOperator)과거 데이터 Backfill 시에는 불필요한 Task 처리 (LatestOnlyOperator)앞단 Task의 실행상황어떤 경우에는 앞단이 실패해도 동작해야하는 경우가 있을 수 있음🍦 Jinja TemplateJinja 템플릿은 Python에서 널리 사용되..
[9주차] Docker & K8s (5) 🙂 Docker 정리✔ 관련 용어Docker ImageDockerfileDocker ContainerDocker HubDocker Compose다수의 Docker Container를 관리docker-compose.ymlServicesNetworksVolumes: host(개발용) / anonymous / named volumes🍦 Production 환경 사용시 주의 점Docker VolumesHost Volume은 보통 개발 시 소스코드를 바로 container 안으로 마운트하기 위함Production에서는 named volumes를 써야함Docker Container는 read-only로 사용내용을 바꿔야할 때 실행 중인 컨테이너 수정 X새로 이미지를 빌드해서 launch자동화: CI/CD 프로세..
[9주차] Docker & K8s (4) 🙂 Docker-Compose✔ Docker-Compose란?다수의 Container로 SW가 구성되는 경우 사용할 수 있는 툴 + 환경설정파일docker-compose.yml로 설정다양한 테스트 등도 수행 가능다양한 버전을 만드는 것도 일반적 (dev, test, prod 등)개별 Container를 따로 관리하는 것보다 훨씬 더 생산성이 높음환경설정 파일의 이름은 docker-compose.yml이나 docker-compose.yaml$docker-compose --version🍦 사용법docker-compose build: build 키로 지정된 것들 대상docker-compose up: docker run과 비슷build - create - startdocker-compose pull: doc..