Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20151022 elasticsearch 적용및활용_송준이_sds발표용

2,022 views

Published on

20151022 elasticsearch 적용및활용_송준이_sds발표용

Published in: Technology
  • Login to see the comments

20151022 elasticsearch 적용및활용_송준이_sds발표용

  1. 1. 적용 및 활용 로엔엔터테인먼트 플랫폼개발팀 2015.10.22 송준이(socurites@gmail.com)
  2. 2. 목차 • 들어가기 전에 – 검색이란 • 시연 – Developer Guide • 설치하기 – 검색엔진이란? • 색인과 검색 • 검색하기 – 형태소 분석이란? • 한글 형태소 분석 • 동의어 처리 – 응용하기 • 파워 네트워크
  3. 3. 목차 • 추가 설명 자료 – about elasticsearch – inside a cluster – inside a shard
  4. 4. 들어가기 전에…
  5. 5. • 가사에 “사랑”을 포함하는 곡을 찾는다면 검색이란 title: 1 lyrics: ….. ……………. …….. 문서 title lyrics 1 …………………………… 2 …………………………… … …………………………… table in RDBMS 색인 검색 • “사랑”을 포함하는 row full scan => 1M term docs 사랑 1, 7, 3, … 행복 23, 54, … … …………………………… inverted index in search engine 색인 • “사랑”을 포함하는 row full scan => 1 검색
  6. 6. 시연
  7. 7. melon-helloEs http://socurites.com:8088/melon-helloes-0.0.1-SNAPSHOT/overview/intro
  8. 8. elasticsearch-head http://socurites.com:9200/_plugin/head/
  9. 9. Marvel Sense http://socurites.com:9200/_plugin/marvel/sense/index.html
  10. 10. about elasticsearch
  11. 11. 개요 • 분산 환경의 문서 지향(distributed document-oriented) – 데이터 저장소(data store) • 수백 대의 서버로 scale out • PB 급의 데이터 저장 • document(serialized JSON object) 기반 data structure • partial document update 지원 – document는 근본적으로 수정이 불가능(immutable) – update = replacement(internally) – 검색 엔진(search engine) • 루씬(lucene)을 내부 엔진으로 사용 • 모든 필드를 indexing하여 검색 가능 – 실시간 분석 플랫폼(real-time analytic platform) • aggregation 지원 • approximate aggregation = (big data + real-time analysis) – precision – 빅 데이터를 정확도를 낮춰서 실시간으로 분석 storing indexing searching analyzing filtering ordering aggregation 저장 검색 분석
  12. 12. life inside a cluster
  13. 13. node & cluster • 0개의 index를 가진 > 1개의 node로 구성된 > 1개의 cluster – node: 실행중인 elasticsearch instance • master node – 클러스터를 관리 » index 추가 / 삭제 » node 추가 / 삭제 – 투표를 통해 master node 선출 – document 단위의 변경 또는 search는 모두 데이터 노드에서 이루어지므로 master node는 bottleneck이 되지는 않음 – cluster: 동일한 cluster.name을 가지는 node들의 집합
  14. 14. 참고) cluster / node / index https://github.com/socurites/elasticsearch-foot
  15. 15. index & shard • 3개의 primary shard로 구성된 > 1개의 index를 가진 > 1개의 node로 구성된 1개의 cluster – index: 관련성이 있는 데이터의 저장 단위 • 물리적인 shard에 대한 논리적인 이름 공간 – shard: index의 데이터 일부를 저장하여 전체 index를 구성 • indexing된 document가 실제 저장되는 곳 • document들은 여러 shard에 분산되어 저장되므로 scale out을 지원 • primary shard – 모든 document 단 하나의 primary shard에 위치 – primary shard의 개수는 index를 생성할 때 결정되며 바꿀 수 없음 (default: 5) • replica shard – primary shrad의 복사본 – 장애 발생시 recovery / searching에 대한 concurrent read 보장
  16. 16. 1 replica • 3개의 primary shard와 1개의 replica로 구성된 > 1개의 index를 가진 > 2개의 node로 구성된 1개의 cluster
  17. 17. scale out – shard reallocation • 3개의 primary shard와 1개의 replica로 구성된 > 1개의 index를 가진 > 3개의 node로 구성된 1개의 cluster – shard는 새로운 노드로 재할당되어, 새로 추가된 computing power를 완전히 활용할 수 있음
  18. 18. 2 replica • 3개의 primary shard와 2개의 replica로 구성된 > 1개의 index를 가진 > 3개의 node로 구성된 1개의 cluster
  19. 19. recovery on failure • 3개의 primary shard와 2개의 replica로 구성된 > 1개의 index를 가진 > 2개의 node로 구성된 1개의 cluster – master node 1이 shutdown된 경우, • primary node selection – node 2가 새로운 primary node가 선출된다 • recovering primary shard – node 1에 위치한 primary shard 1, 2가 사라짐 – replica node를 새로운 primary shard로 지정
  20. 20. inside a shard
  21. 21. flush, refresh, optimize • elasticsearch에서 – search는 near real-time: indexing한 document를 기본적으로 1s 이후 search 가능 – CRUD는 real-time – data persistence를 보장 – delete operation을 하더라도 disk가 바로 해제되지 않음 • Why? – refresh – flush – optimize
  22. 22. dynamically updatable indices • index의 immutable한 장점은 그대로 유지한 채, index를 수정 가능하게 하기 – “여러 개의 index를 사용하자” • 기존의 커다란 inverted index는 그대로 유지 • 새로운 document는 주기적으로 새로운 index로 생성 • search 요청 발생시, 여러 개의 index를 차례대로 검색한 후 결과를 병합하여 리턴 – segment: 이러한 여러 개의 index들 중 하나 • 용어 정리 – index = segements + commit point – commit point = 현재 segment 목록 index shard segment
  23. 23. http://socurites.com/big-data/elasticsearch/elasticsearchs-index-structrue- segment-merging

×