데이터 엔지니어링

    [Airflow] Webserver 속도 개선

    프로젝트에서 사용중인 airflow의 webserver 속도가 느리다는 피드백이 종종 있었습니다.webserver의 ui이 등장할 때, Variables, Connetions의 정보를 화면에서 보여줄 때같은 상황에서 짧으면 3초 길면30초 이상 화면이 느리게 등장했던 이슈가 있어 약간의 속도개선을 한 경험을 공유하려고 합니다. 체감상 빨라진 경우이며, 다양한 케이스를 확인한 것이 아닙니다.구글링을 해보아도 속도 문제를 개선한 사례들이 많이 없어, 원인을 찾아보며 개선하려고 하고 있습니다. 몇가지 영향을 주었을 것 같은 작업들을 나열하겠습니다.1. Airflow DB 관련 작업현재 사용중인 airflow는 kubernetes위에서 동작하며, kubernetes excuter를 사용하고 있습니다.  Kube..

    [Trino] id/password 적용하기

    현재 투입된 프로젝트에서 Trino 쿼리엔진을 활용하고있습니다. Fast API를 이용하여 API로 Trino에 쿼리를 날리고 있지만,특정 사용자의 경우 직접 데이터에 쿼리를 날리고 싶다는 클라이언트의 요구사항이 있었습니다.Trino에서 간단하게 id/password로 보안요소를 적용해보려고 합니다. 실습환경은 Docker를 사용하였고, 실 운영 환경은 K8S로 운영되지만 이번예제는 간단하게 config 수정을 볼 것이기 때문에config에 집중하면 좋을 것 같습니다. 참고링크 : https://trino.io/docs/current/security/password-file.html Password file authentication — Trino 463 DocumentationPassword file ..

    [PyFlink] 기록 # 2 Iceberg 도입시 Error

    진행중인 프로젝트에 Iceberg를 도입 중 등장한 Error 처리에 대한 기록NoClassDefFoundError: org/apache/hadoop/conf/Configurationjava.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration at org.apache.iceberg.flink.FlinkCatalogFactory.clusterHadoopConf(FlinkCatalogFactory.java:211) at org.apache.iceberg.flink.FlinkCatalogFactory.createCatalog(FlinkCatalogFactory.java:139) at org.apache.flink.table.factories.Fac..

    [PyFlink] 기록#1 Dictionary in List 처리

    현재 진행하는 프로젝트에 flink를 도입하려고 기존에 있던 파이프라인을 pyflink로 코드화하여 정상동작을 하고 있는지 테스트를 진행중이다.flink에 대한 자료뿐 아니라 pyflink에 대한 자료가 적고, 의지할 수 있는것은 공식문서밖에 없기 때문에 코드를 한줄한줄 바꿔가며 적용해보고 있다.이번 포스팅에서도 프로젝트 상황과 비슷하게 구현하여, 테스트한 내용과 기록을 남기려고 한다.배경먼저 현재 프로젝트에는Kakfa에 저장되어 있는 데이터를 가져와 Flink로 전처리, partitioning 하여 S3에 parquet format으로 적재하고 있다.이번 포스팅에서는 Kafka에서 데이터를 가져와 Flink로 전처리하여 print하는 작업에 대하여 기록하려고 한다.Kafka에 저장되어 있는 데이터는 아..

    [Flink] Flink Architecture

    최근 진행하고 있는 프로젝트에 pyflink를 도입하기 위하여 기술 연구를 진행하고 있습니다.flink 공식문서를 보고 학습 및 번역한 내용을 정리하였습니다. Flink ArchitectureFlink 분산 시스템이며 스트리밍 애플리케이션을 실행하려면 컴퓨터 리소스의 효과적인 할당 / 관리가 필요함Hadoop YARN 및 Kubernetes 와 같은 클러스터 리소스 관리자와 통합됨Standalone cluster 또는 라이브러리로 실행되도록 설정할 수 있음Standalone cluster는 머신에서 직접,  container로 혹은 Yarn과 같은 리소스 프레임워크로 관리됨TaskManager는 Jobmanager에 연결하여 자신이 사용가능한 것으로 알리고 JobManager에서 작업을 할당받음Anato..

    [kafka] kafka cluster 구축하기

    데이터 플랫폼 운영업무를 진행하면서 예전 장비가 노후되어 신규 서버가 들어오면서 kafka cluster를 구축하는 일이 생기기도 했고,EOS 문제도 있으며 보안상의 이유로 신규 카프카를 설치해야 하는 경우도 있었습니다. 물론 예전버전의 카프카를 사용하는 경우 rolling upgrade를 진행 할 수도 있습니다. rolling upgrade는 나중에 이야기를 해보려고 합니다. 이번 포스팅에서는 kafka cluster를 구축해보려고 합니다. 각 버전은 다음과 같습니다. zookeeper : 3.6.4 kafka : 3.0.0 monitoring : kafka for ui 현재 업무에서는 예전에 구축했던 버전들을 사용하고 있고, rolling upgrade를 위한 복선으로 위와 같은 버전을 사용하겠습니다..