6월 선정도서 - 빅데이터를 지탱하는 기술
선정계기 - 데이터가 쌓이고 흐르는 전체적인 구조를 깊이 있게 이해할 수 있고,
미래의 데이터엔지니어로써 해야하는 업무들의 전반적인 흐름을 파악할 수 있을 것 같아 선정(기대가 된다
목차
챕터4. 빅데이터의 축적
4-1. 벌크형과 스트리밍형 데이터의 수집
4-2. 메세지 배송의 트레이드 오프
4-3. 시계열데이터의 최적화
4-4. 비구조화 데이터의 분산 스토리지 (Dynamodb/Cassandra/MongoDB/ElasticSearch/Splunk)
비구조화데이터 = 비정형데이터 = NoSQL 데이터베이스에 저장하는 데이터들
[NoSQL 데이터베이스의 예]
- 분산key-value 스토어 : DynamoDB
- 와이드칼럼 스토어 : Cassandra
- 도큐먼트 스토어 : MongoDB
- 검색엔진 : Elastic Search, Splunk
객체스토리지
빅데이터를 위한 분산스토리지로 '객체스토리지'를 사용한다.
장점
- 필요에 따라 얼마든지 확장할 수 있는 확장성
- 데이터를 구조화하지 않고도 저장할 수 있는 유연성
단점
- 객체스토리지상 파일을 교체하기 어려워 수시로 변경하는 용도에는 적합하지 않다.
- 객체스토리지에 저장된 데이터를 집계하기까지 시간이 걸린다. 실시간 집계와 검색엔 적합하지 않다.
NoSQL데이터베이스
빅데이터를 위한 분산스토리지로 객체스토리지에 적합하지 않은 경우 NoSQL 데이터베이스를 사용한다.
일반적인 데이터베이스처럼 데이터를 수시로 변경해야한다거나
데이터를 기록하고 곧바로 활용하고자하는 경우에 필요한 별도의 데이터저장소이다.
객체스토리지와 NoSQL 데이터베이스에 대해서 더 깊게 알아보도록 하자.
https://pearlluck.tistory.com/566
분산 KVS(Key-Value Store) : DynamoDB
분산 KVS
모든데이터를 Key-Value 쌍으로 저장하도록 설계된 데이터저장소이다.
모든 데이터에 고유의 키를 지정하고, 그것을 부하분산을 위해 이용한다.
키가 정해지면 그 값을 클러스터 내의 어느 노드에 배치할 것인지 결정한다.
그래서 노드간의 부하를 균등하게 분산하고, 노드를 증감함으로써 클러스터의 성능을 변경할 수 있다.
모든 노드가 대등한 관계이기 때문에 클라이언트는 어떤 노드에 연결해도 데이터를 읽고 쓸 수 있다.
DynamoDB
안정된 읽기 쓰기 성능을 제공하도록 디자인된 분산형 NoSQL 데이터베이스.
하나 또는 두개의 키에 연결하는 형태로 임의의 스키마리스 데이터 저장
JSON과 같이 중첩된 데이터 구조도 취급할 수 있다.
DynamoDB구조
P2P형 분산아키텍쳐
P2P형 분산아키텍쳐를 갖고 있어 미리설정한 초단위 요청수에 따라 노드가 증감된다.
데이터의 읽기 쓰기에 지연이 발생하지 않도록 운용할 수 있다.
DynamoDB의 데이터분석
대량의 데이터를 집계하는데는 적합하지 않아 외부로 데이터를 추출해서 데이터분석
EMR 및 RedShift와 결합함으로써 Hive에 의한 배치처리 실행하거나 데이터웨어하우스에 데이터를 전송한다.
DynamoDB Streams를 사용해 데이터변경을 이벤트로 외부에 전송해 실시간 스트림처리를 할 수 있다.
대량의 데이터를 집계하는 기능이 없어 데이터분석을 위해 외부로 데이터를 추출해야한다.
와이드 칼럼 스토어(Wide Column Store) : Apache Cassandra
와이드 칼럼 스토어
분산KVS를 발전시켜 2개이상의 임의의 키에 데이터를 저장할 수 있도록 설계된 데이터저장소이다.
내부적으로 하나의 테이블에 행키와 칼럼명의 조합(가로X세로 2차원 데이터)에 대해 값을 저장한다.
테이블에 새로운 행을 추가하는 것과 마찬가지로 칼럼도 얼마든지 추가할 수 있다.
Apache Cassandra
대표적인 오픈소스 와이드칼럼 스토어.
테이블의 스키마를 결정한 구조화된 데이터 저장
CQL이라 불리는 높은 수준의 쿼리언어 구현
->SQL처럼 테이블 조작가능하지만 쿼리의미가 조금 다름
Cassandra 구조
DynamoDB와 마찬가지로 P2P형 분산아키텍쳐를 갖고 있다.
그래서 지정한 키로 결정한 노드에 해당키와 관련된 모든 값을 저장한다.
다수의 독립적인 키가 있는 경우 분산처리에 유용
예를 들어, 사용자ID를 키로 사용하는 경우 그 사용자에 대한 기록이 하나의 노드에 모이고, 그 노드안에서 쿼리수행
Cassandra 의 데이터분석
DynamoDB와 마찬가지로 대량의 데이터를 집계하는데는 적합하지 않아 외부로 데이터를 추출해서 데이터분석
집계를 위해서 분산된 모든 노드에서 데이터를 모아야하기 때문이다.
Hive,Presto,Spark 등 쿼리엔진을 이용해 외부로 데이터를 추출해야한다.
도큐먼트 스토어(Document Store) : MongoDB
도큐먼트 스토어
와이드칼럼 스토어가 성능향상을 목표로 하는 반면, 도큐먼트 스토어는 데이터처리의 유연성이 목적.
JSON처럼 복잡하게 뒤얽힌 스키마리스 데이터를 그대로의 형태로 저장하고, 쿼리실행가능
분산KVS도 JSON을 저장할 수 있지만, 도큐먼트 스토어가 더 복잡한 쿼리를 실행할 수 있다.
스키마를 정하지 않고 데이터를 처리할 수 있다.
그래서 시스템의 데이터 및 로그저장처럼 외부에서 들어온 데이터를 저장하는데 적합.
MogoDB
대표적인 오픈소스 분산형 도큐먼트 스토어
프로그래밍 언어나 자바스크립트를 사용해 데이터를 읽고 쓸 수 있다.
성능을 우선 신뢰성을 희생했지만, 간편하다는 이유로 인기가 높다.
MongoDB의 데이터분석
DynamoDB,Cassandra 와 마찬가지로 대량의 데이터를 집계하는데는 적합하지 않다.
데이터분석이 목적인 경우 쿼리엔진으로부터 데이터를 추출해야한다.
검색엔진
검색엔진이란?
저장된 데이터를 쿼리로 찾아낸다.
텍스트데이터를 전문검색하기 위해 역색인(inverted index) 을만든다.
역색인
텍스트에 포함된 단어를 분해하고, 어떤 단어가 어떤 레코드에 포함되어 있는가 하는 인덱스를 먼저 만들어둔다.
모든텍스트 전체를 스캔해서 레코드를 찾는게 아니라서 검색속도가 빠르다.
따라서 데이터를 기록하는 시스템 부하 및 디스크 소비량은 커지지만, 그 덕분에 키워드 검색이 훨씬 고속화된다.
NoSQL은 성능향상을 위해 인덱스작성을 제한한다.
반면에 검색엔진은 적극적으로 인덱스를 만들어서 검색에 효과적
검색엔진을 언제사용하나?
데이터의 집계에 적합
비정상적인 상태의 감지 및 보안체크, 고객서포트처럼 민첩성이 요구되는 용도에서 최근데이터를 보기 위해 사용
장기적으로 데이터를 축적하기 보다 실시간 집계 시스템의 일부로 이용된다.
메시지가 배송된 데이터를 분산스토리지에 저장하는 한편,
같은데이터를 검색엔진에 전송해서 실시간성이 높은 데이터처리를 위해 활용
ElasticSearch
로그수집 소프트웨어인 Logstash, 시각화 소프트웨어인 Kibana와 함께 ELK스택으로 자주 이용된다.
아무것도 지정하지 않으면 모든 필드에 인덱스(색인)이 만들어진다.
텍스트데이터에서는 역색인이 만들어진다.
쓰기부하가 크고, 필요에 따라 명시적으로 스키마를 결정함으로써, 색인을 무효화해야함.
임의의 JSON데이터를 저장할 수 있기 때문에
도큐먼트스토어와 비슷해서 스키마리스데이터를 읽고 쓰는 목적으로도 사용가능
데이터를 자주 집계해야하는 경우 ElasticSearch의 집계기능 사용하면 됨. 하지만 검색과 집계목적에 불과.
자체쿼리언어에 의한 고급집계도 가능하다.
열지향 스토리지에도 대응하고 있어 데이터를 집계할 수 있다.
다만 표준쿼리언어는 너무 복잡해서 kibana같은 프론트엔드를 이용하거나 프로그램안에서 호출하는 방식
Splunk(스플링크)
상용검색엔진으로 텍스트 데이터를 집계하기 위한 도구.
웹서버, 네트워크 기기 등으로 부터 출력되는 로그파일이나 JSON파일같은 비정형데이터에 적합.
텍스트 처리를 해야만 분석할 수 있는 데이터를 집계하는데 적합.
키워드를 입력하면 그것을 포함하는 로그를 찾을 수 있다.
최근데이터 순서대로 검색이 되서 매일발생하는 각종 이벤트를 빠르게 찾거나 보고서를 작성하는 목적으로 이용
실행할때 텍스트에서 필드가 추출된다.
처음에 키워드검색을 통해 로그를 찾으면 패턴매치에 의해 키와 값이 추출된다.
그 결과 검색할때 마다 데이터가 구조화되어 있어 쿼리를 다시 작성함으로써 어떤 테이블이라도 유연하게 만들수있음
|을 사용하여 데이터를 순차적으로 가공한다.
대화형쿼리를 사용하여 데이터를 추출,필터링,교차분석 및 시각화까지 하나의 화면에서 실행할 수 있다.
텍스트 테디어를 애드훅 분석할때 유용
'Book & Lesson' 카테고리의 다른 글
[책정리]빅데이터를 지탱하는 기술 5.3 스트리밍형 데이터플로우 (0) | 2021.07.11 |
---|---|
[책정리]빅데이터를 지탱하는 기술 5.2 배치형의 데이터 플로우 (0) | 2021.07.11 |
[책정리]빅데이터를 지탱하는 기술 5.1 워크플로 관리 (0) | 2021.07.05 |
[책정리]빅데이터를 지탱하는기술 4.3 시계열데이터의 최적화 (0) | 2021.06.26 |
[책정리] 빅데이터를 지탱하는기술 4.2 메세지 배송의 트레이드 오프 (0) | 2021.06.26 |
[책정리] 빅데이터를 지탱하는 기술 4.1 벌크형/ 스트리밍형 데이터 수집 및 전송 (0) | 2021.06.23 |