분류 전체보기 28

Docker를 이용한 NiFi 설치

이번 포스팅은 Docker를 이용한 NiFi 설치에 대해 작성하고자 한다. Docker를 이용하면 Airflow든 NiFi든 손쉽게 설치가 가능하다는 게 정말 편리한 것 같다. 우선 설치 환경은 Windows이며, Docker for Desktop을 이용했다.  Docker 환경설정에 관한 내용은 예전에 작성해둔 포스팅을 참고하길 바란다.   Docker 환경 구성 (1)Docker는 애플리케이션을 신속하게 구축, 실행을 위해 설계된 소프트웨어 가상화 컨테이너 플랫폼이며 컨테이너를 다른 환경으로 이동하는 등 유연하게 사용가능하다. Docker를 사용하면서 중요하developer-trainee-j.tistory.com Docker 환경 구성 (2)Docker Desktop을 이용하여 간단하게 Docker를..

NiFi 2025.03.04

NiFi란 무엇인가?

오랜만에 기술 블로그를 작성해보려 한다.그동안 이런저런 핑계로 꾸준히 하지 못했지만, 이번에는 다시 열심히 해볼 예정이다!공백 기간 동안 블로그에 쓸만한 많은 주제들이 있었지만, 그중에서도 가장 많이 다뤘던 NiFi에 대해 작성하려 한다.Apache NiFi란?Apache NiFi는 데이터 흐름 자동화 및 관리를 위한 오픈 소스 소프트웨어로,데이터 수집, 변환, 처리, 전달 과정을 시각적으로 설계하고 실시간으로 제어할 수 있다.가장 큰 특징 중 하나는 드래그 앤 드롭 방식의 직관적인 UI를 제공한다는 점이다.이 부분은 Airflow와의 가장 큰 차이점이라고 생각한다.Airflow는 Python 코드 기반으로 동작하지만, NiFi는 코딩 없이도 쉽게 익힐 수 있으며, 직관적으로 파이프라인을 설계할 수 있다..

NiFi 2025.03.03

2024년을 마무리하며 적는 생각 정리

블로그를 시작하고 약 1년 8개월이라는 시간이 흘렀다.원래의 목적은 매주 또는 매달 새롭게 알게 되거나 신기했던 기술을 기록하고 싶었는데, 막상 취업을 하고 이것저것 바쁘다는 핑계로 글을 작성하지 못했던 것 같다.결국 2024년은 엄청 빠르게 지나가 버렸고, 그렇다 보니 미처 적지 못했던 올해 있었던 일들이나 나의 생각을 하나하나 정리해보고자 한다.1. 새로운 회사2024년은 새로 이직한 회사에서 많은 것을 배우며 성장할 수 있었던 한 해였던 것 같다. 업무적으로 필요한 기술뿐만 아니라 인생에 도움이 되는 사회생활이나 정말 진귀한 인연 등등...사실 이전 직장은 첫 직장이었고, 경험 없는 완전 초짜 개발자이다 보니 뭔가 의견을 피력하기보다는 주로 지시를 받고 그대로 일을 했었던 것 같다. 그러다 보니 나..

생각들 2024.12.13

Docker Swarm 이란 무엇인가?

도커를 간단하게 사용하는 방법은 주로 하나의 호스트를 기준으로 잡혀있습니다. 하지만 하나의 호스트 머신에서 도커엔진을 사용하다가 서버의 CPU나 메모리, 용량이 부족하다면 어떻게 해결해야 할까요? 간편한 방법은 "성능이 좋은 서버를 새로 구축한다"겠지만 확장성 측면에서는 좋은 방법이 아닐 수 있습니다. 왜냐하면 자원이 부족할 때마다 매번 좋은 서버를 구축할 수도 없을 뿐 아니라 비용적인 측면에서도 굉장히 비효율적이기 때문에 여러 서버를 클러스터로 만들어 자원을 병렬로 확장하는 방법을 많이 사용합니다. Docker Swarm Docker Swarm은 도커의 오케스트레이션 계층을 구현하고, 도커 엔진에 내장된 클러스터 관리 및 오케스트레이션 도구 입니다. Swarm 모드는 도커엔진 자체에 내장되어 있으므로 ..

Docker 2023.09.07

구글 빅쿼리 사용해보기

대규모 데이터를 처리하는 데이터 베이스에대해 찾아보다 보니 구글 빅쿼리(Google BigQuery)라는 데이터 웨어하우스에 대해 알게 되었다. 필자는 지금까지 HDFS를 이용한 데이터 분산 처리로 대규모 데이터를 다뤄봤을 뿐 다른 플랫폼을 사용해본적은 없었다. 빅쿼리를 알게된 김에 HDFS의 단점을 보완하는 빅쿼리를 구축해보려고한다. 구글 빅쿼리란? 인프라를 관리할 필요 없이 쿼리가 실행가는한 데이터 웨어하우스이며 클라우드 서비스를 통하여 제공되기 때문에 설치를 할 필요도 없이 RDBMS에서 사용되는 SQL 쿼리를 그대로 사용가능하다. 또한 페타바이트에 달하는 쿼리도 매우 빠른 속도로 처리가 가능하다. 하지만 장점만 있는 것은 아니다. 빅쿼리는 데이터가 무결하고,정확한것을 가정하고 사용자에게 제공하는 ..

