Loading...

스트림데이터

3 Contents
최신순

BeeAI 공모전 교육 영상(04) - 실시간 스트림 데이터 처리하기(76~95p)

BeeAI는 스트림 데이터를 처리함에 있어 일반적인 스트림과 실시간 스트림으로 구분하여 정교한 분석 체계를 제공합니다. 그 대표적인 사례로 지능형 교통 속도 예측 서비스를 들 수 있는데, 이는 특정 도로 링크의 속도가 15분 후에 어떻게 변할지를 예측하는 인공지능 서비스입니다. 이 시스템의 핵심은 초 단위로 유입되는 방대한 택시 속도 센서 데이터를 실시간으로 수집하고 분석하는 데 있습니다. 이를 위해 BeeAI는 다섯 개의 엔진을 유기적으로 결합한 워크플로우를 설계하여 복잡한 도심의 교통 흐름을 효과적으로 파악하고 미래의 변화를 예측할 수 있는 기반을 마련해 줍니다. IoT 디바이스나 센서에서 직접 유입되는 실시간 스트림 데이터는 정제되지 않은 원시 데이터 상태인 경우가 많습니다. 실제 현장에서는 네트워크 상황에 따라 데이터가 늦게 수집되는 지연 현상이 발생하거나, 데이터 자체가 누락되는 결측치 문제가 빈번하게 나타납니다. 또한 센서 측정 과정에서 발생하는 잡음으로 인해 속도값이 비정상적으로 튀는 경우도 존재합니다. 이러한 불완전한 데이터를 예측 모델에 그대로 활용하면 결과의 신뢰도가 크게 낮아지기 때문에, 초 단위 데이터를 1분이나 5분 단위의 평균값으로 환산하여 데이터의 해상도를 조절하고 품질을 높이는 고도의 전처리 과정이 필수적입니다. BeeAI의 예측 시스템은 엔진 A부터 E까지 다섯 개의 단계로 구성되어 실시간 데이터의 가공과 학습을 처리합니다. 먼저 엔진 A와 B는 Spark Structured Streaming 기술을 활용하여 원시 데이터를 정제하고 평균 속도를 산출하는 실시간 처리를 담당합니다. 엔진 D는 정제된 데이터를 바탕으로 학습 모델이 요구하는 시퀀스 형태의 입력 데이터셋을 생성하며, 엔진 E는 이 데이터를 사용해 주기적으로 새로운 모델을 재학습하여 최신 교통 상황을 반영합니다. 마지막 단계인 엔진 C는 갱신된 모델을 로딩하여 실시간 쿼리에 응답하고 15분 후의 예측 결과를 산출해 사용자에게 최종적인 정보를 제공하게 됩니다. 시계열 데이터의 패턴을 인식하기 위해 본 시스템은 인공 신경망의 일종인 LSTM 모델을 활용합니다. 과거의 데이터 흐름을 기반으로 미래를 예측하는 LSTM은 교통 속도 변화와 같은 시나리오에 최적화된 성능을 보여줍니다. 정확한 예측을 위해서는 5분 단위 평균 속도를 8주기 동안 모은 시퀀스 데이터가 필요하며, 이는 강남 지역 170개 도로 링크를 기준으로 총 1,360개의 수치 데이터 패턴을 형성하게 됩니다. 엔진 D는 이러한 대량의 데이터를 가로로 길게 펼치는 피벗 연산을 수행하여 CSV 파일 형태로 공급하며, 이를 통해 인공지능은 도로 상황의 연속적인 변화를 정밀하게 학습할 수 있습니다. 엔진 D는 학습용 데이터 전처리를 전문적으로 수행하는 미니 배치 엔진으로 작동합니다. 스트림 데이터가 끊임없이 유입되는 환경에서 학습 모델이 요구하는 정확한 시간 단위의 데이터를 포착하는 것은 기술적으로 매우 중요합니다. 시스템은 윈도우 크기를 설정하여 특정 구간의 데이터를 가공하고, 그룹 필터 오퍼레이터를 통해 8주기 분량의 데이터가 모두 확보되었는지 엄격하게 검증합니다. 또한 데이터의 스케일을 0과 0.4 사이로 조정하는 Min-Max 스케일링 과정과 링크 ID를 기준으로 정보를 재배치하는 과정을 거치며, 학습 엔진이 즉시 읽어 들여 활용할 수 있는 최적의 데이터셋을 실시간으로 갱신하며 파일로 저장합니다. 실시간 스트림 처리에 특화된 엔진 A와 B는 Spark Structured Streaming 프레임워크를 기반으로 구축되었습니다. 엔진 A는 초 단위 원시 데이터를 받아 1분 단위 평균 속도를 계산하며, 이때 30초의 오버랩을 설정하여 데이터 변화의 연속성을 확보하고 잡음을 제거하는 스무딩 효과를 구현합니다. 이어지는 엔진 B는 1분 단위 정보를 다시 5분 단위 평균으로 집계하여 보다 안정적인 교통 흐름 데이터를 생성합니다. 이 과정에서 Kafka 파이프 리더와 라이터가 사용되며, 실시간으로 쏟아지는 대용량 데이터를 지연 없이 처리함과 동시에 데이터 정렬과 정제 작업을 동시에 수행하여 분석의 정확도를 극대화합니다. 시스템의 지속적인 신뢰성을 확보하기 위해 워터마크와 체크포인트라는 기술적 장치가 도입되었습니다. 워터마크는 이벤트 타임을 기준으로 지연되어 도착하는 데이터를 특정 시간 동안 기다려 줌으로써 데이터 유실을 최소화하고 분석 결과의 정합성을 높여줍니다. 또한 체크포인트 기능은 예기치 못한 시스템 장애나 중단 상황이 발생했을 때, 데이터 처리 시점을 안정적으로 저장해 두었다가 복구 시 해당 지점부터 다시 연산을 재개할 수 있게 돕습니다. 이러한 고급 스트리밍 처리 기법들은 BeeAI가 실시간으로 흐르는 방대한 스트림 데이터를 처리하는 과정에서 서비스의 연속성을 보장하고 안정적인 예측 결과를 도출하는 밑거름이 됩니다.

