전체 글
-
파이썬 알고리즘 문제풀이 : collections.Counterpython 2025. 5. 28. 20:31
파이썬에서 자주 등장하는 라이브러리 중 하나인 collections에는 아주 유용한 자료구조인 Counter가 있습니다. collections.Counter란? Counter는 파이썬의 내장 모듈 collections에 포함된 특수한 딕셔너리입니다. 리스트, 문자열 같은 반복 가능한(iterable) 객체를 받아, 각 요소가 몇 번 등장했는지를 세어주는 자료형입니다. from collections import Counterarr = ['a', 'b', 'a', 'c', 'b', 'a']counter = Counter(arr)print(counter)## 결과 : Counter({'a': 3, 'b': 2, 'c': 1})즉, 요소를 key로, 등장 횟수를 value로 저장합니다. Counter 끼리 산술..
-
APM AgentElasticsearch 2025. 5. 20. 20:52
Elasticsearch에 Http Request를 보낼 때 계측하여 모니터링 할 수 있도록 APM을 테스트 및 개발중이다.복기 겸,, 개발 가능성 유무를 확고히 하기 위해 기록..합니다. 테스트 환경 : 각 노드에 Elastic Agent가 설치 Elastic APM Fleet 이란? Agent Server를 관리하며 정책을 부여 Elastic APM 이란?incoming requests, database queries, caches, external HTTP request, ... 등등 수집디버깅 시 발생하는 로그 수집 Elastic APM은 APM Agent 역할을 함과 동시에 APM Server 역할도 가능하다. Kibana에서 확인할 수 있는 로그 저장소 - data_streamAPM은 Metr..
-
elasticsearch 한글 형태소 분석사전Elasticsearch 2025. 4. 1. 20:51
기본 개념https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori 6.7.2 노리 (nori) 한글 형태소 분석기 | Elastic 가이드북이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 및 도표 등을 인용하고자 하는 경우 출처를 명시하고 김종민(kimjmin@gmail.com)에게 사용 내용을 알려주시기 바랍esbook.kimjmin.net위 글에 따르면 Nori는 한국어 텍스트 분석을 위해 설계되었으며 Elasticsearch 공식 분석기 입니다. 주요 특징- 일반 명사, 고유 명사만 등록 ( 한글의 경우 명사, 동명사 정도만 검색 )- Nori는 기본적으로 품사 필터링을 통해 조사, 접미사 등 17개 ..
-
profile을 통해 실제 쿼리가 어떻게 구성되는지 확인해보기Elasticsearch 2025. 3. 27. 20:59
예시 데이터{ "id": "park_rocky-mountain", "title": "Rocky Mountain", "description": "Bisected north to south by the Continental Divide, this portion of the Rockies has ecosystems varying from over 150 riparian lakes to montane and subalpine forests to treeless alpine tundra."} "profile"을 통해 실제 쿼리가 어떻게 진행되는지 확인 필드 미지정 시 Query?GET my-index/_search{ "profile": true, "query": { "que..
-
인덱스 샤드 설정에 대해Elasticsearch 2025. 3. 22. 02:04
유튜브 데이터에 특화된 분석기가 업데이트되어 데이터를 재색인 해야하는 일이 생겼다. 이로인해 새로운 인덱스를 생성해야 했는데이 과정에서 샤드를 어느정도 설정해야 이상적일까에 대해 생각해보았다. 사용환경 : 크론탭유튜브 데이터의 하루 색인량은 약 1000건이며 기능 명세상 사용자 쿼리에 의해 업데이트되는 기능은 아니다. Elasticsearch Shard에 대해Elasticsearch 쿼리는 샤드당 단일 스레드로 실행된다. 각각의 Shard는 Lucene 인덱스의 인스턴스이며 Lucene 인덱스는 내부적으로 다수의 세그먼트로 구성되어 있다.노드가 더 많은 힙공간을 가질수록 처리할 수 있는 데이터와 샤드가 늘어난다.시계열 데이터 기준 적정 샤드 크기는 10GB~50GB이다. 하나의 노드에 저장할 수 ..
-
병렬 프로세스 최적화_CompletableFutureJava 2025. 1. 11. 15:58
저희 회사는 SNS 데이터를 다룹니다. 데이터의 제목, 내용 길이가 매우 짧은 것부터 긴 것까지 다양한 형태의 데이터들을 처리하고 관리합니다. 재색인 프로세스를 Airflow에 적용하기 위한 검토 과정에서 문제점을 발견하여 최적화를 진행해 보았는데요..!나름 성공적인 결과를 낸 것 같아 최적화 과정을 공유해드리려고 합니다. 현재 프로세스는 Elasticsearch에서 데이터를 가져와 해당 문서를 분석하고다시 Elasticsearch로 재색인 하는 과정을 진행하고 있습니다. 그 중 시간이 가장 오래걸리는 텍스트 분석 과정에서 병렬처리를 하고 있는데요! 코드는 아래와 같습니다. 기존 병렬 프로세스 코드CompletableFuture> analysisDataFuture = CompletableFuture.s..
-
Curator를 활용한 Snapshot 테스트Elasticsearch 2025. 1. 8. 21:01
데이터 생애주기를 관리하기 위하여 Curator을 활용한 Bash Script를 구성해보았습니다..!현재 Crontab으로 하루에 한번 운용되고 있으며 아래와 같은 순서로 동작이 구성되었습니다. 동작 순서1. allocation : hot → warm 2. snapshot : 사용자 인덱스만 snapshot 생성3. delete_indices : snapshot이 완료된 인덱스 삭제 #!/bin/bashsnapshot_date=$(date -d '7 days ago' +%Y%m%d)snapshot_name="lucy_main_bac1_${snapshot_date}_snapshot"cat action_file.ymlactions: 1: action: allocation description:..
-
Docker Hub를 Helm Charts 저장소로쿠버네티스/helm 2025. 1. 6. 18:56
사이드 프로젝트를 Helm Charts로 배포하려고 합니다. 이를 위해 Helm Charts를 저장할 저장소를 선택해야 하는데,, 현 직장에서는 Harbor을 쓰지만조금 오래된 내 맥북에서 개발 환경을 구성한다고 생각하니 용량이 아까워,,ㅎ 외부 레지스트리를 이용하려고 합니다. Helm Charts 설치는 되어있다고 가정햐겠습니다. 먼저 터미널(iterm, wsl)에 접속해 docker에 로그인 해줍니다. docker login -u -p 그 다음 Docker Hub에 올릴 Helm Chart를 만듭니다. (예시용)helm create 다운로드를 하셨다면 아래와 같은 구조의 폴더가 생성 됩니다. demo % tree .├── Chart.yaml├── charts├── templ..