빅데이터에 MATLAB 활용

거대하고 빠른 데이터 세트를 활용하는 방법

빅데이터란 분석에 활용할 수 있는 데이터의 생성 양과 생성 속도가 급격하게 증가하는 것을 지칭합니다.

이러한 현상이 발생하는 원인은 정보가 급격하게 디지털화되고 있기 때문입니다. 수집 장치 및 기타 데이터 생성 메커니즘의 수와 유형은 갈수록 증가하고 있습니다.

빅데이터 소스에는 계측 센서에서 보내는 스트리밍 데이터, 위성 및 의료 영상, 보안 카메라 비디오뿐만 아니라 금융 시장 및 소매 운영에서 파생된 데이터도 포함됩니다. 이러한 소스에서 획득한 빅데이터 세트에는 기가바이트 또는 테라바이트 규모의 데이터가 포함되어 있으며 매일 메가바이트 또는 기가바이트 단위로 증가할 수 있습니다.

빅데이터는 분석가 및 데이터 과학자들이 더욱 정확한 의사결정을 내릴 수 있도록 도움을 주기도 하지만, 몇 가지 어려움도 수반합니다. 예로, 빅데이터 세트는 가용 메모리에 적합하지 않아 처리에 너무 오랜 시간이 걸리거나 너무 빨리 스트리밍되어 저장되지 않을 수 있습니다. 또한 일반적으로 표준 알고리즘은 합리적인 시간 또는 메모리 크기로 설계되어 빅데이터 세트를 처리하지 못합니다. 빅데이터에 접근하는 방법은 다양합니다. 따라서 MATLAB은 이러한 난제를 해결할 수 있는 다양한 도구를 제공합니다.

