본문 바로가기

2017/03

Flink 시작하기 #2 Basic API Concept #DataSet and DataStream Flink는 크게 Streaming과 Batch 를 처리하는 방식에 따라 사용하는 API가 나뉜다. DataStream은 Streaming을 처리하기 위한 클래스이고 Batch는 DataSet을 사용한다. 두 클래스를 처리하는 elements가 무한으로 들어오느냐 아니면 끝이 있는 bounded 데이터냐가 가장 큰 차이이다. 두 클래스 모두 immutable한 속성을 가지고 있다. 즉, 변경되지 않는 콜렉션의 개념이다. #Anatomy of a Flink Program Flink 프로그램은 다음의 순서로서 동자 Obtain an execution environment: (ExecutionEnviroment를 생성해 DataStream, DataSet을 만들기 위.. 더보기
Flink 시작하기 #1 소개 (Basic Concept) #Flink란? stream processing framework for distributed, high-performing, always-available, and accurate data streaming applications. 라고 소개되고 있다. 간단히 말해 최근 많이 사용되는 apache Storm, Spark Streaming과 같은 스트리밍 & 배치 프로세싱 플랫폼이다. Flink는 Streaming model이 batch가 아닌 native 방식으로 스트림 처리에 대해 low latency 특성을 가진다. 그리고 Exactly-once를 보장하고 높은 처리량을 보이기 때문에 최근 스트림 처리 분야에서 곽광받고 있다. 실시간 처리 프레임워크 비교 포스팅에서 최근 많이 사용하고 있는 스트림 .. 더보기
람다 아키텍처 (Lambda Architecture) 람다 아키텍처란? 실시간 분석을 지원하는 빅데이터 아키텍쳐 대량의 데이터를 실시간으로 분석하기 어려우니 batch로 미리 만든 데이터와 실시간 데이터를 혼합해서 사용하는 방식이다. 위 그림은 람다 아키텍쳐의 구성을 설명하고 있다. 데이터가 생성되면 데이터 저장소에 저장을 한다. 이 데이터는 batch로 일정주기마다 배치 뷰를 만들어 낸다. 그리고 동일한 데이터를 실시간 데이터 처릴 통헤 real-time 뷰를 만들다. 그리고 이 두개를 혼합해 분석을 빠르지만 실시간 데이터가 반영된 분석을 할 수 있다. 람다 아키텍쳐는 총 3개의 layer로 구성된다. batch layer: raw 데이터가 저장되어 있고, batch 처리하여 배치 뷰 생성 serving layer: batch로 분석된 데이터가 저장되어 .. 더보기
elastic stack #5 beats 소개 & quickstart #beats란? Beats는 특정 목적을 위한 데이터 수집기용 플랫폼입니다. 경량 에이전트로 설치되어 수백 개 또는 수천 개 데이터를 Logstash 또는 Elasticsearch로 전송합니다. 라고 공식홈페이지 한글 번역으로 소개하고 있다. 아래 그림을 보면 단번에 이해가 갈 것이다. Elastic stack에서 로그 에이전트로 최초 로그를 생성 및 수집한다. 그림처럼 직접 elasticsearch로 전달할 수 도 있고, Logstash로 전달할 수 있다.(다른 output 가능하다) #Beats 종류 Beats는 세부적으로 기능에 따라 나누어져 있다. Filebeat: 로그 파일의 데이터를 수집 Metricbeat: 서버의 CPU, 메모리 사용률 수집이 가능하고, DBMS나 Docker등의 서비스의 .. 더보기
elastic stack #4 kibana 소개 & quick start #kibana란? 공식페이지에서는 window into the Elastic Stack 라고 소개하고 있다. 엘라스틱 스택을 들여다보는 창(?)이라고 한다. 그냥 쉽게 elasticsearch의 데이터를 쉽게 시각화해주는 도구라고 보면된다. elasticsearch가 많은 인기를 끄는 큰 이유중에 하나이다. 쉬운 데이터 시각화! kibana는 node.js로 만들어진 Web Application이다. #kibana 설치 kibana설치에 앞서 당연히 설치된 elasticsearch가 필요하다. elasticsearch 설치 포스팅을 보고 미리 설치를 해놨다고 가정하고 다음예제를 진행한다. https://www.elastic.co/downloads/kibana 에서 다운받아 압축을 푼다. 그리고 약간의 c.. 더보기
elastic stack #3 logstash 소개 & quick start #Logstash란? 공식페이지에서는 data collection engine 라고 소개하고 있다. 즉, 데이터를 수집하여 전달하는 역할을 하는 도구이다. 데이터를 그대로 전달할 수 도 있고, 데이터를 가공하여 전달할 수 있다. 여러 플러그인을 통해 다른 시스템과의 호환성도 좋다. 주로 Elasticsearch와 함께 쓰인다. #Logstash 설치 https://www.elastic.co/downloads/logstash 에서 다운받아 압축을 푼다. 이게 설치 끝이다. 데이터를 수집하는 역할을 하기 때문에 주로 application server의 로그를 저장한다는 가정하에 각 server에 설치하여 동작하도록 하는 구조이다. 일단 다음 포스팅으로 ELK Stack을 사용하여 web server 의 로그.. 더보기
elastic stack #2 elasticsearch 설치 & quick start 1. elasticsearch 설치 정말 쉽게 설치가 가능하다. https://www.elastic.co/downloads 에서 elasticsearch를 다운받아 압축을 해제한다. 글 작성 기준 최종 버전인 5.2 로 예제를 작성할 것이다. JAVA 1.8이 기본적으로 설치가 되어있어야 한다. cluster 구성 및 elasticsearch 설정을 변경하기 위해 설정파일의 수정이 필요하지만 지금 예제에서는 local에서 간단하게 설치할 것 이기 때문에 따로 설정파일의 변경이 필요하지 않다. 2. elasticsearch 실행 설치된 폴더에서 bin 폴더에 실행파일이 있다. os에 따라 실행 파일이 다르다. mac osx기준으로 예제를 설명하겠다. (windows는 .bat 파일을 사용) 실행 파일을 다.. 더보기
elastic stack #1 elasticsearch 소개 #elasticsearch란? https://www.elastic.co/kr/ 공식적으로 A Distributed RESTful Search Engine 라고 설명하고 있다. 설명을 보면 알수 있듯이 분산환경에서 RESTful API를 지원하는 검색 엔진이다. 루씬을 기반으로한 검색엔진을 사용하고, 대용량 데이터를 처리하는데 적합하며 준실시간으로 데이터를 저장하고 검색, 분석할 수 있다. #사용목적 대용량 자료에서의 검색 시간이 중요한 시스템 개발 시 사용 데이터를 저장하고 분석하기 위해 NoSql로서 사용 #특징 분산시스템: 이로인해 높은 확장성과 고가용성을 가질 수 있다. Full Text Search Multi Tenancy: 하나의 서버에 여러 인덱스를 저장, 관리 할 수 있으며, 독립된 하나의 .. 더보기