| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- Python
- logstash
- elasticsearch
- PostgreSQL
- fluentd
- MariaDB
- elasticearch
- naverdevelopers
- ui for kafka
- MongoDB
- kafka ui
- pyspark
- kafka connect
- PrestoDB
- kibana
- Kafka
- SSL
- Today
- Total
목록전체 글 (33)
Dev_duri
Kafka Perf Test 란 Kafka 내부에서 임의로 트래픽을 발생시켜 순수하게 카프카의 처리량을 테스트할 수 있는 명령 스크립트입니다.메세지의 사이즈와 수를 정할 수 있고, 전송된 메세지에 대한 처리량과 지연율 등을 확인할 수 있습니다. 명령어 정리Producer Commandkafka-producer-perf-test.sh \--topic \--num-records \--record-size \--throughput \--producer-props bootstrap.servers=--producer.config config/producer.properties Topic : 토픽명Num-records : 송신 메세지 총 개수Record-size : 메세지 당 크기 Throughput : ..
Kafka는 성능과 안정성을 동시에 보장하기 위해 OS에 의존한 파일 시스템 접근 방식을 적극적으로 활용합니다. fsync()와 **제로카피(Zero-Copy)**는 Kafka의 이러한 설계 철학을 보여주는 요소입니다.1. fsync()란?*fsync()*는 POSIX 표준 시스템 호출로, 파일의 내용을 **디스크에 강제로 기록(flush)**하는 역할을 합니다.보통 데이터를 디스크에 쓰는 작업은 OS의 페이지 캐시를 통해 처리되는데, 이 과정에서는 데이터가 디스크에 즉시 기록되지 않고, 메모리에만 저장될 수 있습니다.fsync()는 OS 커널에 **"현재 파일 내용을 디스크에 강제로 기록하라"**고 명령하여, 데이터를 안전하게 보존할 수 있도록 보장합니다.2. Kafka에서의 fsync() 활용Kafk..
Thread Pool 사용 이유 프로세스 중 병렬 작업처리가 많아진다 스레드 개수가 증가되고 그에따른 스레드생성과 스케줄링 발생 CPU가 바빠져 메모리 사용량이 늘어난다. 시스템성능이 저하 갑작스러운 병렬작업의 폭증에 따른 스레드 폭증 스레드 생성과 스레드 종료의 오버헤드를 줄여 성능을 향상 위 같은 상황을 위해 사용하는 것이 스레드 풀이다. 작업처리에 사용되는 스레드를 제한된 개수만큼 미리 정해놓고 작업큐 (Queue)에 들어오는 작업들을 하나씩 스레드가 맡아 처리한다. 작업처리 요청이 폭증되어도 스레드의 전체개수가 늘어나지 않도록 제한해서 하나씩 처리하기 때문에 시스템 성능이 급격히 저하되지 않는다. ExecutorService Executors 는 ExecutorService를 생성하며 다음 매소드..
더보기 개요 카프카는 최초 설정 시 보안 설정을 하지 않으면 카프카와 통신이 가능한 모든 클라이언트와 연결이 가능합니다. 이는 보통 사내의 안전한 네트워크에서 운용하는 경우이기 때문에 보안을 적용하지 않는 것으로 사용자의 입장에서는 편리하지만 외부에서 접속하는 사용자에 대해서는 정보 유출의 위협이 존재합니다. 이런 취약한 부분을 보완하기 위해 암호화(SSL), 인증(SASL), 권한(ACL)의 세 가지 보안 요소가 필요합니다. 여기서 암호화는 카프카와 카프카 클라이언트 사이의 통신에 암호화를 적용하는 것입니다. 일반적으로 SSL을 사용합니다. SSL(Secure Socket Layer)은 서버와 서버 사이, 서버와 클라이언트 사이에서 통신 보안을 적용하기 위한 표준 암호 규약입니다. 마치 웹에서 HTTP..
ORACLE SELECT * FROM TABLE_1 A, TABLE_2 B WHERE A.COL1 = B.COL1(+) AND A.COL2 = B.COL2(+) VERTICA SELECT * FROM TABLE_1 A LEFT JOIN TABLE_2 B ON A.COL1 = B.COL2 AND A.COL2 = B.COL2 - Vertica doesn't support more than 1 level of correlated sub-queries. - You should convert them into JOINs. - Vertica SubQuery 제약에 대한 공식문서 내용 : https://www.vertica.com/docs/9.2.x/HTML/Content/Au..
Mongo DB는 Json 기반의 document 모델을 사용하는 확장성이 좋은 NoSqlDB 입니다. 또한 스키마가 없어 데이터 변경에 대해 유연하고, 다양한 형태의 데이터를 한번에 담을 수 있어 여러 정보를 한번에 확인할 수 있습니다. MongoDB의 데이터는 Application에서 다루는 오브젝트와 1:1로 매칭되기에 개발자는 데이터를 쉽게 이해하고 빠르게 개발할 수 있습니다. 위를 포함한 여러 장점들로 인해 비즈니스 상에서 MongoDB를 많이 운용하는 추세입니다. 그러하여 개인 프로젝트로 MongoDB를 활용해보려고 합니다. 먼저 운영중인 Kafka와 같이 사용하기 위해 Sink Connector 구성을 해주었습니다. 커넥터를 구성할 때는 "debezium-debezium-connector-m..
Kafka 모니터링 툴 중 오픈소스로 제공되는 UI for Kafka를 구축하였습니다. Apache Kafka용 UI는 Apache Kafka 클러스터를 모니터링하고 관리하기 위한 무료 오픈 소스 웹 UI입니다. Apache Kafka용 UI는 데이터 흐름을 관찰 가능하게 만들고 문제를 더 빠르게 찾아 해결하며 최적의 성능을 제공하는 간단한 도구입니다. 가벼운 대시보드를 사용하면 브로커, 주제, 파티션, 프로덕션 및 소비와 같은 Kafka 클러스터의 주요 메트릭을 쉽게 추적할 수 있습니다. 해당 tool은 spring boot를 기반으로 작동하며 다른 카프카 모니터링 및 관리 도구들과 비교했을 때 보기 쉬운 가시성과 세밀한 옵션 설정 등의 장점이 있습니다. 다만, CSS 중 외부에서 데이터를 로드하는 부..
Spark를 사용한 위와 같은 파이프라인 demo를 구성하였습니다. 특정한 파일 확장자(CSV, JSON 등)을 스파크(PySpark)를 통해 RDB에 저장합니다. import pyspark from pyspark.sql import SparkSession from pyspark.sql.types import StructType,StructField, StringType, IntegerType from pyspark.sql.types import ArrayType, DoubleType, BooleanType from pyspark.sql.functions import col,array_contains ip = "postgre.sql.local.host" port = 5432 user = "username..