DB 2023.08.16

MariaDB Log 확인하기

데이터 적재 작업을 하던 중 문득 실무에서 일할 때 에러가 발생하면 종종 error log를 찾아봤던 생각이 나서 mariaDB Log를 확인하고 싶어졌다. 그 당시에는 log파일에 대한 생성 설정이나 경로를 미리 잡아뒀기 때문에 필자는 log 저장위치에 가서 확인만 하면 됐다. 이번에는 내가 직접 log파일을 관리해보고자 한다. 우선 mariaDB의 datadir 설정값부터 찾아봐야 했다. datadir이란, MariaDB 운영중에 생성하는 파일들의 default 위치를 뜻한다. ec2 서버에 접속을 해서 mariadb에 접속해보자. sudo mysql -u root -p 이제 datadir을 찾는 쿼리를 날려준다. show variables like 'data%'; /var/lib/mysql 경로를 ..

DB 2023.07.27

Airflow Trigger 스케줄링

그동안 Airflow를 이용하여 DAG를 작성하면서 불편함을 느낀점이 하나 있었다. 바로 Time 스케줄에 관한 것인데 지금 토이프로젝트에서 사용하는 데이터의 구조상 반드시 선행되어야하는 DAG가 존재했고 예를들면 일자별 Data 크롤링 등등 선행 DAG가 작동한 이후에 신규 선수 추출과 선수의 생년월일 크롤링 DAG가 작동해야했다. 지금까지는 눈대중으로 Time 스케줄을 잡았었지만 비효율적인 부분이 몇개 있었다. 1. 시간적 손실 현재 매일 동작하는 daily DAG는 20시 45분에 작동을 시작하고 소요시간은 대략 3분 정도이다. 넉넉잡아서 5분의 여유를 두고 다음 DAG의 작동시간은 20시 50분으로 잡으면 크게 문제는 없을 것 처럼 보이나, 크롤링 사이트의 변화나 time 딜레이가 있을 경우 5분..

Airflow 2023.07.27

Jira - Gitlab 연동

프로야구 데이터 시각화 프로젝트를 진행하면서 프로젝트의 일정 관리나 회의록 등 일정 문서 관리는 Notion이라는 협업 툴을 사용했었다. Notion은 압도적으로 가벼운 프로젝트 관리 도구로써 필자도 유용하게 사용하고 있었다. 다만, 무료 버전을 사용하다보니 1000개의 무료 블록 제한이 있었고 순식간에 모두 사용하게 되어 더이상의 일정 관리가 불가능하게 되었다. 새로운 일정관리 협업 툴을 찾아보며 "Jira"의 존재를 알게되었고 사용해보기로 했다. Jira는 Notion과 비슷하면서도 '애자일(Agile)' 방법론을 이용한 프로젝트 관리와 다양한 어플리케이션을 결합하여 이슈추적 기능까지 제공하는 강력한 협업 툴이다. 사용방법은 Notion보다 어렵고 무거운 느낌이 있었지만, 성공적으로 프로젝트 일정 마..

Jira 2023.07.18

크롤링 데이터 전처리(naver)

지난 포스팅에서 네이버 스포츠 -> 야구 -> 일정/결과 -> 일자별 경기결과 진입까지 완료했었다. 이번 포스팅은 일자별 경기결과 데이터를 크롤링하여 전처리 후 DB에 적재하는 과정을 다뤄보고자 한다. 크롤링을 하면서 가장 먼저 작업한 것은 크롤링 페이지에 내가 원하는 정보가 있는지와 어느 부분을 가져와야하는지 였다. 분석 화면에 나와있는 데이터는 위 사진과 같았고 데이터는 적당히 있는 것 같았으나 문제가 2개 있었다. 1. '타석' 컬럼이 없다. '타석'컬럼은 규정타석을 계산하기위해 필요한 지표이다. 만약 이 데이터가 없다면 A선수 : 10타석 9타수 5안타, B선수 : 1타석 1타수 1안타 두명의 선수 중 주간 타율 TOP 10을 계산할 때 B선수가 더 높은 순위에 랭크되게 된다. 물론 타율은 B선수..

Data 2023.07.11

Docker 환경에서 크롤링하기(동적 웹)

프로야구 데이터 시각화 프로젝트를 진행하면서, statiz.co.kr 웹 페이지의 박스스코어 데이터를 크롤링했었다. 그런데 데이터 무결성 검사를 해보니 대략 10%의 데이터가 비어있는것을 확인했다. 원인 분석을 위해 일단 크롤링 DAG부터 확인했는데 정상적으로 작동하고 있었고, 매일매일 데이터가 적재되고있었다. 비어있는 데이터를 추적해보니 경기 진행일 전체의 데이터가 아니라 경기하나의 데이터만 빠져있는 것을 확인했고, 실제 웹 페이지에서도 확인해보니 박스 스코어 데이터가 비어있었다.. 사실 저번달에도 이런 경우를 확인했는데 월 마감이 될때마다 데이터가 들어오는걸 확인하고 월 재적재 DAG를 만들어 놨었는데 아예 개막전 경기부터 비어있었다니 정말 충격적이었다.. 어쩔 수 없이 데이터 크롤링하는 웹을 바꾸기..

Docker 2023.06.30