나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

전체 글 103

[Spark] 2.4.0 - bucket pruning

spark의 기능을 대략적으로만 파악하고 넘어가면 공부가 덜 되는 것 같아 각 버전별로 추가된 내용을 분석해 보기로 하였다. 현재(2020-03-10) 기준 가장 최신 버전은 2.4.5인데 2.4.x 버전에서 추가된 기능부터 정리해 보고자 한다. 이번 글에서 정리한 내용은 bucket pruning 이다. Bucket 제목에서 나오는 bucket의 개념부터 살펴보자. 아래 정의는 Hive 문서에서 발췌했다. Buckets (or Clusters): Data in each partition may in turn be divided into Buckets based on the value of a hash function of some column of the Table. For example the pag..

Big Data/Spark 2020.03.10

I/O의 동작방식 이해

운영하고 있는 시스템에서 사용한 zero copy 개념을 습득하기에 앞서 I/O에 대한 동작 방식을 이해하기 위해 정리한 글이다. How Java I/O Works Internally at Lower Level?의 내용을 요약한 수준이며 추가로 이해가 필요한 개념들을 다른 문서에서 발췌해서 정리했다. I/O의 기본적인 동작방식 input/output는 버퍼로부터 데이터를 넣고 빼는 것을 의미한다. Process 내부 메모리로 디스크에 저장된 데이터를 가져오는 첫 단계로 read() 시스템 콜을 한다. 그럼 커널은 디스트로부터 데이터를 커널 영역의 버퍼에 넣고 캐싱을 한다. 커널 영역에 있는 데이터를 다시 process가 요청했을 때는 버퍼에 있는 데이터를 전달한다. Virtual Memory Virtua..

Linux 2020.02.13

[Kafka] Kerberos 인증 #2

지난 글에 이어서 Kafka Kerberos 인증 설정과 Client (Producer) 테스트에 대한 내용을 설명한다. 바로 시작해 보자. 1. Kafka Broker 설정 Kafak Broker는 2가지 설정을 수정해야 한다. 인증정보를 적는 JAAS 파일을 추가하고 서버 설정 (server.properties)에서 일부 항목을 추가/수정해야 한다. JAAS 파일의 내용을 먼저 보자. 설정에서 주의깊게 볼 부분은 principal이다. 여기에 지난 글에서 만들었던 Broker 용도 Keytab 파일의 경로를 넣어준다. JAAS 파일의 역할은 시작할 Broker에게 Kerberos principal의 정보를 제공해 주는데 있다. 두 번째는 server.properties에서 수정 사항이다. listen..

Big Data/Kafka 2020.02.05

[Kafka] Kerberos 인증 #1

이번 글에서는 Kafka의 인증 방식 중 Kerberos를 적용하는 방법을 정리하고자 한다. Kerberos는 Hadoop에서도 많이 사용하는 기술이기에 개념을 이해하는 것도 중요하다. 그리고 Kafka에서는 Kerberos 인증을 어떻게 설정하는지도 실습해보자. 처음에는 하나의 글로 Kerberos 서버준비 + Kafka 연동까지 하려고 했으나 내용이 길어져 2개의 글로 나누어서 정리를 하고자 한다. 참고로 Kafka 인증에 대해 썼던 다른 글도 있으니 참고하면 좋다. [Kafka] 인증 - SASL/PLAIN [Kafka] Configurable SASL callback handler 1. Kerberos Kerberos는 티켓을 기반으로 동작하는 암호화 프로토콜로서 클라이언트/ 서버 사이의 인증을 ..

Big Data/Kafka 2020.02.03

[Spark] Dataset

이번 글은 스파크 완벽 가이드의 내용을 대부분 발췌한 것이다. DataSet은 구조적 API의 기본 데이터 타입이다. DataFrame은 Row 타입의 DataSet이다. (DataFrame == DataSet[Row]) 도메인별 특정 객체를 효과적으로 지원하기 위해 '인코더 encoder'라 부르는 특수한 개념이 필요하다. 인코더는 도메인별 특정 객체 T를 스파크의 내부 데이터 타입으로 매핑하는 시스템을 의미한다. DataFrame이나 '표준' 구조적 API를 사용한다면 Row 타입을 직렬화된 바이너리 구조로 변환합니다. DataSet을 사용할 시기 DataFrame 기능만으로는 수행할 연산을 표현할 수 없는 경우 성능 저하를 감수하더라도 타입 안정성(type-safe)을 가진 데이터 타입을 사용하고 ..

Big Data/Spark 2020.01.14

[NiFi] Hello World!

이번 글에는 Apache Nifi에 대해서 소개하고자 한다. Big Data에 대한 ETL 작업을 많이 하고 있는데 이러한 작업을 편리한 UI로 쉽게 등록해서 수행할 수 있는 NiFi를 소개하고자 한다. 필자로 NiFi에 대해서 이제야 입문한 상태이고 추가적인 기능들에 대해서 더 분석하면서 정리하고자 한다. NiFi에 대한 개념과 간단한 실습은 아래 강좌를 통해서 배울 수 있었는데, NiFi의 Hello World를 하고자 하는 분들에게 추천한다. UDEMY - Introduction to Apache Nifi (Hortonworks DataFlow - HDF 2.0) NiFi의 중요 개념 정리 NiFi을 실제로 사용하기에 앞어서 중요한 개념들만 정리한다. 용어 정리 FlowFile 일반적으로 데이터를 ..

