728x90

전체 글 168

Elasticsearch 정리 #2 (데이터 색인과 텍스트 분석)

- RDBMS에서는 특정 단어가 들어간 데이터를 검색하려면 like 검색을 해야해서 속도가 느리다. 하지만 엘라스틱서치는 데이터를 저장할 때 루씬기반의 역 인덱스 구조를 만들어 저장하기때문에 검색이 빠르다. 물론 대다수에 문서에 등장하는 단어라면 오히려 더 속도가 떨어 질 수 도 있다(ex) a, the, and 등). 하지만 Elasticsearch에서는 이 단어들을 불용어(stopword)로 등록하고 인덱스에서도 제거하며, 검색어에 등장해도 무시하게 설정이 되어 있다. - 엘라스틱 서치에서는 이 특정 단어를 Term이라고 부른다. 또한 역 인덱스를 데이터가 저장되는 과정에서 만들기 때문에 데이터를 입력할 때 저장이 아닌 색인을 한다고 표현한다. - 엘라스틱서치는 문자열 필드가 저장될 때 데이터에서 검..

Elasticsearch 2022.11.30

Elasticsearch 정리 #1 (기초 개념)

- 엘라스틱서치는 (1)루씬(Lucene) 기반의 오픈소스 검색 엔진이다. HTTP 기반의 REST API를 활용하여 요청 및 응답에 JSON을 활용해 다양한 플랫폼에서 개발이 가능하며, 정형화되지 않은 문서도 자동으로 색인하고 검색할 수 있다(Schemaless). 또한 (2)멀티테넌시가 가능하고 전문 검색 엔진을 제공한다. logstash 또는 fluentd로 로그를 변환하고 kibana를 연결하여 준실시간으로 로그를 분석하고 시각화 할 수 있다. NoSQL의 일종으로 분류할 수 있고, 기본적으로 검색엔진이지만 MongoDB 같은 대용량 스토리지로도 활용이 가능하다. - (1) 아래 그림을 보면 RDB와 루씬 기반의 데이터 구조의 극명한 차이점을 볼 수 있다. RDB는 행을 기반으로, 엘라스틱서치는 ..

Elasticsearch 2022.11.30

Elasticsearch Query 모음

GET - 버전 및 세부정보 확인 GET / - 모든 컬럼 조회 GET _search { "query": { "match_all": {} } } - fluentd-test 인덱스에서 message 필드값이 "test" 인 모든 컬럼 조회 (timestamp 기준으로 내림차순 정렬) GET fluentd-test/_search { "sort" : { "created": "desc"}, "query": { "match": { "message": "test" } } } - 모든 인덱싱 조회 GET _cat/indices (+) 컬럼명까지 같이 조회 : GET _cat/indices?v - fluentd-test 인덱스의 매핑구조 조회 GET fluentd-test/_mapping - 특정 인덱싱 조회 GET ..

Elasticsearch 2022.11.15

Kubenetes 정리#3(helm)

- 컨테이너 인프라 환경을 구성하는 도커와 쿠버네티스에 대해 알아보았다. 새로 개발한 어플리케이션으 쿠버네티스에서 사용하는 과정은 docker build -> docker push -> kubectl create -> kubectl expose 이다. 이러한 과정을 흔히 파이프라인(Pipeline)이라고 한다. 대부분의 IT작업은 파이프라인 자동화를 시켜 진행한다. - 자동화는 흔히 CI/CD 두 가지로 정의 된다. 간단히 설명하면 CI는 빌드/테스트 자동화 과정이고, CD는 배포 자동화 과정이다. CI를 마친 어플리케이션은 신뢰할 수 있는 상태가 되며 CD는 CI과정을 거친 어플리 케이션을 실제 사용하는 환경에 자동으로 배포하는것을 말한다. - CI/CD를 컨테이너 인프라 관점에서 보자면, 개발자가 소..

Kubenetes 2022.09.29

Kubenetes 정리#2(k8s)

