오픈소스검색엔진을활용한 데이터분석 Elastic Stack 을이용한데이터분석 김종민 Tech Evangelist @Elastic 2017.10.26
Elastic?
Elastic? Elasticsearch 라는검색엔진을개발한회사입니다. (ELK Stack 으로더잘알려져있습니다.) 검색엔진은우리주변여기저기에있습니다. 요즘은검색엔진이데이터분석에도쓰입니다.
Elastic Stack 100% open source
Elasticsearch Heart of the Elastic Stack Distributed, Scalable High-availability Multi-tenancy Developer Friendly Real-time, Full-text Search Aggregations
Kibana Visualize and analyze Geospatial Customize and Share Reports Graph Exploration UX to secure and manage the Elastic Stack Build Custom Apps
Beats Ship data from the source Ship to Elastic Cloud Ship and centralize in Elasticsearch Libbeat: API framework to build custom beats Ship to Logstash for transf ormation and parsing 30+ community Beats
Logstash Ingest data of all shapes, sizes, and sources Secure and encrypt data inputs Parse and dynamically transform data Build your own pipeline Transport data to any output More than 200+ plugins
Common Elastic Stack Architecture Beats Elasticsearch Log Files Metrics Master Nodes (3) Custom UI Logstash Ingest Nodes (X) Wire Data your(beat) Kibana Kafka Data Nodes - Hot (X) Instances (X) Datastore Web APIs Redis Messaging Queue Nodes (X) Data Nodes - Warm (X) Social Sensors X-pack X-pack ES-Hadoop LDAP AD SSO Hadoop Ecosystem Authentication Notification
아파치루씬 (Apache Lucene) Created by - Doug Cutting Written in Java Apache Solr, Elasticsearch
RDBMS 에서는데이터를테이블형태로저장합니다. 열을기준으로인덱스를만듭니다. 책의맨앞에있는제목리스트와같습니다. DOC TEXT 1 The quick brown fox jumps over the lazy dog 2 Fast jumping rabbits
검색엔진에서는 inverted index 라는구조로저장합니다. RDBMS 와반대구조입니다. 텍스트를다뜯어서검색어사전을만듭니다. 책의맨뒤에있는페이지를가리키는키워드같습니다. TOKEN (TERM) DOC TOKEN (TERM) DOC Fast 2 jumps 1 The 1 lazy 1 brown 1 over 1 dog 1 quick 1 fox 1 rabbits 2 jumping 2 the 1
실제로는이렇게저장됩니다. 텍스트를저장할때몇가지처리과정을거칩니다. TOKEN (TERM) DOC TOKEN (TERM) DOC brown 1 lazi 1 dog 1 over 1 fast 1, 2 quick 1, 2 fox 1 rabbit 2 jump 1, 2
텍스트처리 대소문자를변환합니다. TOKEN (TERM) DOC TOKEN (TERM) DOC Fast fast 2 jumps 1 The the 1 lazy 1 brown 1 over 1 dog 1 quick 1 fox 1 rabbits 2 jumping 2 the 1
텍스트처리 토큰을 ( 보통 ascii 순서로 ) 재정렬합니다. TOKEN (TERM) DOC TOKEN (TERM) DOC brown 1 lazy 1 dog 1 over 1 fast 2 quick 1 fox 1 rabbits 2 jumping 2 the 1 jumps 1 the 1
텍스트처리 불용어 (stopwords, 검색어로서의가치가없는단어들 ) 를제거합니다. a, an, are, at, be, but, by, do, for, i, no, the, to 등등 TOKEN (TERM) DOC TOKEN (TERM) DOC brown 1 lazy 1 dog 1 over 1 fast 2 quick 1 fox 1 rabbits 2 jumping 2 the 1 jumps 1 the 1
텍스트처리 형태소분석과정을거칩니다. 보통 ~s, ~ing 등을제거하는과정입니다. 한글은의미분석을해야해서좀더복잡합니다. TOKEN (TERM) DOC TOKEN (TERM) DOC brown 1 lazy lazi 1 dog 1 over 1 fast 2 quick 1 fox 1 rabbits rabbit 2 jumping jump 2 jumps jump 1
텍스트처리 jumping, jumps 가 jump 로똑같이바뀌었으므로토큰을병합해줍니다. TOKEN (TERM) DOC TOKEN (TERM) DOC brown 1 lazi 1 dog 1 over 1 fast 2 quick 1 fox 1 rabbit 2 jump 1, 2
텍스트처리 동의어를처리합니다. TOKEN (TERM) DOC TOKEN (TERM) DOC brown 1 lazi 1 dog 1 over 1 fast 1, 2 quick 1, 2 fox 1 rabbit 2 jump 1, 2
검색 검색어도똑같이텍스트처리를합니다. The lazy rabbits 라고검색하면 lazi, rabbit 검색어를찾습니다. The lazy rabbits lazi rabbit 1 2 DOC TEXT 1 The quick brown fox jumps over the lazy dog 2 Fast jumping rabbits
검색엔진과 RDBMS 비교 RDBMS 는쿼리시점, 검색엔진은색인시점이중요합니다. RDBMS 검색엔진 데이터저장방식정규화역정규화 전문 (Full Text) 검색속도느림빠름 의미검색불가능가능 Join 가능불가능 수정 / 삭제빠름느림
Elasticsearch 클러스터링 Inverted Index 는한번생성되면변경이불가능하기때문에 Elasticsearch 는클러스터링을위해데이터를샤드라는단위로분리해서저장합니다. 샤드 (Shard) 루씬검색쓰레드 0 1 2 3 4 노드 (Node) Elasticsearch 실행프로세스
Elasticsearch 클러스터링 노드를여러개실행시키면같은클러스터로묶입니다. 0 1 2 3 4 Elasticsearch 클러스터 (Cluster)
Elasticsearch 클러스터링 샤드들은각각의노드들에분배되어저장됩니다. 0 2 1 4 3
Elasticsearch 클러스터링 무결성과가용성을위해샤드의복제본을만듭니다. 같은내용의복제본과샤드는서로다른노드에저장됩니다. 0 2 3 1 4 4 0 3 1 2
Elasticsearch 클러스터링 시스템다운이나네트워크단절등으로유실된노드가생기면 0 2 3 1 4 4 0 3 1 2
Elasticsearch 클러스터링 복제본이사라진샤드들은다른살아있는노드로샤드복제를시작합니다. 0 2 3 1 4 0 4 0 3 1 2 4
Elasticsearch 클러스터링 노드의수가줄어들어도샤드의수는변함없이무결성을유지합니다. 0 2 3 1 4 0 3 1 2 4
Aggregation Elasticsearch 에서는검색뿐아니라 Aggregation 기능을이용한데이터집계가가능합니다. Search aggregation hits (docs)
Web Log - 데이터분석 207.241.237.228 - - [08/Aug/2017:22:22:23 +0000] "GET /blog/tags/defcon HTTP/1.0" 200 24142 "http://www.semicomplete.com/blog/tags/c" "Mozilla/5.0 (compatible; archive.org_bot +http://www.archive.org/details/archive.org_bot)"
Web Log - 데이터분석 Logstash 를통해다음과같이파싱이가능합니다.
Web Log - 데이터분석 Logstash 를통해다음과같이파싱이가능합니다.
Web Log - 데이터분석 다음과같은형식의데이터들의처리가가능합니다. 텍스트 위치정보 숫자 키워드
Web Log - 데이터검색 공격에주로사용되는키워드들의검색. (admin, wp-admin, php 등 )
Web Log - 데이터검색 접속오류데이터들을검색. (response:404)
Web Log - 데이터검색 데이터를복합해서검색 ("admin" AND response:200)
Web Log - 데이터집계 Elasticsearch 의 Aggergation 기능을이용해서데이터집계가가능합니다. 분석된텍스트데이터 키워드데이터 수치 (Metric) 데이터
Ecommerce Data
Elasticsearch + Kibana Log : data + timestamp 시계열데이터를이용해서다양한시각화도구를만듭니다. 시각화도구를한눈에볼수있도록대시보드를만들고검색쿼리와기간을활용해서데이터간의연관성을파악합니다. 파악한연관성을바탕으로앞으로의목적달성을위한근거자료로활용합니다.
감사합니다 Elastic 부스에서더많은데모들을시연중이니 많이들러주세요. Copyright c 2017 SAMSUNG ELECTRONICS. ALL RIGHTS RESERVED