[PySpark] Elasticsearch Index 에서 DataFrame 생성하기 elasticsearch-hadoop connector 를 이용해서 spark dataframe을 생성한다. Spark 설치 spark 다운로드 및 환경설정 필요한 요소만 설치하고자 하는 경우 소스코드를 내려받아서 maven을 이용해 빌드해도 되지만 pre-compiled 바이너리를 이용한다. wget http://mirror.navercorp.com/apache/spark/spark-2.3.2/spark-2.3.2-bin-hadoop2.7.tgz tar -xvzf spark-2.3.2-bin-hadoop2.7.tgz -C /app/spark/. mv /app/spark/spark-2.3.2-bin-hadoop2.7 /app/spark/2.3.2 find /app/spark/2.3.2 -mindepth 1 -maxdepth 1 -type d | xargs -I {} […]
[ElasticSearch] Scroll API
[ElasticSearch] Scroll API elasticsearch에서 기본적인 search API는 한 페이지를 리턴하고나면 search context가 소멸된다. search API에서 from, to 값을 이용해 pagination을 구현한 것은 별개의 쿼리가 매번 수행된 것으로 RDBMS로 치면 cursor가 소멸된 것과 같다. 대량의 데이터를 조회하기 위해서는 다른 방식을 사용해야하는데, Elasticsearch에서 RDBMS의 cursor와 같은 기능을 하는게 Scroll API 이다. 사용 방법 curl을 이용해 간단히 scroll […]
[ElasticSearch] Lucene
Lucene OpenSource 검색 라이브러리로서 하둡 개발자로 잘 알려진 Doug Cutting이 개발했다. Lucene이라는 이름은 그의 아내 middle name 을 따서 지었다고. Lucene은 Levenshtein distance에 기반한 fuzzy search 기능까지 있는 검색 라이브러리로 검색 능력이 뛰어나다고 한다. Lucene-demo http://lucene.apache.org/ apache/lucene/java/7.5.0 위 경로에서 Lucene 최신 라이브러리를 다운로드 받으면 demo/lucene-demo-7.5.0.jar 데모 클래스가 있다. IndexFiles를 이용하면 파일 시스템의 특정 경로 내의 […]
[ElasticSearch] 한글 형태소 분석기 nori
한글 형태소 분석기 nori 소개 설치 elasticsearch-plugin 이용해서 설치. 모든 노드에 설치 되어야하고 설치 이후에는 노드 별 재기동이 필요. elasticsearch-plugin install analysis-nori Analysis 형태소 분석을 적용해보고 싶은 text 에 대해 다음과 같이 analysis 테스트가 가능하다. curl -X GET “$HOSTNAME:9200/_analyze?pretty” -H ‘Content-Type: application/json’ -d’ { “tokenizer”: “nori_tokenizer”, “text”: “뿌리가 깊은 나무는”, “attributes” : [“posType”, “leftPOS”, “rightPOS”, […]
[ElasticSearch] elasticdump
elasticdump elasticsearch에 저장돼 있는 indice 데이터를 json 파일로 내려받거나 다른 elasticsearch cluster에 indexing 할 수 있는 유틸로서 https://github.com/taskrabbit/elasticsearch-dump 에서 project 관리를 하고 있고 다운로드 및 가이드 확인이 가능하다. 설치 의존성 node.js 어플리케이션으로 작성돼 있어 node 필요. 설치 순서 1. source 다운로드 및 압축해제 wget https://github.com/taskrabbit/elasticsearch-dump/archive/master.zip unzip master.zip 2. npm install cd elasticsearch-dump-master npm install export […]
[ElasticSearch] ElasticSearch-Hadoop Connector
ElasticSearch-Hadoop ElasticSearch-Hadoop Connector를 이용하여 ElasticSearch의 실시간 검색 및 분석 기능과 Hadoop의 강력한 데이터 저장 및 처리 기능을 동시에 활용. 기본적으로 ElasticSearch는 Join SQL이 수행되지 않는데 ElasticSearch-Hadoop Connector를 이용하면 DF 를 생성해서 multi index 에 대한 Join SQL을 수행할 수 있을 것 같다. 테스트 해본 데이터 사이즈가 커서 그런지 쿼리 응답을 받지는 못함.. 설치 wget https://artifacts.elastic.co/downloads/elasticsearch-hadoop/elasticsearch-hadoop-6.4.2.zip […]
[ElasticSearch] Search API
ElasticSearch Search API 필터 등 기본적인 검색 방법에 대해 소개. RDBMS 에서 쿼리한 것과 비교해보면서 ElasticSearch에서 쿼리해보면 좋을듯. Query client 는 Kibana Dev Tools 을 사용한다. 테스트 데이터 tpc-H 에서 생성된 데이터 중 supplier 테이블 데이터를 바탕으로 테스트 진행. supplier index template 정수형, 문자형, 텍스트 형에 따라 검색 특성을 보기 위해 아래와 같이 index template […]
[ElasticSearch] ELK + MetricBeat System Monitoring
ELK + MetricBeat System Monitoring Architecture 아래와 같은 구성도로 Monitoring System을 구축한다. 총 세 대의 머신으로 ELK 클러스터를 구성하며 metricbeat는 agent로서 서버 클러스터에는 설치될 필요가 없다. hostname components node1.elk elasticsearch, logstash, kibana node2.elk elasticsearch node3.elk elasticsearch 설치 사전 준비 JDK 1.8 이상 kernel vm.max_map_count = 262144 user limit elastic soft nofile 65536 elastic hard nofile […]
[Elasticsearch] elasticsearch-sql
Elasticsearch Sql ElasticSearch 6.3.x 버전부터 X-Pack을 통해 SQL-Like Query 기능을 제공한다. Index 에 대해서 SQL 질의를 바로 하는 것이 아니라, ElasticSearch 에 최적화된 DSL 로 translate 한 뒤 해당 DSL을 이용해 조회한다. SELECT SQL만 가능하고, multi-index 조회 (join SQL)은 수행되지 않는다. 또한 스칼라 서브쿼리 등 조금만 복잡해져도 잘 안 됨. Kibana와 Curl REST API 를 […]
[ElasticSearch] Configuration
ElasticSearch 설정/관리 elasticsearch.yml 아래는 엘라스틱서치 바이너리 내에 yml.template 로 기본 기재된 파라미터 Parameter Name Default Value cluster.name my-application node.name node-1 node.attr.rack r1 path.data /path/to/data path.logs /path/to/logs bootstrap.memory_lock true network.host 192.168.0.1 http.port 9200 discovery.zen.ping.unicast.hosts [“host1”, “host2”] discovery.zen.minimum_master_nodes gateway.recover_after_nodes 3 action.destructive_requires_name true cluster.name 클러스터 이름. 이 이름이 같아야 멤버 노드드들이 조인이 가능하다. 다른 엘라스틱서치 시스템 노드의 클러스터 […]