Loading...

BeeAI플랫폼

3 Contents
최신순

BeeAI 공모전 교육 영상(05) - Python 사용자 정의 함수를 활용한 데이터 처리하기(96~103p)

파이썬 UDF를 활용한 데이터 처리는 BeeAI 플랫폼의 핵심적인 기능 중 하나입니다. 이번 과정에서는 사용자가 직접 파이썬으로 구현한 로직을 도커 이미지로 변환하고, 이를 REST API 형태로 통합하여 실시간 데이터를 처리하는 실습을 진행합니다. 이 방식은 복잡한 데이터 전처리나 특수한 연산이 필요할 때 매우 유용하며, 플랫폼에서 제공하는 다섯 가지 엔진 유형 중 마지막인 '온디맨드 익스터널 서빙 엔진'을 통해 구현됩니다. 온디맨드 익스터널 서빙 엔진을 사용하려면 먼저 '파이 모듈 러너'를 설정해야 합니다. 사용자는 파이썬 코드가 저장된 폴더 경로를 지정하고, 생성될 도커 이미지의 이름과 REST API 통신에 사용할 포트 번호를 입력합니다. 이때 이미지 이름은 도커의 규약에 따라 영문 소문자만 사용해야 하며 특수문자 사용은 지양해야 합니다. 이렇게 설정된 정보는 플랫폼 내에서 자동으로 컨테이너화되어 데이터 파이프라인의 일원이 될 준비를 마칩니다. 엔진을 통해 생성된 REST API는 외부 데이터와의 통로 역할을 수행합니다. 데이터 파이프라인 상에서 처리하고자 하는 데이터를 해당 API로 전송하면, 도커 인스턴스 내부에서 사용자가 작성한 파이썬 코드가 실행되어 결과값을 반환합니다. 기본적으로 문자열 기반의 데이터가 송수신되는데, 이미지나 오디오 같은 멀티미디어 데이터의 경우 Base64 인코딩을 통해 문자열로 변환하여 처리하는 방식을 주로 사용하게 됩니다. 성공적인 배포를 위해서는 몇 가지 코딩 규약을 준수해야 합니다. 파이썬 모듈화를 위한 __init__.py 파일이 반드시 존재해야 하며, 실제 로직은 base.py 파일 내에 메인 함수 형태로 구현되어야 합니다. 또한, 코드 작성에 사용된 외부 라이브러리들은 requirements.txt 파일에 명시해야만 도커 이미지가 생성될 때 해당 패키지들이 자동으로 설치됩니다. 이러한 폴더 구조를 갖추어야만 시스템이 코드를 인식하고 서빙 환경을 구축할 수 있습니다. 이미지 회전과 같은 시각적 데이터 처리는 파이썬 UDF의 장점이 잘 드러나는 사례입니다. 스파크나 하둡 기반의 일반적인 배치 처리로는 복잡할 수 있는 작업을 파이썬의 Pillow 라이브러리를 활용하면 단 몇 줄의 코드로 구현할 수 있습니다. 입력된 이미지 바이트 스트림을 이미지 객체로 변환하고 90도 회전시킨 뒤 다시 결과값을 내보내는 로직을 온디맨드 익스터널 서빙 엔진에 탑재하면 강력한 커스텀 오퍼레이터가 완성됩니다. 실습에서는 JSON 문자열을 처리하는 시뮬레이션도 함께 진행합니다. 특정 키값을 추출하여 연산을 수행하고 결과를 반환하는 엔진을 구동하면, BeeAI 대시보드에서 실시간으로 생성된 서비스 상태를 확인할 수 있습니다. 시뮬레이터 엔진이 1초 간격으로 데이터를 REST API에 전송하면, 도커 컨테이너 내부에서 처리된 결과값이 즉각적으로 반환됩니다. 이는 데이터가 수집되고 저장되는 과정 사이에 사용자 정의 로직이 어떻게 유기적으로 개입하는지를 잘 보여줍니다. 안정적인 데이터 처리를 위해서는 시스템 환경 구성도 중요합니다. 특히 여러 개의 엔진을 동시에 구동하여 엔드투엔드 워크북을 실행할 때는 최소 8코어 이상의 CPU와 16GB 이상의 메모리가 권장됩니다. 파이썬 UDF 처리까지 포함된 복합적인 파이프라인은 자원 소모가 크기 때문입니다. 이러한 기초적인 데이터 처리 기법들을 숙지하고 나면, 다음 단계인 머신러닝 모델 학습과 GPU를 활용한 가속 서빙 단계로 원활하게 넘어갈 수 있습니다.

