전체 글 34

Keyword Field를 활용하는 다양한 쿼리 예제

본 내용은 윈도우에 설치된 Elasticsearch 7.10.2 버전으로 기준으로 작성되었습니다. 1. term query term query는 정확한 매치를 찾기 위해 사용됩니다. 예를 들어, 특정 필드에서 "Elasticsearch"라는 값을 가지는 문서를 찾으려면 다음과 같이 사용할 수 있습니다. GET http://localhost:9200/search_test_index/_search { "query": { "term": { "keyword_field": { "value": "Elasticsearch" } } } } 2. terms query terms query는 주어진 terms 중 하나라도 매칭되는 모든 문서를 찾습니다. 예를 들어, "test1" 또는 "Elasticsearch"라는 값을..

초보자를 위한 Elasticsearch 시작하기: CRUD

본 내용은 윈도우에 설치된 Elasticsearch 7.10.2 버전으로 기준으로 작성되었습니다. 1. Index 생성하기 PUT http://localhost:9200/test_index Header: Content-Type: application/json Body: { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 0 } }, "mappings": { "properties": { "field1": { "type": "text" }, "field2": { "type": "text" }, "field3": { "type": "text" }, "field4": { "type": "text" } } } } 응답: { "acknow..

Elasticsearch 주요 field data types (V7.10 기준)

Text field - 문자열 데이터를 저장할 때 사용하는 필드 - 분석기(analyzer)를 사용하여 텍스트를 토큰(token)으로 분리하고, 대소문자를 정규화하며, stopword 제거 - 검색할 때는 토큰 단위로 일치 여부를 확인합니다. "The quick brown fox jumps over the lazy dog."를 저장한 후, "quick"을 검색할 때, 해당 문서가 반환됩니다. 하지만 "quickly"를 검색하면 검색 결과에서 제외됩니다. Keyword field - 문자열 데이터를 그대로 저장할 때 사용하는 필드 - 대소문자 구분이 이루어지며, 분석기(analyzer) 사용 안함 - 정확한 일치 여부를 확인할 때 사용 "New York"를 저장한 후, "New York"으로 검색할 때 해..

Kafka 자주 사용하는 명령어 정리

topic 생성: ./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic topic list 확인: ./kafka-topics.sh --list --bootstrap-server localhost:9092 console에서 topic에 data 전달: ./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic '>'가 나오면 문자열 입력 데이터 개수 확인: ./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list ..

BigData/Kafka 2023.03.15

Kafka connect를 활용하여 HDFS에 데이터 넣기

이전에는 Kafka 데이터를 Elasticsearch에 넣어봤는데, 이번에는 HDFS에 넣어보고자 한다. 이전글: Kafka connect를 활용하여 Elasticsearch에 데이터 넣기 Kafka connect를 활용하여 Elasticsearch에 데이터 넣기 Kafka, Elasticsearch 설치는 본문에서 다루지 않는다. (개념은 생략하며 sink connector만 다룬다.) 개요 아주 간략하게 Kafka Connect에 대해서만 설명하고 넘어가도록 한다. Kafka Connect를 사용하기 위해서는. inoino9.tistory.com 설정 connect-distributed.properties 파일을 사용한다. (기본으로 제공된 파일 그대로 사용) 실행 bin/connect-distrib..

BigData/Kafka 2023.03.14

Elasticsearch에서 동적 매핑과 필드 정의하기

