스트림 데이터 적재하기 (HttpToMongodbExample)


HTTP restful 인터페이스를 통해서 스트림으로 입력되는 데이터를 MongoDB에 저장하는 예제를 설명합니다.

입력 데이터 준비하기

본 예제에서는 스트림 데이터를 생성해야 합니다. 이를 위해 KSB 클라이언트 SDK 를 다운로드 하십시오. 프로젝트에 포함된 테스트 스크립트를 이용하여 시뮬레이션 할 수 있습니다.

$ sudo apt-get install curl
$ cd ~/ksb-csle/examples
$ ./send-data-via-http.sh ${HTTP_IP}:${HTTP_PORT}

워크플로우 생성하기

워크플로우 편집화면을 이용하여 아래의 과정을 통해 워크플로우를 생성합니다.

속성 비고
name HttpToMongodbExample 워크플로우 이름
description 스트림 데이터를 MongoDB에 적재하는 예제 워크플로우를 설명하는 글
isBatch false 스트림 처리를 하는 워크플로우 이므로, false 로 지정
verbose false 디버깅을 위해 로그정보를 보고자할 경우, true 로 지정

엔진 선택

본 예제에서는 스트림 데이터를 입력받아 처리한 뒤 MongoDB에 적재하므로 StreamToBatch 엔진을 드래그앤 드롭합니다.

순번 엔진 Type NickName RunType 설명
1 StreamToBatch ProcessingEngine 즉시실행 스트림 데이터를 MongoDB에 적재

Reader

HTTP 서버로부터 전달되어 오는 데이터를 입력 받기 위해 HttpServerReader 를 드래그 앤 드롭한 후 아래표와 같은 속성을 지정합니다.

field value 설명
ip 0.0.0.0 HTTP 서버의 주소를 입력합니다.
port 53001 HTTP 서버의 포트번호를 입력합니다.

Writer

MongodbWriter 를 드래그앤 드롭한 후 아래표와 같은 속성을 지정합니다.

field value 설명
serverAddress localhost:27017 MongoDB 서버 주소 및 포트
dbName examples DB 명
collectionName data_from_http 생성할 테이블 명
cleaningDataInconsistency true 기존 테이블 삭제 및 재생성 여부

Controller

SparkSessionOrStreamController 를 드래그앤 드롭한 후 아래 표와 같은 속성을 지정합니다.

field value 설명
setOperationPeriod 3 스트리밍 처리 주기 (초 단위)

Runner

SimpleSparkRunner 를 드래그앤 드롭합니다. 디폴트 속성값을 사용합니다.

Operator

본 예제에서는 스트림 입력을 그대로 MongoDB에 적재하므로 Operator를 사용하지 않습니다. 만약 스트림 입력 데이터를 가공해야 할 경우, 필요한 Operator를 드래그앤 드롭하여 속성값을 지정한 후 사용할 수 있습니다.


워크플로우 완성 화면

ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. HttpToMongodbExample 을 불러오기하여 사용할 수 있습니다.

워크플로우 불러오기

워크플로우 실행 및 모니터링하기

워크플로우 실행하기

위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼()을 클릭합니다. 본 예제는 스트림 데이터를 처리하므로 Batch 체크 박스를 해제하고 워크플로우를 실행합니다.

워크플로우 실행화면

워크플로우 모니터링 하기

워크플로우 상태 확인

KSB 웹툴킷 상단의 Monitoring 메뉴를 클릭하여 진행내역/상태모니터링 화면으로 이동합니다. Workflow 탭에서 작성한 워크플로우가 실행 중 (Inprogress)인 것을 확인할 수 있습니다. 이 화면에서 실행 중인 워크플로우를 종료()하거나, 다시 실행()할 수 있습니다.

워크플로우 동작 상태 확인

워크플로우 로그 보기

WorkFlow History 탭을 선택하면, KSB 인공지능 프레임워크에서 워크플로우가 동작하며 발생시킨 로그 정보를 확인 할 수 있습니다.

워크플로우 히스토리

워크플로우 동작 로그

데이터 적재 결과 확인하기

입력 데이터 준비하기 에서 설명한 방법대로
./send-data-via-http.sh를 이용하여 http로 데이터를 전송합니다.

csle@csle1:~/ksb-csle/examples$ ./send-data-via-http.sh localhost:53001
send data to: localhost:53001
OK! I got it.

MongoDB 클라이언트 프로그램을 이용하여, 위에서 발생한 스트림 데이터가 MongoDB에 적재되었는지 확인합니다.

docker exec -it csle1 bash
csle@csle1:/$ cd /home/csle/mongodb/bin
$ mongo

MongoDB

> show dbs
> use examples

MongoDB

> show collections

MongoDB

> db.data_from_http.find()

MongoDB

워크플로우 종료하기

본 예제는 지속적으로 스트림데이터가 입력되므로 사용자가 워크플로우를 종료해야 합니다.
KSB 웹툴킷 상단의 Monitoring 메뉴를 클릭하여 진행내역/상태모니터링 화면으로 이동합니다. Workflow 탭에서 실행 중인 워크플로우를 종료()합니다.