BeeAI 공모전 교육 영상(05) - Python 사용자 정의 함수를 활용한 데이터 처리하기(96~103p)
한국전자통신연구원ETRI 클래스
  • 공학·기술

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단계] 데이터 수집 및 적재하기
한국전자통신연구원
  • 공학·기술

BeeAI 활용 교육 영상(06) - [2단계] Python 사용자 정의 함수(UDF)를 만들어서 데이터 처리하기

파이썬(Python)은 방대한 라이브러리 생태계를 보유하고 있어 데이터 분석과 과학 계산 분야에서 필수적인 언어로 자리 잡았습니다. 그러나 분산 환경인 스파크(Spark) 기반 시스템에서 개별 파이썬 스크립트를 통합하여 실행하는 과정은 기술적인 복잡함을 수반합니다. BeeAI는 이러한 허들을 낮추기 위해 파이썬 UDF(사용자 정의 함수)를 도커(Docker) 이미지 기술과 결합했습니다. 이를 통해 개발자는 익숙한 언어로 로직을 구성하면서도 플랫폼 내에서 안정적으로 데이터 처리 기능을 확장할 수 있게 되었습니다. 이 기능의 핵심은 온디맨드 익스터널 서빙(On-demand External Serving) 엔진을 활용하는 것입니다. 사용자는 엔진 설정에서 포트 번호와 도커 이미지 이름, 그리고 파이썬 코드가 저장된 경로를 지정하기만 하면 됩니다. 설정을 마치고 실행하면 시스템은 사용자의 코드를 포함한 도커 컨테이너를 자동으로 빌드합니다. 이렇게 컨테이너화된 환경은 독립적인 실행을 보장하며, 지정된 포트를 통해 데이터가 유입되면 컨테이너 내부의 파이썬 라이브러리가 로직을 수행한 뒤 그 결과를 다시 외부로 전달하는 구조를 가집니다. 파이썬 UDF를 구현할 때 주의할 점 중 하나는 REST API의 입출력 형식이 현재 문자열 위주로 구성되어 있다는 점입니다. 따라서 이미지나 수치 배열 같은 복잡한 데이터를 처리할 때는 이를 바이트 데이터(Byte Stream)나 문자열 형태로 변환하여 전송해야 합니다. 파이썬 코드 내부에서는 전달받은 문자열을 다시 원래의 데이터 형식으로 복원하여 연산을 수행하고, 결과물을 다시 문자열로 인코딩하여 반환하는 과정이 필요합니다. 이러한 처리 방식은 데이터의 종류에 상관없이 일관된 통신 인터페이스를 유지하게 해줍니다. 라이브러리 의존성 관리는 텍스트 파일을 통해 간편하게 이루어집니다. 필요한 라이브러리 목록을 파일에 적어두면 도커 이미지가 생성될 때 해당 라이브러리들이 자동으로 설치되어 환경이 구축됩니다. 실제 실습에서는 JSON 문자열 처리부터 넘파이(NumPy)를 활용한 난수 평균 계산, 그리고 필로우(Pillow) 라이브러리를 이용한 이미지 변환까지 다양한 사례가 확인되었습니다. 이는 개발자가 익숙한 도구를 그대로 사용하면서도 플랫폼의 워크플로우에 자신의 로직을 쉽게 통합할 수 있음을 보여줍니다. 파이썬 UDF의 통합은 데이터 개발 주기의 효율성을 극대화하는 중요한 요소입니다. 이를 통해 사용자는 데이터 수집과 적재라는 1단계를 넘어, 배치 처리와 스트림 처리 그리고 사용자 정의 함수를 활용한 고도화된 2단계 데이터 처리 과정까지 완벽하게 수행할 수 있습니다. 스파크의 강력한 분산 처리 능력과 파이썬의 방대한 분석 기능을 하나의 플랫폼에서 유기적으로 연결함으로써, 복잡한 데이터 파이프라인을 더욱 정교하고 유연하게 설계할 수 있는 기반이 마련된 것입니다.

BeeAI 활용 교육 영상(06) - [2단계] Python 사용자 정의 함수(UDF)를 만들어서 데이터 처리하기
한국전자통신연구원
  • 공학·기술