Elasticsearch는 검색 엔진으로 인기가 많은 오픈 소스 소프트웨어입니다. 이번 글에서는 Elasticsearch의 스키마 파일을 이용한 인덱스 생성과 데이터 삽입, 그리고 필드 매핑 정보 정의에 대해 알아보겠습니다. 우선, Elasticsearch에서는 데이터를 저장하기 위해 인덱스를 생성해야 합니다. 이때 인덱스 생성을 위해 스키마 파일을 작성해야 합니다. 스키마 파일은 인덱스의 설정과 매핑 정보를 정의하는 파일로, JSON 형식으로 작성됩니다. 예를 들어, 다음과 같은 스키마 파일을 작성해보겠습니다. { "settings": { "number_of_shards": 1, "number_of_replicas": 0 }, "mappings": { "properties": { "title": { "..

Hadoop NameNode HA

개요 Hadoop의 단점 중 하나는 NameNode(이하 NN)가 비정상 종료되었을 때이다. 기본적으로 DataNode를 확장하면 무한한(?) 확장을 할 수 있지만, NN에 문제가 생길 경우 여태껏 저장한 모든 데이터를 잃을 수 있을 정도로 치명적이다. 그렇기 때문에 이를 방지하고자 Hadoop도 버전업을 하면서 NN 이중화 기능이 추가되었다. 이중화 시스템 장애 등을 대비하기 위해 같은 시스템을 2개 이상으로 구성하여 장애 발생 즉시 대체하여 가용성을 유지하기 위한 구조이다. 중요한 장비일수록 이중, 삼중, 그 이상으로 구성하기도 한다. 동작 방식으로는 Active-Active와 Active-Standby가 있다. NN 이중화 NN 이중화는 말 그대로 NN을 2개 이상을 만들어서 안정성을 확보하는 것이..

BigData/Hadoop 2022.02.19

Kafka connect를 활용하여 Elasticsearch에 데이터 넣기

Kafka, Elasticsearch 설치는 본문에서 다루지 않는다. (개념은 생략하며 sink connector만 다룬다.) 개요 아주 간략하게 Kafka Connect에 대해서만 설명하고 넘어가도록 한다. Kafka Connect를 사용하기 위해서는 2가지가 필요하다. 1. Kafka Connect --> 메인, 총괄 역할 2. Kafka Connector --> 실제 파싱 sink 해주는 역할 ※ 이름은 비슷한데 용도는 다르다. (이론적으로 두 개가 다르다는 것은 알고 있었는데 어떻게 설치하는지 감이 안왔었다.) Kafka Connect는 Apache Kafka를 설치하면 bin 밑에 들어있다. (이 과정에서 약 3시간 동안 삽질..) 당연히 Connect 도 받아야 하는줄알고 열심히 Searc 했..

BigData/Kafka 2021.08.04

(해결X) Kafka producer memory buffer issue

이슈 => Kafka producer를 통해 데이터를 생성할 때 memory buffer 크기에 도달하면 일시 hang이 걸린다. 풀어서 설명하면 다음과 같다. Ex 1) buffer.memory=2 일 때 데이터 크기가 1인 데이터 send 첫 번째 send (성공 - buffer 에만 전송된 상태, broker로 전송되지 않은 상태인 것으로 추정) 두 번째 send (성공 - buffer 에만 전송된 상태, broker로 전송되지 않은 상태인 것으로 추정) 세 번째 send (대기 약 5초) 5초가 지난 시점에 buffer에 있는 데이터가 broker -> topic 저장되고 대기가 풀리면서 다음 send들이 모두 성공한다. Ex 2) buffer.memory=2 일 때 데이터 크기가 3인 데이터 s..

BigData/Kafka 2021.07.22

실시간 데이터 처리를 위한 Kafka에 대해 알아보자

초당 수십만 아니 그 이상의 데이터가 들어온다면 그것을 어떻게 처리할 수 있을까? 하나라도 흘린다면 로그 정합성에 문제가 생길테고... 유실된 정보에 대한 책임은 어떻게... 그렇다면 우선 데이터를 다 받는 것부터 해야하지 않을까? 대량의 로그를 처리하기 위해 고민하다가 실시간 메시지 큐 형태의 Kafka를 알게되었다. Kafka® is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies. 카프카는 실시간 데이터를 처리하는데 사용되며, 확장도 좋고 속도도 ..

BigData/Kafka 2019.12.04