Loading...

스파크스트리밍

2 Contents
최신순

BeeAI 공모전 교육 영상(02) - 데이터 수집적재하기(41~49p)

데이터 분석 및 시각화 시스템(BI) 개발의 첫 번째 관문은 바로 데이터의 수집과 적재입니다. 이번 과정에서는 웹 툴킷을 활용하여 스트림 데이터를 배치 저장소에 안전하게 저장하는 실습을 진행합니다. 특히 실시간으로 발생하는 데이터를 효율적으로 처리하기 위해 미니 배치 엔진과 Spark Streaming 기술이 핵심적인 역할을 수행합니다. 사용자는 압축된 모델 파일이나 데이터셋을 레지스트리에 등록하여 엔진 동작 시 활용하게 되며, 이는 전체 분석 시스템의 기초가 됩니다. 구체적인 예제로 HTTP 서버 리더를 통해 수신한 데이터를 MongoDB에 저장하는 과정을 살펴봅니다. 특정 포트를 통해 들어오는 스트림 데이터는 Spark Streaming 컨트롤러에 의해 처리되며, 설정된 주기마다 엔진이 깨어나 적재 작업을 수행합니다. 여기서 미니 배치 방식은 데이터를 일정 간격으로 나누어 처리함으로써 시스템의 부하를 줄이고 데이터의 정합성을 유지하는 데 기여합니다. 이는 대규모 트래픽이 발생하는 환경에서 시스템 안정성을 확보하는 중요한 기법입니다. 실습 환경에서는 실제 센서 데이터 대신 시뮬레이터 엔진을 활용하여 스트림 데이터를 발생시킵니다. 시뮬레이터는 저장된 텍스트 파일을 한 줄씩 읽어 지정된 포트로 전송하며, 실제 운영 환경에서 데이터가 지속적으로 유입되는 상황을 정밀하게 모사합니다. 이를 통해 사용자는 데이터가 리더를 거쳐 적재기까지 흐르는 전체적인 데이터 파이프라인의 흐름을 직관적으로 이해할 수 있습니다. 또한, 운영 화면에서 각 엔진의 상태를 모니터링하며 실시간 전송 과정을 제어하는 역량을 기를 수 있습니다. 원활한 실습 진행을 위해서는 네트워크 설정이 필수적입니다. 리눅스나 윈도우 환경에서 hosts 파일을 수정하여 할당받은 IP와 마스터 노드, 프록시 서버의 이름을 연결해 주는 작업이 선행되어야 합니다. 이는 시스템 내부의 모듈들이 서로를 올바르게 인식하고 데이터를 주고받기 위한 통신 경로를 확보하는 필수 과정입니다. 관리자 권한으로 파일을 열어 설정값을 정확히 입력해야만 엔진 간의 상호작용이 문제없이 이루어지며, 통신 장애로 인한 데이터 누락을 방지할 수 있습니다. 데이터가 정상적으로 적재되고 있는지 확인하기 위해 결과 검증기(Result Validator)라는 워크플로우를 사용합니다. 이 엔진은 저장소에 쌓인 데이터를 읽어 파일로 출력하며, 실시간 적재 여부에 따라 출력 파일의 크기가 점진적으로 증가하게 됩니다. 단순히 데이터가 쌓이는 것뿐만 아니라, 예상한 경로에 올바른 형식으로 데이터가 기록되는지를 수시로 점검하는 과정은 데이터 품질 관리 측면에서 매우 중요합니다. 실습자는 이를 통해 엔진이 정상적으로 작동하고 있음을 육안으로 확인할 수 있습니다. 외부 플랫폼과의 연동 실습으로는 IoT 엣지 컴퓨팅 플랫폼인 EdgeX를 활용합니다. EdgeX는 다양한 IoT 기기에서 발생하는 데이터를 통합 관리하는 오픈 소스 프로젝트로, BI 시스템과는 MQTT 프로토콜을 통해 데이터를 주고받습니다. 사용자는 EdgeX MQTT 리더를 등록하여 플랫폼에서 발생하는 JSON 형식의 스트림 데이터를 수신하게 됩니다. 이 과정은 이기종 시스템 간의 데이터 통합을 구현하는 실무적인 기술로, 다양한 산업 현장에서 폭넓게 활용되는 연동 방식입니다. 수신된 EdgeX 데이터는 포맷 변환 연산자를 통해 정제 과정을 거칩니다. JSON 형태로 들어온 복잡한 구조의 데이터는 분석에 용이한 데이터프레임이나 CSV 형식으로 변환되어 HDFS 등에 최종적으로 저장됩니다. 이러한 과정은 미니 배치 엔진에 의해 주기적으로 실행되며, 데이터의 추가 모드를 활용하여 지속적으로 유입되는 정보를 유실 없이 기록함으로써 실시간 데이터 파이프라인을 완성하게 됩니다. 실습을 마친 후에는 실행 중인 스트림 엔진을 종료하여 리소스를 관리하는 것도 중요합니다.