Big Data/NiFi 2020.01.10

Proxy를 통한 Restful API 호출 by Java

최근에 방화벽으로 외부 인터넷과 연결이 되지 않은 서버의 데이터를 외부로 전송할 케이스가 생겼다. 그래서 특정 서버와의 연결만 허용하는 Proxy 서버를 하나 두어서 처리하고자 했다. 간단한 내용에 대해서 글로 정리한 이유는 Proxy 호출을 할 때 인증 방법과 Java에서 Proxy 설정을 어떻게 하는지 찾아본 내용을 기록하기 위함이다. 정리할 내용은 크게 2가지 이다. 1. Java Proxy 설정 2. Proxy 인증 1. Java Proxy 설정Proxy 설정을 시스템 전체 설정으로 하지 않고, Java Application 단위로 설정하려고 할 때 어떻게 하는지 찾았다. 오라클 자바 문서 중에 Java Networking and Proxies에 관련 내용이 기술되어 있다. 먼저 시스템 prope..

Language/Java 2019.12.09

[Kafka] Introducing ksqlDB

이번글에서는 2019-11-20 날짜에 confluent 블로그에 게시된 글을 토대로 ksqlDB를 전반적으로 소개하고자 한다. 아래 글의 내용은 대부분 confluent 블로그의 내용을 이해한 만큼 정리한 것이다. 내용에서 ksqlDB의 내부 아키텍처 부분은 제외했는데 ksqlDB를 테스트해보고 아키텍처 설명과 함께 다른 글로 정리하려고 한다. ksqlDB에서 특징을 2가지로 구분해서 설명한다. Pull queries, Connector Management. Feature 1 : Pull queries 지속적인 스트림 형태로 들어오는 데이터에서 특정 키 값으로 조회하려는 것은 불가능하다. 지속적으로 변화하는 스트림에서 데이터를 밀어낸다는 의미로 push queries라는 명칭으로 부르기로 한다. 이러한..

Big Data/Kafka 2019.11.21

[Kafka] Sink Connector flush 분석

이번 글에서는 Kafka Connect 관련된 내용을 소개하고자 한다. Connect에 대한 전반적인 개요 글은 아니고 Sink Connector에서 offset 처리에 대한 내용이다. Sink Connector?Offset 관련 설명을 하기 전에 Sink Connector에 대해서는 기본적인 소개가 필요하다. 아래 그림으로 Connect의 전체적인 개념을 쉽게 이해해 보자. Connect는 크게 Source/ Sink Connector로 구성되어 있다. Sink Connector는 그림에서 표시한 부분으로서 Kafka의 데이터를 다른 저장소에 넣는데 사용한다. Sink의 사전적 의미에 '밀어넣다'가 포함되어 있는데 다른 저장소에 데이터를 밀어넣는다고 이해하면 된다. Sink Connector 내부적으로..

Big Data/Kafka 2019.10.08

[Kafka] 컨트롤러 분석

카프카의 중요 내부 로직을 분석하고 정리해 보고자 한다. 이번 글에서는 컨트롤러에 대해서 살펴보자. 그럼 컨트롤러란 무엇인가? 컨트롤러의 역할을 먼저 살펴보고 동작방식을 분석하자. A Deep Dive into Kafka Controller from confluent 1. 컨트롤러란 무엇인가?클러스터에서 하나의 브로커가 컨트롤러 역할을 한다. 브로커의 상태 체크. 죽은 브로커가 담당한 파티션의 새 리더 선출. 새롭게 선출된 리더 정보를 모든 브로커에 전달. 이름처럼 컨트롤러는 브로커들을 관리한다. 브로커가 정상적인지 상태를 체크하며 죽은 브로커가 있을 경우, 해당 브로커가 가지고 있던 파티션 리더들을 재분배 한다. 카프카는 데이터의 등록/ 소비를 파티션 리더가 모두 담당하므로 브로커의 상태 체크가 원활하..

Big Data/Kafka 2019.10.07

[Kafka] mirrorMaker v1 단점. v2는?

이 글은 Cloudera Blog의 다음글에서 대부분 가져왔으며 이해한 만큼 한글로 정리한 문서입니다. 개요필자는 Kafka들의 성격에 맞게 cluster를 분리하여 사용할 경우가 있었다. cluster를 분리하지만 일부 topic에 대해서는 분리된 cluster에 복제해서 데이터를 같이 사용해야 하는 요구사항이 있었다. 이럴 경우, MirrorMaker를 사용한다. MirrorMaker의 이름에서 유추할 수 있듯이 Mirroring 데이터를 복사해주는 역할이다. 그런데 MirrorMaker에 단점이 많이 존재해서 복제 용도로 쓰기에 부족한 부분들이 많았다. 그 단점을 개선하려는 시도가 있고 MirrorMaker v2 (이하 MMv2)로 개발이 진행 중이다. MMv2는 아직 release 되지 않았지만 ..

Big Data/Kafka 2019.07.18
반응형