[ElasticSearch] Scroll API elasticsearch에서 기본적인 search API는 한 페이지를 리턴하고나면 search context가 소멸된다. search API에서 from, to 값을 이용해 pagination을 구현한 것은 별개의 쿼리가 매번 수행된 것으로 RDBMS로 치면 cursor가 소멸된 것과 같다. 대량의 데이터를 조회하기 위해서는 다른 방식을 사용해야하는데, Elasticsearch에서 RDBMS의 cursor와 같은 기능을 하는게 Scroll API 이다. 사용 방법 curl을 이용해 간단히 scroll […]
[Hadoop] 가용성을 고려한 Hadoop 2.x Cluster 설치
가용성을 고려한 Hadoop Cluster 설치 Namenode와 Resourcemanager를 active node,standby node로 각각 두 벌씩 구성함으로써 고가용성을 고려한 Hadoop Cluster를 설치한다. 사전 준비 의존 패키지 설치 namenode와 resourcemanager가 장애 상황에서 standby -> active 상태로 전환될 때에 fuser 명령을 이용해서 장애노드의 프로세스들을 정리하므로 psmisc 패키지를 설치한다. yum -y install psmisc JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 페이지에서 JDK 8 버전 바이너리 다운로드하고 […]
[Kafka] External Listener 설정
Kafka External Listener 설정 브로커가 기동될 때 InetAddress.getLocalHost.getHostAddress 가 사용됨. 클라이언트가 외부 환경에 있어서 브로커 접속이 불가능 한 경우 advertise.host.name 값 설정으로 해결할 수 있다. advertised.host.name=$EXT_HOSTNAME listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT listeners=INTERNAL://10.4.0.105:9092,EXTERNAL://0.0.0.0:9093 advertised.listeners=INTERNAL://10.4.0.105:9092,EXTERNAL://$EXT_HOSTNAME:9093 inter.broker.listener.name=INTERNAL
[Kafka] Python Consumer sample
#!/app/python/bin/python from kafka import KafkaConsumer consumer = KafkaConsumer(‘test’,bootstrap_servers=[‘$HOSTNAME:9093’]) for message in consumer: print (“%s:%d:%d: key=%s value=%s” % (message.topic, message.partition, message.offset, message.key, message.value))
[Kafka] Python Producer sample
#!/app/python/bin/python from kafka import KafkaProducer from kafka.errors import KafkaError producer = KafkaProducer(bootstrap_servers=[‘node1.qrm:9092′,’node2.qrm:9092′,’node3.qrm:9092’]) producer.send(‘accesslog_wp-bigdata’,str.encode(‘this is test’))
[Python] JayDeBeApi
JayDeBeApi The JayDeBeApi module allows you to connect from Python code to databases using Java JDBC. It provides a Python DB-API v2.0 to that database. https://pypi.org/project/JayDeBeApi/ install jdbc를 사용하다보니 java가 설치돼 있어야 한다. Python Version $ python –version Python 3.6.6 pip를 이용한 설치 $ pip install JayDeBeApi Collecting JayDeBeApi Downloading https://files.pythonhosted.org/packages/2a/63/5fbffcbf0463fe26f55ee8ff08bcbb812cab4df2decddfac645cbac966ed/JayDeBeApi-1.1.1-py3-none-any.whl Collecting JPype1 (from JayDeBeApi) […]
[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 […]