BeeAI 공모전 교육 영상(02) - 데이터 수집적재하기(41~49p)
한국전자통신연구원
  • 융합
  • 공학·기술

BeeAI 활용 교육 영상(05) - [2단계] 스트림 데이터 처리하기실습

BeeAI 플랫폼을 활용하여 강남 지역의 실시간 교통 속도를 예측하는 인공지능 서비스는 현대 도시 교통 효율을 높이는 핵심적인 기술입니다. 이 시스템은 강남 일대 택시에서 전송되는 초 단위 센서 데이터를 수집하여, 170개의 도로 링크별로 15분 후의 교통 상황을 정확하게 예측하는 것을 목표로 합니다. 방대한 데이터를 단순히 수집하는 것에 그치지 않고, 복잡한 워크플로 엔진들을 통해 실시간 스트림 처리를 수행하며 지능형 교통 시스템의 기반을 마련합니다. 교통 데이터 처리는 크게 수집, 전처리, 학습, 서빙의 다섯 단계 엔진으로 구성됩니다. 택시에서 전송되는 원본 데이터는 시간 정보, 도로 링크 ID, 현재 속도라는 단순한 구조로 이루어져 있지만, 초 단위로 발생하는 데이터 양이 매우 방대합니다. 이 데이터들을 시스템이 이해할 수 있는 형태로 변형하기 위해 각각의 역할을 수행하는 엔진들을 유기적으로 연결하며, 이를 통해 결측치를 보정하고 이상치를 제거하여 교통 예측의 정확도를 확보하는 복합적인 과정을 거게 됩니다. 실시간 스트림 전처리 단계인 엔진 A와 B에서는 초 단위 데이터를 1분 및 5분 단위로 정제하는 작업을 수행합니다. 센서와 네트워크의 상태에 따라 발생할 수 있는 결측치를 채워주는 결측치 처리가 이 과정에서 이루어지며, 딥러닝 모델이 학습하기에 적합한 5분 단위의 평균 속도 데이터를 생성합니다. 이러한 스무딩 과정을 통해 데이터의 불규칙성을 완화하고, 학습 모델이 교통 흐름의 전체적인 패턴을 보다 명확하게 파악할 수 있도록 데이터의 질을 높이는 역할을 합니다. 딥러닝 학습용 데이터를 생성하는 엔진 D는 스트림 형태의 데이터를 배치 형태의 CSV 파일로 변환하는 작업을 담당합니다. 텐서플로 기반의 학습 코드가 데이터를 읽어올 수 있도록 Min-Max 스케일링을 통해 속도 값을 정규화하고, 비정상적인 이상치를 제거하는 과정을 거칩니다. 또한, 170개 도로 링크의 데이터를 시간순으로 정렬하고 피벗 연산을 수행하여, 8주기 동안의 속도 패턴이 가로 형태로 배열된 시퀀스 데이터를 생성함으로써 모델 학습을 위한 최적의 상태를 만듭니다. 교통 예측의 핵심 모델로는 시계열 패턴 학습에 탁월한 성능을 보이는 LSTM(Long Short-Term Memory) 딥러닝 모델이 사용됩니다. 이 모델은 과거 8주기(약 40분) 동안의 교통 속도 변화 추이를 분석하여 특정 도로 링크의 미래 속도를 예측하도록 설계되었습니다. 엔진 E는 주기적으로 갱신되는 최신 데이터를 학습하여 예측 모델을 최적화하며, 학습이 완료된 모델은 실제 서비스 환경에 탑재되어 시시각각 변하는 도로 상황에 유연하게 대응할 수 있는 지능을 갖추게 됩니다. 예측된 결괏값은 사용자 인터페이스를 통해 시각적으로 전달되어 실제 교통 관제나 내비게이션 서비스에 활용됩니다. 엔진 C에서 이루어지는 스트림 서빙 단계는 최신 학습 모델을 기반으로 현재 유입되는 스트림 데이터에 대한 예측을 실시간으로 수행합니다. 15분 후의 속도가 평균 이하로 예상되는 도로 링크는 빨간색으로, 원활한 도로 링크는 파란색으로 표시하는 등 예측 데이터를 직관적인 정보로 변환함으로써 사용자가 도로의 미래 혼잡도를 미리 파악할 수 있도록 돕습니다. 이 모든 과정은 Spark Structured Streaming 기술을 통해 실시간성과 안정성을 동시에 확보합니다. 워터마크 설정을 활용하여 늦게 도착하는 데이터에 대한 처리 기준을 세우고, JSON 스키마 정보를 정의하여 데이터 처리 속도를 극대화합니다. 단순한 배치 처리를 넘어 연속적으로 유입되는 스트림 데이터를 효율적으로 관리함으로써, 지능형 교통 예측 서비스가 중단 없이 실시간으로 도로 위 상황을 분석하고 대응할 수 있는 강력한 데이터 파이프라인을 완성하게 됩니다.

BeeAI 활용 교육 영상(05) - [2단계] 스트림 데이터 처리하기실습
한국전자통신연구원
  • 융합
  • 공학·기술