MATLAB으로 빅데이터 활용하기

  1. 64비트 컴퓨팅. MATLAB 64비트 버전에서는 메모리에서 유지할 수 있는 데이터의 양이 32비트 프로그램보다 최대 2000배 증가하였습니다. 32비트 프로그램에서 처리할 수 있는 메모리의 크기는 2GB로 제한되지만 64비트 MATLAB에서는 OS의 물리적 메모리 한계까지 처리할 수 있습니다. Windows 8 데스크탑 버전의 경우 최대 500GB, Windows Server는 4TB까지 지원합니다.
  2. 메모리 매핑 변수. MATLAB의 memmapfile 함수를 사용하면 파일 또는 파일 일부를 메모리의 MATLAB 변수로 매핑할 수 있습니다. 이 방법을 사용하면 너무 커서 메모리에 유지할 수 없거나 로딩에 너무 오랜 시간이 걸리는 디스크상의 빅데이터 세트에 효율적으로 액세스할 수 있습니다.
  3. 디스크 변수. matfile 함수를 사용하면 전체 변수를 메모리에 로딩하지 않고도 MATLAB 인덱싱 명령어를 사용하여 디스크의 MAT-file에서 MATLAB 변수에 직접 액세스할 수 있습니다. 이 방법을 사용하면 너무 커서 메모리에 들어가지 않는 빅데이터 세트를 블록 프로세싱할 수 있습니다.
  4. Datastore. datastore 함수를 사용하면 메모리에 들어가지 않는 데이터에 액세스할 수 있습니다. 메모리에 들어가지 않는 데이터로는 파일, 파일 모음 또는 Database Toolbox와 관련된 데이터베이스 테이블의 데이터가 포함됩니다. datastore 함수는 파일이나 데이터 베이스 테이블에서 가져올 데이터 정의, 가져온 데이터의 데이터 타입 정의, 점진적 데이터 수집 관리를 가능하게 하며, 이러한 빅 데이터 세트에서의 반복 방법을 단 하나의 while 루프를 이용하여 제공합니다.
  5. 본질적 멀티코어 수학. MATLAB의 여러 내장 수학 함수(예: fft, inv, eig)는 멀티스레드로 수행됩니다. 이러한 함수는 병렬로 실행되며 컴퓨터의 멀티코어 기능을 완전하게 활용하므로 빅데이터 세트에 대한 계산 성능이 매우 우수합니다.
  6. GPU 컴퓨팅. GPU 작업을 수행하는 경우, Parallel Computing Toolbox의 GPU 최적화 수학 함수를 사용하면 빅데이터 세트를 훨씬 고성능으로 처리할 수 있습니다.
  7. 병렬 컴퓨팅. Parallel Computing Toolbox는 멀티코어 컴퓨터에서 MATLAB 코드 및 알고리즘을 병렬로 실행하는 병렬 for 루프를 제공합니다. MATLAB Distributed Computing Server를 사용하는 경우 수천 대의 컴퓨터로 확장 가능한 컴퓨터 클러스터에서 병렬로 실행할 수 있습니다.
  8. 클라우드 컴퓨팅. 수백 또는 수천 대의 컴퓨터에서 주문형으로 병렬 처리를 수행할 수 있는 Amazon Elastic Computing Cloud (EC2)에서 MATLAB Distributed Computing Server를 사용하여 MATLAB 계산을 병렬로 실행할 수 있습니다. 클라우드 컴퓨팅을 사용하면 자체 클러스터나 데이터 센터를 구입 또는 유지할 필요 없이 빅데이터를 처리할 수 있습니다.
  9. 분산(Distributed) 배열. Parallel Computing Toolbox와 MATLAB Distributed Computing Server를 사용하면 컴퓨터 클러스터의 메모리 전체를 활용해 분산된 행렬과 다차원 배열을 처리할 수 있습니다. 이 방식을 활용하면 너무 커서 단일 컴퓨터 메모리에 담기 어려운 데이터 세트를 저장하고 연산을 수행할 수 있습니다.
  10. MapReduce. MATLAB의 내장 기능인 MapReduce 기능을 사용하면 메모리에 들어가지 않는 데이터를 분석할 수 있습니다. MapReduce는 빅데이터 플랫폼인 Hadoop에서 MATLAB 분석을 수행할 수 있을 뿐만 아니라 데스크탑에서 데이터를 분석할 수 있는 강력하고 우수한 프로그래밍 기법입니다.
  11. 스트리밍 알고리즘. System Object를 사용하면 너무 크거나 너무 빨라 메모리에서 유지할 수 없는 유입 데이터 스트림을 처리할 수 있습니다. 또한 MATLAB Coder를 사용하여 MATLAB 알고리즘에서 임베디드 C/C++ 코드를 생성하고 고성능 실시간 시스템에서 결과 코드를 실행할 수 있습니다.
  12. 이미지 블록 프로세싱. Image Processing Toolboxblockproc 함수를 사용하면 한 번에 한 블록씩 프로세싱하는 효율적인 방식으로 초대형 이미지를 처리할 수 있습니다. Parallel Computing Toolbox와 함께 사용할 경우 다중 코어 및 GPU에서 계산이 병렬로 수행됩니다.
  13. 기계 학습. 기계 학습은 빅데이터 세트를 활용해 정보를 추출하고 예측 모델을 개발하는 데 유용합니다. Statistics and Machine Learning Toolbox Neural Network Toolbox에서는 Boosted 및 Bagged 의사결정 트리, k-means 및 계층적 클러스터링, k-nearest neighbor 검색, Gaussian 혼합, 기대값 최대화 알고리즘, Hidden Markov 모델 및 신경망 등의 다양한 기계 학습 알고리즘을 제공합니다.
  14. Hadoop. MATLAB에 내장된 MapReduce 및 Datastore 기능을 사용하면 데스크탑에서 알고리즘을 개발한 다음 Hadoop에서 직접 실행할 수 있습니다. 시작하려면 MATLAB datastore 함수를 사용해 HDFS에 저장된 빅데이터에 액세스한 다음 이 데이터를 사용하여 데스크탑의 MATLAB에서 MapReduce 기반 알고리즘을 개발합니다. 그런 다음 Hadoop MapReduce 프레임워크에서 MATLAB Distributed Computing Server를 사용하여 HDFS에 저장된 전체 데이터 세트에 해당 알고리즘을 실행합니다. MATLAB 분석과 프로덕션 Hadoop 시스템을 통합하려면 MATLAB Compiler를 사용하여 MATLAB MapReduce 기반 알고리즘에서 응용 프로그램 또는 라이브러리를 생성합니다.



참조: HDF5 파일, 대규모 데이터 가져오기(Database Toolbox 사용), MATLAB MapReduce 및 Hadoop