Home
leeyh0216's devlog
Cancel

Apache Spark - Spark Structured Streaming Kafka Sink는 Exactly-Once를 지원하지 않는다

Spark Structured Streaming Kafka Sink의 동작에 대해 알아봅니다. 기본적인 사용법보다는 내부적으로 Kafka Sink가 어떻게 동작하는지, 왜 Spark Structured Streaming Kafka Sink의 한계에 대한 이야기를 다루고 있습니다. Spark Structured Streaming Kafka Si...

Flink Concept - Flink의 Kafka Consumer 동작 방식(1)

개요 Flink의 FlinkKafkaConsumer와 같은 High Level API를 사용하다보면 궁금해지는 점들이 있다. Kafka의 Consumer는 Pull 방식으로 데이터를 가져오는데, Flink에서는 얼마 정도의 간격으로 Pull을 수행할까? Source와 다른 Operator를 Chaining하면 Kafka로부터 데이터를 Pu...

싱글톤 패턴

싱글톤 패턴 싱글톤 패턴은 프로세스(Java에서는 JVM) 내에 1개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역 접근점을 제공하는 패턴이다. 단순하게 구현하기(Eager Initialization Singleton) 싱글톤 패턴을 가장 단순하게 구현하는 방법은 외부에서 해당 클래스의 인스턴스를 생성할 수 없도록 private 생성자를...

Flink Concept - pipeline.object_reuse

개요 이전 글에서 pipeline.object_reuse 옵션에 대해 설명하였다. 이 옵션을 사용하면 안되는 경우에 대해서는 Flink 공식 문서에 나와 있지 않으며, 이전 글에서도 제대로 설명하지 못했다. 이번 글에서는 언제 이 옵션을 사용하면 안되는지와 그럼에도 불구하고 옵션을 적용하고 싶은 경우 우회하는 방법에 대해 알아보도록 한다. pip...

LEAD, LAG 함수

개요 데이터 분석 중 사용자의 로그들을 묶어서 봐야 하는 경우가 생겼다. 예를 들자면 아래와 같다. 로그 테이블 사용자(user)와 방문일(visit_date)로 구성된 테이블이다. user visit_date A 2021-03-01 ...

Flink Concept - Operator 간 데이터 교환

개요 Flink Job의 Operator 간의 데이터 교환이 어떻게 이루어지는지 알아보고, 유의해야 할 옵션은 어떤 것이 있는지 알아보도록 한다. Flink의 Input과 Ouptut 위와 같이 3개의 Operator가 연결되어 있다고 생각해보자. 한 Operator의 출력 데이터는 다른 Operator의 입력 데이터로 사용된다. 그래프 관점...

Kerberos 개념

이 내용은 Wikipedia - Kerberos를 참고하여 작성하였습니다. Kerberos Kerberos는 보안되지 않은(un-secured) 네트워크에서 안전한 방법(secured manner)으로 노드 간 자격 증명을 수행하는 네트워크 인증 프로토콜이다. 사용자 비밀번호가 Network를 통해 교환되지 않기 때문에 MIMT(Main ...

Flink Concept - Checkpointing(1)

이 글은 Coursera - Cloud Computing Concepts, Part 1을 참고하여 작성하였습니다. 개요 스트리밍 애플리케이션은 매우 긴 시간 동안 수행되며 내부적으로 상태를 가지고 있다. 예를 들어 아래와 같이 (사용자, 페이지 체류 시간)이 입력으로 들어오고, 평균 사용자 체류 시간을 계산하는 애플리케이션이 있다고 가정하자...

Closure란?

Closure보다 먼저 알아야할 개념들 Lexical scope vs Dynamic scope Lexical scope를 사용하는 언어(C, C++, Java, Javascript 등)에서는 소스코드 내에서 변수나 함수가 정의된 위치와 Lexical Context를 기준으로 이름 참조(Name resolution)를 수행한다. 찾아야하는 이름이 내...

FoldLeft와 FoldRight 제대로 알고 사용하기

Fold Fold는 주어진 결합 함수(Combining Operation)를 데이터 구조에 대해 재귀적으로 호출하여 결과 값을 만들어내는 고계 함수(Higher-Order Function)이다. 잠시 List에 대해서 생각해보자. List는 아래와 같이 두 개로 분류할 수 있다. 빈 List(보통 Nil이라고 부르며, []로 표현한다. In...