Big Data/빅데이터: 36개의 글
문서의 구조가 정형화되지 않은 환경에서 다양한 저장소와 검색엔진이 검색조건에 맞는 문서를 찾을 수 있다. 엘라스틱 서치가 "SELECT * FROM users WHERE name LIKE 'bob%'"이라는 질의와 갖는 차이점은 관련 있는 문서를 점수를 통해 묶어주는 기능이다. 이 점수로부터 찾고자 하는 질의와 문서가 얼마나 관련있는지 알 수 있다. 사용자가 웹사이트 검색창에 입력하는 검색어는 입력한 검색어에 꼭 맞는 것뿐만 아니라, 유사한 것들도 같이 보기를 원한다. 알려진 대로 엘라스틱서치는 문서의 연관성을 결정하는데 유연성을 가지고 있고, 관련성 높은 결과를 얻기 위하여 사용자가 검색을 정의하는 많은 방법이 있다. 문서가 질의에 얼마나 잘맞는지 특별히 고려하지 않고 단지 문서가 일치하는지 안하는지 ..
엘라스틱서치에 데이터를 전송할때 실제 무슨일이 일어날까? 도큐먼트에서 텍스트를 엘라스틱서치로 전송하면 어떤 일이 발생할까? 엘라스틱서치는 대소문자가 변경될 때조차 문장 내에서 어떻게 특정 단어를 찾을 수 있을까? 엘라스틱서치의 분석이 더 유연한 방식으로 도큐먼트 집합을 검색하도록 하는지 알아보자. 분석은 엘라스틱서치가 도큐먼트를 역색인에 추가되도록 전송하기 전에 도큐먼트 본문에서 수행하는 과정이다. 엘라스틱서치는 도큐먼트가 색인에 추가되기 전에 모든 문석된 필드를 위해 수많은 단계를 거친다.문자 필터링 - 문자 필터를 이용해서 문자들을 변환한다.텍스트를 토큰으로 분해 - 텍스트를 한 개 이상의 토큰의 집합으로 분해한다.토큰 필터링 - 토큰 필터를 사용해서 개별 토큰을 변환한다.토큰 색인 - 토큰을 색인에..
엘라스틱서치는 루씬 검색 기능을 모두 사용해서 데이터를 검색할 수 있도록 풍부한 API를 제공한다. 엘라스틱서치는 그 형식 덕분에 다양한 조합으로 검색 요청을 만들 수 있다. 데이터에 사용할 적절한 필터 조합 쿼리를 찾는데 가장 나은 방법은 시험해보는 것이다. 프로젝트 데이터에서 원하는 가장 적합한 것을 찾기 위해 여러가지 조합을 시도해보는 것이 가장 중요하다. 검색 요청과 검색 요청의 결과가 일반적으로 어떻게 보여질까?검색 API의 주요 구성 요소 중 하나인 쿼리와 필터 DSL를 알아본다.필터와 쿼리에 사용하는 가장 일반적인 방법 / 쿼리와 필터의 차이점엘라스틱서치가 도큐먼트의 점수를 어떻게 계산할까?REST API 검색 요청은 처음 접속하려고 선택한 노드에 전송되고 검색 요청을 모든 샤드(주 또는 레..
ETL이라는 것은 데이터를 추출, 변확하고 저장소에서 읽게하는 스텝을 뜻한다. 데이터 분석 시스템의 운영에서 가장 중요한 것은 ETL 각각이 정상적으로 동작하는 것이다. Fluentd로 스트림처리에 있어서 ETL을 담당하는 툴인 것이다. ExtractExtract는 데이터 추출의 스텝이다. Fluentd에서는 Input계의 플러그인에 해당한다. 예를 들어 파일이나 HTTP 요청을 소스로 해서 추출할 수 있다. 로그 파일의 경우 파일을 받은 뒤에 각 행이 어떤 데이터를 가지고 있는지를 파악하는게 이 스텝의 역할이다. Nginx의 액세스 로그를 받는 예시에서는 각 필드의 값을 Fluentd가 식별해서 읽는다. TransformTransform은 데이터 변환을 위한 스텝이다. 추출된 데이터를 저장소에 저장하기..
분석 기반을 만든다는 것은 분석에 의한 결과를 지속적으로 만들어 내기 위한 구조를 만드는 것이다. 분석이라는 것은 현황을 확인하고, 비즈니스적인 의사결정을 하는 것이다. 의사결정을 위해서 분석을 하는 것이다. 데이터 분석 기반은 그 의사결정을 장기적으로 지원하기 위해 설계해야 한다. [수집]: 어떤 데이터를 모을 것인가. 어떤 데이터를 보관할 것인가. [변환]: 데이터를 어떻게 전처리해서 분석하기 쉬운 형태로 바꿀 것인가. [보존]: 데이터를 어디에 저장할 것인가. [분석]: 어떤 기반에 넣어서 데이터를 분석하고 활용할 것인가. 데이터를 넣는 것 뿐만 아니라 분석을 위한 좋은 환경을 만들기 위해서 어떻게 해야할까. [표시]: 어떻게 데이터를 시각화하고, 결과를 전달할까. [운영]: 데이터를 분석하기위한 ..
엘라스틱 서치는 실시간 검색을 제공하면서 집계 기능을 제공하고, 시스템 확장에도 용이하여 로그 시스템 개발에 활용하기 적합하다. 결과에 대한 통계를 제공해서 사용자가 흥미를 느끼는 것에 대해 범위를 좁혀 갈 수 있어야 한다. 데이터 검색을 위해서는 몇가지 이슈를 다루어야 한다. 관련 검색 결과를 내놓고, 통계를 제공하고, 빠른 처리 속도가 필요하다. 이러한 경우 엘라스틱서치와 같은 검색엔진을 사용하는 것이 적합하다. 관계형 데이터베이스 위에 검색엔진을 배포해서 색인을 생성하고 SQL 질의 속도를 올릴 수 있다. 검색 기능을 추가하기 위해서 NoSQL 저장소의 데이터 색인을 만들 수 있는데, 엘라스틱서치에서 모두 사용 가능한 기능이다. 앨라스틱서치 클러스터를 색인/검색/관리 하기 위해 데이터를 JSON 형..
예전에는 여러대의 장비에서 데이터 필터링/서칭 등이 필요하면, 큰 하나의 파일을 n개로 나눠서 n개의 장비에 두고, 각 장비별로 filter/grep/join 등의 작업을 수행하는 방식이였다. (데이터가 있는 장비에서 필요한 작업은 데이터있는 장비에서 수행) 이런 경우. 장비에 장애가 났을때 원상태로 복원하는데까지 시간이 오래걸릴 수 밖에 없었다. 데이터 복사, 작업을 위한 데이터 정제. (MTTR 시간 지연) 현재는 계산 노드가 데이터를 갖고있는것이 아니라 각 노드가 무슨일을 하고 있는지 일을하는데 필요한 데이터를 그때그때 fetch하는 방식이다. 따라서 장애가 나더라도 장애난 노드의 역할을 다른 노드의 위임하는 방식으로 MTTR에 대한 이슈를 해결했다. 이를 내결함성(fault-tolerance)라고..
ElasticSearch에서의 검색은 인덱스/타입 단위로 수행됨. Document는 그 자체가 1개의 최소 데이터 단위이므로 Document 단위로 검색한다는 것은 불가능. 클러스터의 모든 인덱스는 _all 로 검색 가능. $ curl 'localhost:9200/_all/_search?q=time&pretty' ElasticSearch URI 검색 q(query)특정 필드만 검색하려면 q 매개변수에 필드명:질의어 형식으로 값을 일력한다. title 필드에서 검색어 time을 검색하는 명령 $ curl 'localhost:9200/_search?q=title:time&pretty' $ curl 'localhost:9200/_search?q=title:time%20AND%20machine&pretty' d..
Elastic Search의 이용 - 위키피디아: ElasticSearch를 이용해 전문검색(Full Text Search)을 수행하고 실시간 타이핑 검색, 추천 검색어 기능 등에 활용 중.- 더가디언지: 방문객의 로그 분석을 통한 소셜 데이터를 생성해 실시간 응대와 기사에 대한 반응 분석 등에 ElasticSearch를 사용 중.- 스택오버플로우: 검색 내용과 결과를 통합해 유사한 질문과 해답을 연결하는데 ElasticSearch를 활용.- 깃허브: 1,300억 줄이 넘는 소스 코드를 검색하는데 ElasticSearch를 사용 중. http://www.elasticsearch.org/case-studies Search Engine 아키텍처 (https://www.searchtechnologies.com..
키바나는 Elastic Stack의 일부분으로, 저장 계층인 Elastic Search에 색인된 데이터 위에서 시각화 계층을 제공합니다. 데이터는 다양한 형태와 규모로 다가옵니다. 통신 업계의 경우, 10만 개의 네트워크 디바이스에서 수집한 데이터로부터 서비스 품질을 분석하는 프로젝트는 흔히 볼 수 있습니다. - 빠르게 증가하는 데이터를 취급하기 위해 복잡성을 어떻게 줄일 것인가? - 가장 효과적이면서 실시간으로 데이터를 시각화하기 위해 조직은 어떻게 해야 할까? 대부분의 애플리케이션은 위치와 프로파일에 기반을 둔 추천 항목을 만드는데 관련된 다양한 기술 계층에서 데이터를 생산합니다. 이들 위에서 돌아가는 모든 컴퓨터와 프로세스와 애플리케이션은 CPU 틱이나 사용자의 클릭에 의해 효과적으로 시스템의 '현..