Develop/DevCourseTIL

Develop/DevCourseTIL

07.25 데이터 엔지니어링 77일차 - Spark AQE

Spark.sql.shuffle.partitions 이 변수 하나로 다양한 상황의 shuffling을 해결하기는 쉽지 않음 MapReduce 세상에서 mapreduce.job.reduces와 동일 적은 수의 Partition은 병렬성을 낮추고 OOM과 disk spill의 가능성을 높임 -> processing 시간이 오래 걸림 많은 수의 Partition은 task scheduler와 task 생성과 관련된 오버헤드가 생기며 너무 흔한 네트워크 I/O 요청으로 병목 초래 만약 Spark Engine Optimizer가 알아서 Partition의 수를 결정할 수 있다면? -> AQE의 목적 AQE "Dynamic query optimization that happens in the middle of qu..

Develop/DevCourseTIL

06.21 데이터 엔지니어링 일차 53일차 - Dag Dependencies

Dag를 실행하는 방법 주기적 실행: schedule로 지정 다른 Dag에 의해 트리거 Explicit Trigger: Dag A가 분명하게 Dag B를 트리거 (TriggerDagOperator) Reactive Trigger: Dag B가 Dag A가 끝나기를 대기(ExtrnalTaskSensor) 알아두면 좋은 상황에 따라 다른 태스크 실행 방식들 조건에 따라 다른 태스크로 분기 (BranchPythonOperator) 과거 데이터 Backfill시에는 불필요한 태스크 처리 (LatestOnlyOperator) 앞단 태스크들의 실행상황 어떤 경우에는 앞단이 실패해도 동작해야 하는 경우가 있을 수 있음 Explicit trigger vs Reactive trigger Explicit trigger T..

Develop/DevCourseTIL

07.13 데이터 엔지니어링 69일차 - KafkaConsumer

KafkaConsumer 파라미터 Topic 이름을 KafkaConsumer의 첫번째 인자로 지정 혹은 나중에 별도로 subscribe를 호출해서 지정 파라미터 의미 기본 값 설명 bootstrap_servers 메세지를 보낼 때 사용할 브로커 리스트 (host:port) localhost:9092 client_id Kafka Consumer 이름 'kafka-python-{version}' 지정 안 하면, 알아서 지정됨 group_id Kafka Consumer Group 이름 consumer 수 상관없이 꼭 설정해줘야 함 key_deserializer, value_deserializer 메세지의 키와 값의 deserialize 방법 지정 (함수) serialize 했더 것을 다시 deserialize..

Develop/DevCourseTIL

07.12 데이터 엔지니어링 68일차 - Kafka

Kafka란? 실시간 데이터를 처리하기 위해 설계된 오픈소스 분산 스트리밍 플랫폼 데이터 재생이 가능한 분산 커밋 로그 (Distributed Commit Log) 한번 기록되면 영구적임 Scalability와 Fault Tolerance를 제공하는 Publish-Subscription 메시징 시스템 Producer-Consumer (Publish-Subscription) High Throughput과 Low Latency 실시간 데이터 처리에 맞게 구현됨 분산 아키텍처를 따르기 때문에 Scale out 이란 형태로 스케일 가능 서버 추가를 통해 Scalability 작성 (서버=Broker) 정해진 보유기한 (default=일주일) 동안만 메시지를 저장 Eventual Consistency 100대 서..

Develop/DevCourseTIL

07.04 데이터 엔지니어링 62일차 - Spark

Spark 데이터 시스템 아키텍처 데이터 병렬처리가 가능하려면? 1. 데이터가 먼저 분산되어야 함 하둡 맵의 데이터 처리 단위는 디스크에 있는 데이터 블록 (128MB) hdfs-site.xml에 있는 dfs.block.size 프로퍼티가 결정 Spark에서는 이를 파티션이라고 부름. 파티션의 기본 크기도 128MB spark.sql.files.maxPartitionBytes: HDFS등에 있는 파일을 읽어올 때만 적용됨 2. 나눠진 데이터를 각각 따로 동시 처리 맵리듀스에서 N개의 데이터 블록으로 구성된 파일 처리시 N개의 Map 태스크가 실행 Spark에서는 파티션 단위로 메모리로 로드되어 Executor가 배정됨 처리 데이터를 나누기 -> 파티셔닝 -> 병렬처리 적절한 파티션의 수 = Executo..

Develop/DevCourseTIL

07.10 데이터 엔지니어링 66일차 - 빅데이터 처리의 발전단계

데이터 처리의 일반적인 단계 데이터 수집 (Data Collection) 데이터 저장 (Data Storage) 데이터 처리 (Data Processing) 이 과정에서 서비스 효율을 높이거나 의사결정을 더 과학적으로 하게 됨 데이터 처리의 고도화 처음에는 배치로 시작 처리할 수 있는 데이터의 양이 중요 (얼마나 큰 데이터를 한꺼번에 처리할 수 있는가) 서비스가 고도화되면서 실시간 처리 요구가 생기기 시작 Realtime 처리 vs Semi Realtime 처리 동일 데이터 소비가 필요한 케이스 증가: 다수의 데이터 소비자 등장 처리량(Throughput) vs 지연시간(Latency) 처리량(Throughput): 주어진 단위 시간 동안 처리할 수 있는 데이터의 양 클수록 처리할 수 있는 데이터의 양이..

향식이
'Develop/DevCourseTIL' 카테고리의 글 목록