분류 전체보기
-
[Clickhouse] Docker 로 Clickhouse 구현하기Database/Clickhouse 2024. 2. 17. 17:05
- 목차 들어가며. 이번 글에서는 Docker 를 활용해서 Clickhouse 를 구축하는 글을 작성하려고 합니다. 사용할 Docker Image 는 bitnami/clickhouse 이미지입니다. 간단한 MergeTree 엔진의 Table 을 생성하고 데이터를 취급하는 예시들을 작성할 예정입니다. bitnami/clickhouse 이미지를 사용하는 이유는 추후에 Kubernetes 에서 Clickhouse 를 구축하는 상황에서 Bitnami Helm Repo 의 Clickhouse Chart 가 사용됩니다. 그래서 yandex 를 포함한 다른 배포버전보다 bitnami 를 선택하였습니다. Clickhouse Docker Container 구현하기. 아래 명령어를 통해서 Clickhouse Contain..
-
[ClickHouse] Multi Sharding 구현하기 ( Docker, Shards )Database/Clickhouse 2024. 2. 17. 16:21
- 목차 들어가며.ClickHouse 는 Multi Sharding 을 구현할 수 있습니다.Distributed Table Engine 을 통해서 생성되는 MergeTree Family 들이 존재하며,Distributed Table 들은 Partition Key 를 통해서 여러 ClickHouse Node 들로 분배되어 저장됩니다.Distributed Table 을 잘 설명할 수 있는 사진 몇장을 아래에 첨부해두었습니다.이 이미지 자료를 통해서 좀 더 상세히 설명드리면,ClickHouse 는 여러 노드들로 구성되어 하나의 클러스터를 구성할 수 있습니다.만약 2개의 서버로 클러스터를 구성한다면 2개의 Sharding 을 적용하거나1개의 Shard 에서 Primary - Replica 를 1개씩 적용할 수도..
-
[Kubernetes] HPA 알아보기 ( Horizontal Pod Autoscaler )Kubernetes 2024. 2. 16. 22:56
- 목차 들어가며. 이번 글에서는 Kubernetes 의 HPA (Horizontal Pod Autoscaler) 에 대해서 알아보는 시간을 가지려고 합니다. ReplicaSet 또는 Deployment 로 여러 개의 Pod 를 손쉽게 운용할 수 있습니다. 이는 HA 의 관점에서 안정적으로 Pod 를 일정 갯수만큼 유지시키는 Kubernetes 의 기능인데요. 이들은 반드시 일정 갯수라는 제한이 있기 때문에 리소스의 부하 상태에 따라 유연히 Scale In/Out 이 불가능합니다. Kubernetes 에서는 이러한 관점에서 Autoscaler 를 제공합니다. HPA 세팅하기. HPA 는 CPU 또는 메모리의 상황에 따라서 유연하게 Pod 가 Scale In/Out 됩니다. 실제로 테스트를 통해서 Kube..
-
[MySQL] Master Slave 구성해보기 ( Replication , Replica )Database 2024. 2. 16. 22:56
- 목차 들어가며. 이번 글에서는 두개의 MySQL 을 통해서 Master - Slave 구성을 해보려고 합니다. Docker 를 기반으로 2개의 MySQL Container 를 생성하고, 하나의 Master 그리고 다른 하나를 Slave 로써 동작하게 설정합니다. MySQL 구성하기. 먼저 Master 와 Slave 의 my.cnf 를 설정합니다. log-bin 설정은 binlog 파일의 prefix 에 해당하는 문자열을 설정하는 옵션이구요. binlog, relay-log 에 대한 설정을 추가합니다. 그리고 Replication 을 위한 USER 와 GRANT 정보를 생성하는 init.sql 또한 생성하였습니다. cat select * from test.test_table; +------+------..
-
[Clickhouse] Shard & Replica Cluster 구성하기Database/Clickhouse 2024. 2. 14. 07:14
- 목차 들어가며. 이번 글에서는 docker-compose 를 활용하여 Clickhouse Cluster 를 구성하는 내용을 작성하려고 합니다. ClickHouse 의 docker-compose Recipes 에서 설명하는 내용을 토대로 작성하였구요. Shard 와 Replica 의 다양한 조합과 Clickhouse-Keeper 가 함께 클러스터를 구성합니다. 아래 링크는 Clickhouse docker-compose Recipes 에 대한 Github 링크입니다. https://github.com/ClickHouse/examples/tree/main/docker-compose-recipes/recipes https://github.com/ClickHouse ClickHouse ClickHouse ha..
-
[Flink] JSON FileSink 만들어보기 (Row Format)Flink 2024. 2. 12. 10:12
- 목차 들어가며. 이번 글에서는 Flink DataStream Connector 중에서 File Sink 에 대해서 다루어보려고 합니다. 특히 JSON File 을 취급하는 File Sink 에 대해서 작성할 예정이구요. 관련된 구성요소들과 특징들에 대해서 작성해보겠습니다. Row-encoded Format. JSON 파일의 특징은 텍스트 기반의 파일이면서 Row 단위로 데이터를 저장합니다. 이는 csv 파일과 동일한 특징을 가집니다. FileSink Connector 는 인코딩을 수행하기 위해서 Row 또는 Bulk 기반의 포맷이 존재하며, JSON 파일은 Row 기반의 인코딩 포맷을 사용합니다. Stream Data 를 처리하는 Row Format FileSink 는 다음과 같이 구성됩니다. 0 부..
-
[Flink] Tumbling Time Window 알아보기 (TumblingEventTimeWindows)Flink 2024. 2. 12. 08:33
- 목차 들어가며. Tumbling Time Window 는 DataStream 를 시간 단위로 구분지을 수 있는 Windowing 방식입니다. Tumbling Window 는 fixed-size 와 non-overlapping 의 특징을 가집니다. 이를 그림으로 표현하면 아래와 같은데요. Tumbling Time Window 의 시간 기준은 분, 시간, 일에 구애받지 않고 자유롭게 설정할 수 있습니다. 그리고 고정된 시간 크기만큼 데이터 스트림을 작업 청크 단위로 나누어 관리합니다. Tumbling Time Window 예시. 아래 예시는 "2023-01-01 00:00:00" 시간부터 1시간 간격으로 5일간의 시각 정보를 생성하는 예시 프로그램입니다. Instant class 를 Event 로써 사용..
-
[Flink] Window AllowedLateness 알아보기 (Watermark)Flink 2024. 2. 12. 08:33
- 목차 들어가며. AllowedLateness 은 Window Operation 에서 사용되는 옵션입니다. AllowedLateness 는 이름 그대로 지연됨을 허용한다는 의미인데요. Flink 와 같은 이벤트 스트리밍 처리 도메인에서는 모든 이벤트들이 뒤섞인 순서로 유입된다는 대전제가 존재합니다. 네트워크 지연이 가장 큰 원인인데요. 데이터 소스에서 데이터가 생성된 순서대로 이벤트가 유입된다는 보장이 없습니다. 그래서 Window Operation 의 AllowedLateness 설정을 통해서 순서가 뒤섞인 이벤트들을 순서대로 처리할 수 있습니다. 위 이미지처럼 1, 2, 3, 4 의 순서대로 데이터는 생성됩니다. 하지만 복잡한 네트워크를 통하게 되면, Flink Application 으로 유입되는 ..
-
[Hadoop] MapReduce Combiner 알아보기Hadoop 2024. 2. 11. 10:26
- 목차 Combiner 란 ? Combiner 의 내부 동작은 Reducer 와 유사합니다. 다만 차이가 있다면, 실행되는 노드의 위치입니다. Combiner 는 Mapper 가 위치한 노드에서 실행됩니다. 그래서 Combiner 는 보통 최적화 기법으로 사용되는데요. Reducer 가 수행해야할 작업을 Combiner 단계에서 미리 처리하여 Shuffling 되는 데이터의 양을 줄일 수 있습니다. 유명한 예시인 Word Count 관련 MapReduce 를 예로 들면, 중복이 많은 Word 에 대한 Count 를 계산할 때에 Combiner 가 존재하지 않는다면 모든 Key-Value Pairs 는 Shuffling 의 대상이 됩니다. 이 과정에서 Combiner 는 중복적인 Word 를 일차적으로 ..
-
[Kafka] Transaction Coordinator 알아보기Kafka 2024. 2. 7. 23:02
- 목차 들어가며. Kafka Consumer 입장에서 Group Coordinator 가 존재하듯이, Kafka Producer 는 Transaction Coordinator 가 존재합니다. Kafka Producer 의 Transaction 처리를 위해서 특정 Broker 는 Transaction Coordinator 로써 동작하게 됩니다. Transaction Coordinator 는 어떻게 결정될까 ? 먼저 Transactional Producer 에 의해서 Transaction 이 최초로 실행되면, Transaction State 를 기록하기 위한 __transaction_state Topic 이 생성됩니다. Transaction Coordinator 는 하나의 Broker 입니다. 아래 이미지..