BeeAI 공모전 교육 영상(04) - 실시간 스트림 데이터 처리하기(76~95p)
한국전자통신연구원ETRI 클래스
  • 융합
  • 공학·기술

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 활용 교육 영상(02) - [1단계] 데이터 수집 및 적재하기

BeeAI 개발 프로세스의 첫 번째 단계는 데이터의 수집 및 적재입니다. 이를 위해 준비된 'http_to_mongodb' 워크플로는 스트림 데이터를 받아 배치 형태의 저장소에 적재하는 과정을 실습하기에 적합합니다. 이 워크플로의 핵심 구성 요소인 HTTP 서버 리더는 특정 포트를 열어 외부에서 유입되는 데이터를 실시간으로 받아들일 준비를 합니다. 사용자는 로컬호스트의 53001번 포트를 통해 데이터를 수송하며, 이렇게 수집된 정보는 MongoDB 라이터를 거쳐 지정된 컬렉션에 체계적으로 저장됩니다. 이 과정은 데이터 연산 처리 전, 소스로부터 정보를 안전하게 확보하는 기초적인 단계를 잘 보여줍니다. 적재된 데이터가 실제로 저장소에 잘 들어갔는지 확인하는 과정은 개발의 신뢰성을 높여줍니다. MongoDB에 접속하기 위해서는 터미널에서 Docker 환경 내부로 진입한 후 명령어를 사용해야 합니다. 'use examples' 명령어로 해당 데이터베이스를 선택하고, 'show collections'를 통해 생성된 컬렉션을 확인한 뒤 'find' 명령어를 입력하면 저장된 JSON 형태의 데이터를 직접 조회할 수 있습니다. 쉘 스크립트를 이용해 보낸 데이터가 현재 시간 정보와 함께 MongoDB의 특정 컬렉션에 정확히 쌓여있는 것을 확인하는 것은 스트림 데이터를 배치 형태로 전환하여 관리하는 기술의 핵심을 이해하는 데 큰 도움을 줍니다. 다음 단계는 스트림 데이터를 수집하여 다시 스트림 형태의 저장소인 Kafka에 적재하는 실습입니다. 이 과정에서는 'Stream to Stream' 엔진이 사용되며, 리더는 이전과 동일한 HTTP 서버 리더를 사용하지만 라이터는 Kafka 라이터로 변경됩니다. Kafka를 활용하기 위해서는 부트스트랩 서버, ZooKeeper 커넥트, 그룹 ID, 그리고 토픽 ID와 같은 필수 속성들을 정확히 설정해야 합니다. 토픽은 스트림 데이터가 쌓이는 일종의 큐 역할을 수행하며, 데이터를 처리할 때 해당 토픽에서 정보를 주기적으로 읽어오는 방식으로 동작합니다. 이는 대규모 분산 환경에서 실시간 데이터를 관리하고 저장하는 현대적인 데이터 처리 방식을 보여줍니다. 스트림 처리 외에도 기존에 저장된 대용량 파일을 다른 저장소로 한 번에 옮기는 배치 대 배치 적재 실습도 중요합니다. 'CSV_to_MongoDB' 워크플로는 로컬 저장소에 저장된 CSV 파일을 읽어 MongoDB에 적재하는 과정을 보여줍니다. 여기서는 파일 리더가 사용되며, 파일 경로 속성에 지정된 데이터를 한꺼번에 읽어들입니다. 이 실습에서는 배치 더미 엔진과 컨트롤러를 활용하여 데이터 처리가 완료되면 자동으로 작업 상태가 'Finished'로 변경되는 과정을 관찰할 수 있습니다. 수많은 행을 가진 데이터 세트가 파일 시스템에서 데이터베이스로 순식간에 이동하는 과정은 정형 데이터를 다루는 배치 처리의 효율성을 증명합니다. 이처럼 BeeAI는 다양한 소스로부터 데이터를 수집하고 이를 목적에 맞는 다양한 데스티네이션에 적재할 수 있는 유연한 기능을 제공합니다. 스트림 데이터를 배치 저장소에 저장하거나, 스트림 데이터 그대로 Kafka와 같은 메시지 큐에 전달하고, 대용량 파일을 데이터베이스로 마이그레이션하는 모든 과정이 워크플로 기반으로 직관적으로 수행됩니다. 리더와 라이터, 그리고 이를 제어하는 러너와 컨트롤러의 조합을 통해 사용자는 복잡한 코딩 없이도 데이터 파이프라인의 기초를 구축할 수 있습니다. 이러한 수집 및 적재 기술은 이후 단계에서 진행될 정교한 데이터 분석과 처리를 위한 든든한 밑바탕이 됩니다.

BeeAI 활용 교육 영상(02) - [1단계] 데이터 수집 및 적재하기
한국전자통신연구원
  • 공학·기술