Loading...

아파치스파크

2 Contents
최신순

BeeAI 공모전 교육 영상(09) - 머신러닝 모델 서빙(122~124p)

머신러닝 모델의 학습이 완료된 후에는 이를 실제 서비스에 활용하는 서빙 단계가 필수적입니다. 이번 과정에서는 Apache Spark를 기반으로 구축된 모델을 실시간 스트림 환경에서 서빙하는 실습을 진행합니다. 전체 구조는 데이터를 생성하는 시뮬레이션 엔진, 예측을 수행하는 핵심 엔진, 그리고 결과를 검증하고 저장하는 밸리데이터 엔진으로 구성됩니다. 특히 중간 단계의 엔진은 학습된 모델을 로딩하고 유입되는 스트림 데이터를 처리하여 예측값을 산출하는 중추적인 역할을 담당하게 되며, 이는 전체 시스템의 성능을 결정짓는 핵심적인 요소가 됩니다. 실시간으로 입력되는 온도 데이터는 JSON 형식의 스트링으로 주입되며, 이를 모델이 이해할 수 있는 형태로 변환하는 과정이 필요합니다. 먼저 Column Select 오퍼레이터를 통해 처리 대상 컬럼을 지정하고, Min-Max 스케일링을 적용하여 데이터의 범위를 정규화합니다. 이후 Transpose 오퍼레이터를 사용하여 여러 개의 온도 데이터를 하나의 행으로 재구성하는데, 이는 AutoML로 학습된 모델이 데이터를 효과적으로 받아들여 예측을 수행할 수 있도록 하기 위함입니다. 이러한 전처리 과정은 데이터의 편향을 줄이고 예측의 정확도를 높이는 데 기여하는 중요한 단계라고 할 수 있습니다. 전처리가 완료된 데이터는 Spark ML Stream Predictor 오퍼레이터로 전달됩니다. 이 단계에서 미리 학습된 모델이 활성화되어 실시간 예측 쿼리를 수행하고 결과값을 도출합니다. 모델에서 출력된 예측값은 다시 한번 Min-Max 스케일링 오퍼레이터를 통해 역산 과정을 거칩니다. 이는 0과 1 사이로 압축되었던 결과값을 실제 온도 단위로 복원하여 사용자가 직관적으로 이해할 수 있는 의미 있는 수치로 만드는 작업입니다. 최종적으로 복원된 예측 데이터는 다음 프로세스로 전달되기 위해 대기하며, 실시간 모델 서비스의 완결성을 높여주는 역할을 수행합니다. 예측된 결과는 Kafka 라이터를 통해 지정된 토픽에 저장되며, 이후 세 번째 엔진인 File 라이터는 Kafka에 쌓인 데이터를 일정 주기로 읽어와 CSV 파일 형식으로 저장합니다. 저장된 파일에는 타임스탬프와 예측 라벨 컬럼이 포함되어 있어, 데이터가 시간에 따라 어떻게 변화하는지 상세히 추적할 수 있게 해줍니다. 이러한 파이프라인 구성은 실시간 데이터를 영구적인 저장소에 기록함과 동시에 사후 분석을 가능하게 만드는 기반이 됩니다. 또한 Kafka를 활용함으로써 데이터 전송의 유연성을 확보하고 대규모 트래픽 상황에서도 시스템이 안정적으로 작동할 수 있는 구조를 완성합니다. 시스템 운영의 편의성을 위해 제공되는 엔진 진행 상황 보기 기능을 활용하면, 저장된 예측 데이터를 시각화된 그래프 형태로 확인할 수 있습니다. 시간의 흐름을 X축으로, 예측된 온도 값을 Y축으로 설정하여 데이터의 주기성과 변동 추이를 한눈에 파악하는 것이 가능합니다. 스트림 서빙 예제는 사용자가 직접 종료하기 전까지 연속적으로 실행되며, 실시간으로 변화하는 온도 지표를 통해 모델의 서빙 성능을 실시간으로 모니터링할 수 있습니다. 이러한 시각화 도구는 복잡한 수치 데이터를 직관적인 정보로 변환해 주며, 향후 더 복잡한 딥러닝 모델 서빙으로 나아가기 위한 기술적 토대가 됩니다.

BeeAI 공모전 교육 영상(09) - 머신러닝 모델 서빙(122~124p)
한국전자통신연구원
  • 융합
  • 공학·기술

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

