Programming
-
트리노에 고가용성을 더해줄 Trino GatewayProgramming 2025. 8. 13. 18:45
개요트리노 게이트웨이는 로드 벨런서, 프록시 서버, 멀티 클러스터를 위한 다양한 설정이 가능한 라우터 역할을 함lyft가 개발한 후 오픈소스화한 프로젝트 현재는 Trino 레포지토리 하위에 존재Pain point코디네이터의 HA가 불가능하기 때문에 Trino의 코디네이터는 SPOF라서 장애 상황에 취약함(코디네이터 장애시 모든 실행중인 쿼리 중단)코디네이터의 큐가 한정되어있어서 워커의 자원이 충분하더라도 모든 쿼리의 파싱과 분석, 최적화가 하나의 코디네이터에서 처리되기 때문에 쿼리 수가 증가하면 코디네이터의 CPU/메모리 부하가 급증하여 대기시간이 증가함업데이트시에 클러스터가 중지됨. 롤링업데이트가 되더라도 기존에 워커에서 작업중인 쿼리가 초기화됨Advantages고가용성 확보특정 워크로드나 특정 쿼리 ..
-
[트러블슈팅]DuckDB에서 복수의 parquet파일에 접근할때 컬럼을 못찾는 문제Programming/python 2025. 3. 30. 23:55
SELECT a, b, c, d, fFROM read_parquet("s3://some-data/schema_name/table_name/base_date=*/*", hive_partitioning=true)WHERE base_date = '2025-03-26'S3에 있는 하이브 파티셔닝된 폴더에 parquet파일이 저장되어있다고 했었을때, 위와 같은 쿼리로 duckdb sql같은 메소드를 사용할때 아래와 같은 에러가 발생한다.---------------------------------------------------------------------------BinderException Traceback (most recent call las..
-
스파크에서 지원하는 압축 알고리즘 비교Programming 2024. 6. 26. 23:54
압축 알고리즘 비교Configuration - Spark 3.5.1 Documentation Configuration - Spark 3.5.1 DocumentationSpark Configuration Spark provides three locations to configure the system: Spark properties control most application parameters and can be set by using a SparkConf object, or through Java system properties. Environment variables can be used to set per-macspark.apache.org현재 스파크 3.5 기준 압축 알고리즘으로 snappy, g..
-
당신의 인덱스는 안녕하신가요?(커버링 인덱스)Programming 2024. 3. 31. 21:10
인덱스를 적용하는 이유 인덱스는 데이터베이스 내의 데이터를 빠르게 찾을 수 있도록 도와주는 데이터 구조이다. 인덱스를 사용하지 않은 상태에서 데이터를 검색하면, DBMS는 요청된 데이터를 찾기 위해 테이블의 모든 행을 순차적으로 검색해야 한다. 이러한 과정을 풀 테이블 스캔(Full Table Scan)이라고 하며, 대량의 데이터가 저장된 테이블에 풀 스캔을 할 경우에 많은 시간이 소요될 수 있다. 인덱스를 적용하면, DBMS는 인덱스를 통해 데이터의 위치를 빠르게 찾아 접근할 수 있게 되어 검색 속도가 향상된다. 대부분 인덱스를 설명할 때 책의 목차에 비유하는 이유도 이 때문이다. 인덱스는 검색 시간과 쿼리 실행 시간을 단축시킴과 동시에 테이블 전체가 아닌 인덱스 내에서 스캔하기 때문에 DB에 부하도 ..
-
SparkSQL에서 증분 테이블 처리하기Programming 2024. 2. 25. 21:49
배경ETL처리시 Spark를 통해 Trasfroming을 하는데 1000만 로우가 넘는 테이블을 이관하며 기존 Overwrite하는 방식이 아닌 증분되는 양만큼만 반영하기로 함updated_at 컬럼으로 증분되는 양만 읽어서 기존 테이블에 upsert를 하는 방식현재 운영하는 데이터웨어하우스는 일반적인 RDB가 아닌 HDFS기반이므로 불변성을 위해서 upsert를 할 수 없음옵션Hudi or Delta Lake or Iceberg와 같은 동시성이 제공되는 오픈소스를 사용한다현재 실시간 테이블을 위해서 Delta Lake를 사용되고 있지만 이관을 위해서는 따로 사용하고 있지 않으므로 다른 테이블과 사용성 및 통합을 위해서 해당 옵션은 보류SQL 윈도우 함수를 통해서 증분된 만큼 처리하고 기존 값과 UNIO..
-
PrestoSQL to Trino Migration 할 때 주의할 점Programming 2023. 12. 22. 23:07
prestoSQL to Trino라고는 하지만 prestoSQL은 사실 Trino로 리브랜딩되기 전의 이름이므로 Trino의 메이저 업데이트라고 봐도 무방하다. 이 포스팅에서는 트리노의 메이저 업데이트 할 때 신경써야할 점들을 모은 내용이다. 사실 메이저 업데이트를 진행한 것은 아주 오래전이고 구성한 인프라별, Trino에 설치한 플러그인별로 증상이 상이하며 지엽적인 내용이 될 가능성이 높다고 생각해서 그 당시 포스팅으로는 작성하지 않고 있었던 찰나에 그래도 부분적으로 나마 나와 동일한 증상을 겪고 있을 사람들을 위해 기록을 남긴다. 메이저 업데이트를 하는 것보다 새로 설치하는 것이 낫다 항상 앞자리가 바뀌는 업데이트를 진행할 때마다 느끼는 생각이다. 업데이트를 진행하다보면 지금당장은 티가 안나더라도 어..
-
kafka retention 용량 설정 값 이해하기Programming 2023. 5. 1. 01:17
overview retention.bytes옵션을 통해 retention 용량을 1GB로 설정했었는데 토픽의 용량이 7GB가 넘어가는 것들이 생겼다. 브로커당 용량이라고 이해해도 3GB넘지 않을 것이고 리플리케이션 팩터가 2라서라기엔 2GB를 훌쩍넘는다. 7GB라니...오버에도 한참 오버했다. 도대체 이 설정값들은 각각 무엇을 의미하는 것이고 어떤 매커니즘으로 메세지들이 지워지는지 파악해보자 Topic retention 용량 설정에 대해서 알아보기 전에 토픽에 대해서 간단히 정리해보자 partitions 리더 파티션과 팔로워 파티션으로 구분(replication-factor가 1인 경우 리더 파티션만 존재) 리더 파티션은 프로듀서 또는 컨슈머와 직접 통신하는 파티션으로 읽기, 쓰기 연산을 담당 팔로워 파..
-
debezium server 정리 및 트러블슈팅Programming/java 2023. 2. 6. 00:27
개요 CDC(Change Data Capture) CDC는 변경 데이터 켑처이라는 의미로 주로 데이터베이스와 같은 데이터 스토어의 데이터 변경을 포착하여 ETL, 감사(audit), 캐싱과 같은 다양한 후속 처리를 하는데 사용한다. Debezium 이름은 DB와 주기율표에 많은 요소 이름에 사용되는 -ium 접미사의 조합 Debezium은 다양한 데이터베이스를 모니터링하며 모든 이벤트를 대상으로 변경 사항을 분을 거의 즉시 응답하는 분산 오픈 소스 플랫폼이다. debezium은 결함과 실패를 허용하도록 설계되었고 수행하는 유일한 방법은 분산 시스템을 사용하는 것이다. Debezium은 모니터링 프로세스 또는 커넥터를 여러 시스템에 분산시킬 수 있고 문제가 발생하면 커넥터를 다시 시작할 수 있다. 카카오커..