- 앞에서 도커에 대한 간략한 정리를 했으니 쿠버네티스가 무엇인지 알아보자. 쿠버네티스(kubenetes, k8s)는 컨테이너화된 앱의 작업을 자동화하는 컨테이너 오케스트레이션 오픈소스 플랫폼이다. 컨테이너화된 애플리케이션을 배포하고 확장하는 데 수동 프로세스가 필요하지 않다. 즉, Linux 컨테이너를 실행하는 호스트 그룹을 함께 클러스터링할 수 있으며 쿠버네티스를 통해 이러한 클러스터를 쉽고 효율적으로 관리할 수 있다. 클러스터는 퍼블릭 클라우드, 프라이빗 클라우드 또는 하이브리드 클라우드 전체로 호스트를 확장할 수 있다. 이러한 이유로 쿠버네티스는 Apache Kafka를 통한 실시간 데이터 스트리밍과 같이 신속한 확장을 요하는 클라우드 네이티브 애플리케이션을 호스팅하는 데 이상적인 플랫폼이다. -..

Kubenetes 2022.09.29

프로그래머스 Level2 문제 모음[Python]

- https://school.programmers.co.kr/learn/courses/30/lessons/60058 - 키워드 : stack - 레벨 : 2 from collections import Counter def is_correct(u): # 올바른 괄호 문자열 판단 stack = [] for i in u: if i == "(": stack.append(i) else: if not stack: return False x = stack.pop() return True def solution(p): # 빈 문자열인 경우 if not p: return "" # 이미 올바른 괄호 문자열일 경우 if is_correct(p): return p u = "" v = "" # 2. 균형잡힌 괄호 문자열 u,..

Python 2022.09.29

Python 알고리즘 라이브러리 모음

- 아스키코드, ascii ord("a") => 문자열 a를 아스키코드로 chr(65) => 아스키코드 65를 문자열 A로 - 힙, heap import heapq # 최소 힙 생성, push heap_list = [] heapq.heappush(heap_list, 4) heapq.heappush(heap_list, 1) heapq.heappush(heap_list, 7) # pop heapq.heappop(heap_list) # pop하지 않고 최솟값 얻기 print(heap_list[0]) # 기존 리스트를 힙으로 변환 a_list = [4, 1, 7, 3, 8, 5] heapq.heapify(a_list) - 정렬, sort https://docs.python.org/ko/3/howto/sortin..

Python 2022.09.29

Kubenetes 정리#1(docker)

- 쿠버네티스에 대해 정리하기 앞서 도커의 개념부터 정리해 보도록 하자. - 도커는 가상화 기술을 기반으로 만들어 졌다. 기존의 가상화는 하이퍼바이저가 논리적으로 분할된 공간에서 VM이라는 독립된 가상환경을 만들고 VM에 깔린 OS를 구동 및 모니터링하는 역할을 한다. 즉, VM은 다른 가상환경에 영향을 미치지 않는다는 장점이 있다. - 그렇다면 도커와 VM의 차이는 무엇일까? 간단히 말하자면 Guest OS의 유무라고 할 수 있다. 아래 그림을 보면 알 수 듯이 VM에는 Guest OS가 깔린다. 하지만 도커는 컨테이너를 기반으로 작동한다. 이는 곧 자원의 효율성과 직결된다. VM은 새로 생성할 때 마다 OS를 위한 자원을 할당해 주어야 하지만 도커는 app을 위한 패키지만 있으면 컨테이너를 구동시킬 ..

Docker 2022.09.29

Kubernetes ETL With EFK (포트 포워딩 및 배포)#2

1. git clone https://github.com/parksubo/ekf-with-flask 2. 현재 minikube에 elastic namespace가 없어서 아래 명령어를 실행할 수 없음, kubectl create namespace elastic로 namespace 생성 후 // resource create kubectl apply -f ./elasticsearch.yaml kubectl apply -f ./kibana.yaml kubectl apply -f ./fluentd.yaml 로 배포한다. 3. kubectl get svc -n elastic 로 elastic 레이블이 부착된 모든 서비스가 잘 돌아가는지 확인한다. 4. 포트포워딩 kubectl port-forward svc/fla..

Data Engineering 2022.09.08

Kubernetes ETL With EFK(개발 환경 설정)#1

1. vscode에서 kubernetes extension 설치 2. 설치하면 dependencies 없다고 나오는데 전부 설치 3. https://minikube.sigs.k8s.io/docs/start/ https://blog.naver.com/PostView.nhn?blogId=isc0304&logNo=221879359568 위 링크 참고해서 minukube 설치 (사전에 docker 설치 및 실행 잊지 말기 //ubuntu : sudo apt install docker.io -y // 여기서는 docker desktop 사용) 3. minikube가 설치되어 있다면 아래와 같이 cluster에 뜸 - 만약 안뜬다면 ~./user/.kube에 config 파일을 확인해 볼 것 필자는 vscode에서..

Data Engineering 2022.09.08