현대 데이터 처리 환경에서 실시간성은 서비스의 가치를 결정짓는 핵심 요소로 자리 잡았습니다. 아파치 스파크(Apache Spark)는 이러한 요구에 부응하기 위해 스파크 스트리밍(Spark Streaming)에 이어 구조적 스트리밍(Structured Streaming)을 선보였습니다. 기존의 방식이 데이터를 마이크로 배치(Micro-batch) 단위로 쪼개어 처리하는 데 집중했다면, 구조적 스트리밍은 센서 데이터와 같은 실시간 정보를 보다 안정적으로 다루기 위해 설계되었습니다. 이는 단순히 속도의 문제를 넘어 운영 단계에서 데이터의 신뢰성을 확보하고 복합적인 연산을 효율적으로 수행하기 위한 기술적 진보라고 할 수 있습니다. 과거의 데이터 처리 방식은 보안 장비나 센서에서 발생한 로그 데이터를 파일이나 데이터베이스에 먼저 저장한 뒤, 이를 다시 불러와 통계를 내는 과정을 거쳤습니다. 하지만 수십 기가바이트에 달하는 방대한 데이터를 데이터베이스(DB)에서 쿼리로 호출하는 방식은 물리적인 시간 소요가 커 실시간 서비스를 구현하는 데 한계가 있었습니다. 이를 극복하기 위해 등장한 스트리밍 처리는 데이터를 디스크에 쓰기 전 메모리 상에서 즉각적으로 연산하는 것을 핵심으로 합니다. 이러한 메모리 기반의 접근 방식은 정제 시간을 획기적으로 단축하여 데이터가 발생하는 즉시 가치를 창출하게 합니다. 구조적 스트리밍의 주요 특징 중 하나는 윈도우(Window)와 워터마크(Watermark)를 통한 데이터 관리입니다. 윈도우 기능은 설정된 시간 동안의 데이터를 메모리에 유지하며 통계 연산을 수행하게 해주며, 워터마크는 네트워크 지연 등으로 늦게 도착하는 센서 데이터를 일정 시간 동안 기다려 주는 역할을 합니다. 이를 통해 데이터 누락이나 순서 뒤섞임 현상을 방지하고 통계의 정확도를 높일 수 있습니다. 또한 체크포인트(Checkpoint) 기능을 활용하면 장비 장애가 발생하더라도 메타데이터를 기반으로 작업을 복구할 수 있어 빅데이터 환경에서의 안정적인 운영을 보장합니다. 구조적 스트리밍은 서비스 시작 전 데이터의 형태인 스키마(Schema)를 엄격하게 정의하는 방식을 취합니다. 스파크 스트리밍이 스키마가 없는 데이터까지 유연하게 받아들여 매번 처리를 시도하는 것과 달리, 구조적 스트리밍은 정의된 포맷에 맞는 데이터만을 선별적으로 수용합니다. 이러한 스키마 중심의 설계는 데이터가 들어올 때마다 발생하는 불필요한 스키마 체크 과정을 생략하게 하여 처리 속도를 비약적으로 향상시킵니다. 결과적으로 로그 파일의 이벤트 발생 시간과 측정값을 구조화된 데이터프레임(DataFrame) 형식으로 즉시 변환하여 후속 분석에 곧바로 활용할 수 있게 됩니다. 스트리밍 처리의 결과물은 비즈니스 목적에 따라 컴플리트(Complete), 어펜드(Append), 업데이트(Update) 세 가지 모드로 출력됩니다. 전체 통계를 매번 갱신해야 하는 작업에는 컴플리트 모드가 적합하며, 데이터 변경이 감지될 때마다 출력하는 업데이트 모드는 실시간 모니터링에 유용합니다. 반면 어펜드 모드는 데이터가 더 이상 변경되지 않는 시점까지 기다렸다가 확정된 결과만을 내보냅니다. 이때 이벤트 시간(Event Time)과 실제 처리 시간의 차이를 정확히 계산하지 않으면 출력 지연이 발생할 수 있으므로, 서비스의 특성에 맞는 적절한 출력 전략과 트리거(Trigger) 설정이 필수적으로 요구됩니다. 체크포인트는 데이터의 정확한 처리를 보장하는 강력한 도구이지만, 실제 테스트 환경에서는 세심한 주의가 필요합니다. 메타데이터가 누적된 상태에서 작업을 재시작하면 번호가 꼬여 데이터 유실이나 중복이 발생할 수 있기 때문입니다. 또한 구조적 스트리밍은 고정된 스키마를 사용하기 때문에 데이터의 행을 열로 바꾸는 피벗(Pivot) 연산이나 복합적인 정규화 과정에서 유연성이 떨어질 수 있습니다. 따라서 전체 데이터를 자유롭게 다루어야 하는 복합 연산의 경우, RDD 방식의 접근이 유리한 기존 스파크 스트리밍이나 다른 분석 도구를 전략적으로 혼합하여 사용하는 지혜가 필요합니다. 결론적으로 스파크 스트리밍과 구조적 스트리밍은 각각의 장단점이 뚜렷한 기술입니다. 구조적 스트리밍은 데이터 수집과 정제 단계에서 높은 안정성과 빠른 속도를 제공하며, 스파크 스트리밍은 로우 레벨의 세밀한 제어와 분석의 유연성을 보장합니다. 실제 에너지 예측 서비스와 같은 프로젝트에서는 앞단에서 데이터를 안정적으로 수용하기 위해 구조적 스트리밍을 사용하고, 뒷단의 정교한 분석 모델링에는 스파크의 다른 기능들을 결합하는 워크플로우를 구성합니다. 기술의 특성을 정확히 이해하고 상황에 맞는 도구를 선택할 때 비로소 진정한 실시간 빅데이터 서비스 구현이 가능해집니다.

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