전체 글
-
[Spark] fold, reduce 알아보기 ( RDD, Action, Aggregation )Spark 2024. 1. 19. 23:10
- 목차 들어가며.이번 글에서는 Spark 의 Action Operation 중의 하나인 fold 에 대해서 알아보려고 합니다.fold 는 reduce, aggregate 와 함께 대표적으로 사용되는 Action 함수 중의 하나입니다.fold 함수는 reduce 함수와 매우 유사한 점이 많습니다. 그만큼 직관적으로 이해하기도 편한 함수이죠.하지만 Spark 는 Partition 이라는 개념과 더불어 fold 함수를 완벽하게 이해하기 어려운 부분이 존재하는데요.이번 글에서 fold 함수에 대해서 자세히 알아보는 시간을 가지겠습니다. Collection 자료구조에서의 reduce.먼저 일반적인 프로그래밍 언어에서 제공되는 Collection 모듈에서 사용되는 reduce 에 대해서 알아보겠습니다.제가 Col..
-
Kafka Controller 알아보기Kafka 2024. 1. 17. 17:48
- 목차 들어가며. 카프카는 여러개의 브로커들로 구성됩니다. 브로커의 역할은 토픽을 관리하고, 레코드들을 복제하며, 클라이언트인 Producer 와 Consumer 들과 소통해야합니다. 아래의 이미지는 브로커의 역할을 표현한 그림인데요. 3개의 브로커로 구성된 카프카 클러스터는 1개의 Leader Replica 인 Broker2 와 Follower Replica 인 Broker 1, 3 을 가집니다. Follower Replica 인 Broker 1 과 Broker 3 은 열심히 Broker 2 의 데이터들을 복제합니다. Follower Replica 의 큰 역할이 Replication 이기 때문이죠. 그리고 Leader Replica 인 Broker2 는 Client 와 통신하며 데이터를 생성하고 공급..
-
[ClickHouse] Compact Wide Parts 알아보기 ( part_type )Database/Clickhouse 2024. 1. 16. 21:17
- 목차 들어가며. 이번 글에서는 ClickHouse MergeTree 의 part_type 에 대해서 알아보려고 합니다. 먼저 Parts 에 대한 자세한 설명은 아래 링크로 대신하도록 하겠습니다. https://westlife0615.tistory.com/737 [ClickHouse] Parts & Partition 알아보기 - 목차 들어가며. 이번 글에서는 ClickHouse 의 MergeTree 엔진에서 사용되는 Parts 와 Partition 에 대해서 알아보려고 합니다. Partition 은 MergeTree Table 에 생성되는 데이터의 물리적인 단위입니다. Table 은 P westlife0615.tistory.com https://westlife0615.tistory.com/565 [Cl..
-
[SparkSQL] CSV DataFrameReader 알아보기Spark 2024. 1. 15. 07:02
- 목차 들어가며. 이번 글에서는 SparkSQL 의 csv DataFrameReader 와 관련된 여러가지 옵션들에 대해서 알아보는 시간을 가지려고 합니다. CSV 파일은 흔히 사용되는 파일 형식임에도 불구하고 데이터 타입에 대한 정확한 규격이 존재하지 않습니다. 공백으로 표현되는 빈 값, Null or None 데이터의 처리, 숫자 데이터와 날짜 데이터의 변환 등 SparkSQL 의 CSV Reader 옵션들을 살펴보고 차질없이 활용할 수 있도록 정리해보겠습니다. 저는 SparkSQL 2.4 버전 이후의 라이브러리를 사용하구요. Kaggle 의 Insurance 와 관련된 CSV 형식의 데이터를 토대로 CSV DataFrameReader 에 대해서 알아보도록 하겠습니다. https://www.kagg..
-
[Kafka] Replication 의 시간은 얼마나 걸릴까 ? ( kafka-reassign-partitions )Kafka 2024. 1. 14. 07:39
- 목차 들어가며. 이번 글에서는 하나의 실험을 진행하려고 합니다. 아래의 그림처럼 Replication Factor 을 1개 추가하여 모든 브로커에서 Partition 복제가 발생하는 경우, 얼마나 시간이 소요되는지를 파악하려고 합니다. 환경은 저희 로컬 컴퓨터 내에서 docker-compose 로 구현한 Kafka cluster 에서 진행하였습니다. 먼저 아래와 같이 test-topic 이라는 이름의 토픽을 생성하였구요. Partiiton 은 3, Replication Factor 는 2로 설정하였습니다. 한 Partition 당 400MB 의 용량을 가지도록 레코드를 추가하였습니다. Log File 의 크기는 아래와 같습니다. total 400M -rw-r--r-- 1 appuser appuser ..
-
Flink Window 이해하기Flink 2024. 1. 13. 10:18
- 목차 들어가며. Stateful 이란 ? 먼저 Flink DataStream 의 Window 에 대해서 알아보기 이전에 State 에 대한 이야기를 먼저 하도록 하겠습니다. State 를 활용함으로써 Stateless Stream Processing 과 Stateful Stream Processing 의 차별점이 발생합니다. Stateless Stream Processing 을 아래와 같습니다. stream.map(x -> x * 2) .filter(x -> x > 100) .flatMap((x, out) -> out.collect(NumberRange(0, x))) Stateless Stream Processing 의 대표적인 Transformation 은 Map, Filter, FlatMap 등이..
-
[Kafka Consumer] Exactly-Once 구현하기Kafka 2024. 1. 13. 05:32
- 목차 들어가며. Kafka Consumer 는 하나의 Data Processor 로써 동작합니다. 그리고 처리한 데이터를 토대로 외부 Application 들과 상호작용하게 되는데요. 예를 들어, 조회한 Topic 의 레코드를 처리하여 데이터베이스에 삽입을 한다던지. 처리한 데이터를 또 다른 Topic 으로 Produce 하거나, Email 이나 SMS 전송을 시도할 수 있습니다. 이러한 상황에서 Kafka Consumer 가 FailOver 또는 Repartitioning 에 의해서 재시작하게 되면, 일부 데이터의 손실이나 중복 처리의 위험이 발생합니다. 데이터의 손실이 발생하는 경우. 데이터의 손실이 발생하는 경우는 Offset Commit 을 너무 빨리 시도하는 경우에 발생합니다. 먼저 아래의 ..
-
Kafka Consumer Configuration 알아보기 ( session.timeout.ms, heartbeat.interval.ms, auto.offset.reset, auto.commit.interval.ms )Kafka 2024. 1. 13. 05:31
- 목차 관련있는 다른 글. https://westlife0615.tistory.com/587 Kafka Consumer Configuration 알아보기 (fetch.min.bytes, fetch.max.wait.ms, max.partition.fetch.bytes) - 목차 관련있는 다른 글. https://westlife0615.tistory.com/588 Kafka Consumer Configuration 알아보기 ( session.timeout.ms, heartbeat.interval.ms, auto.offset.reset, auto.commit.interval.m - 목차 들어가며. 이번 글에서는 Kafka Consume westlife0615.tistory.com 들어가며. 이번 글에서는 K..
-
Kafka Consumer Configuration 알아보기 (fetch.min.bytes, fetch.max.wait.ms, max.partiKafka 2024. 1. 12. 20:09
- 목차 관련있는 다른 글.https://westlife0615.tistory.com/588 Kafka Consumer Configuration 알아보기 ( session.timeout.ms, heartbeat.interval.ms, auto.offset.reset, auto.commit.interval.m- 목차 들어가며. 이번 글에서는 Kafka Consumer 의 Configuration 들 중에서 heartbeat.interval.ms, session.timeout.ms, auto.offset.reset, auto.commit.interval.ms 등 에 대해서 알아보도록 하겠습니다. heartbeat.interval.ms Kafka Cwestlife0615.tistory.com 들어가며.이번 글..
-
Docker 로 Minio Storage 구현하기BigData 2024. 1. 12. 06:38
- 목차 들어가며. Docker Container 를 기반으로 Minio Storage 를 생성하는 방법에 대해서 알아보도록 하겠습니다. AWS S3 같은 Object Storage 는 Data-Lake 의 용도로 활용됩니다. 그래서 Kafka-Connect, Spark, Flink 와 같은 데이터 프로세싱 어플리케이션에 의해서 DataSource, DataSink 의 타겟으로 활용됩니다. DataLake 를 구성하기 위한 첫단계로서 로컬 환경에서 Minio Storage 를 구성하는 방법에 대해서 알아보도록 하겠습니다. Minio Container 실행하기. Production 환경에서 bitnami 의 도커 이미지나 Helm Chart 가 흔히 사용됩니다. 이번에서도 bitnami/minio 이미지를..