이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

원격 데이터로 작업하기

MATLAB®에서는 Amazon S3™(Simple Storage Service), Microsoft® Azure® Storage Blob 및 HDFS™(Hadoop® Distributed File System)의 클라우드 저장소 같은 원격 위치에서 데이터를 읽어오거나 데이터를 쓸 수 있습니다.

datastore 객체를 사용하여 원격 데이터에 액세스할 수 있습니다. MATLAB의 데스크탑 버전에서 데이터저장소를 사용하여 데이터의 일부를 검토하십시오. 그런 다음 로컬에서 코드를 프로토타이핑한 후 클러스터나 클라우드로 확장할 수 있습니다. 확장하면 데이터와 같은 위치에서 대규모 계산을 실행할 때 더 효율적이므로 실행 효율성이 높아집니다. 원격 위치에 데이터를 쓰기 위해 tall형 배열이나 분산 배열에 대해 write 함수를 사용할 수 있습니다.

Amazon S3

MATLAB에서는 Amazon Web Services에서 제공하는 Amazon S3를 온라인 파일 저장소 웹 서비스로 사용할 수 있습니다. Amazon S3에 저장된 데이터는 datastore 함수 또는 특정 datastore 객체(예: ImageDatastore, FileDatastore, SpreadsheetDatastore 또는 TabularTextDatastore)를 통해 사용할 수 있습니다. 데이터의 위치를 지정할 때는 다음 형식의 IRI(Internationalized Resource Identifier)를 사용하여 파일이나 폴더의 전체 경로를 지정해야 합니다.

s3://bucketname/path_to_file

bucketname은 컨테이너 이름이고 path_to_file은 파일이나 폴더의 경로입니다.

Amazon S3는 웹 서비스 인터페이스를 통해 데이터 저장소를 제공합니다. Bucket을 컨테이너로 사용하여 Amazon S3에 객체를 저장할 수 있습니다.

액세스 설정하기

Amazon S3의 원격 데이터로 작업하려면 먼저 액세스를 설정해야 합니다.

  1. AWS(Amazon Web Services) 루트 계정에 가입합니다. Amazon Web Services: 계정을 참조하십시오.

  2. AWS 루트 계정을 사용하여 IAM(Identity and Access Management) 사용자를 만듭니다. Creating an IAM User in Your AWS Account를 참조하십시오.

  3. 액세스 키를 생성하여 액세스 키 ID와 보안 액세스 키를 받습니다. Managing Access Keys for IAM Users를 참조하십시오.

  4. AWS 명령줄 인터페이스 툴(https://aws.amazon.com/cli/)을 사용하여 AWS 액세스 키 ID, 보안 액세스 키 및 리전(지역)으로 컴퓨터를 구성합니다. 또는, setenv를 사용하여 환경 변수를 직접 설정합니다.

    • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY — Amazon S3 서비스를 인증하여 사용할 수 있도록 설정합니다. 이 액세스 키 변수 쌍은 위의 3단계에서 생성되었습니다.

    • AWS_REGION(선택 사항) — Bucket의 지리적 영역을 선택합니다. 이 환경 변수의 값은 일반적으로 자동으로 결정되지만, 이 값을 사용자가 수동으로 설정하도록 Bucket 소유자에 의해 요구될 수도 있습니다.

Parallel Computing Toolbox™를 사용 중인 경우에는 클러스터가 S3 서비스에 액세스하도록 구성되어 있는지 확인해야 합니다. parpool, batch, createJob 또는 클러스터 프로파일 관리자(Cluster Profile Manager)에서 EnvironmentVariables를 설정하여 클라이언트 환경 변수를 클러스터의 워커에 복사할 수 있습니다.

Amazon S3에서 데이터 읽어오기

datastore 객체를 사용하여 Amazon S3에서 데이터를 읽어올 수 있습니다. 예를 들어, ImageDatastore를 만들고 이 데이터저장소에서 지정된 이미지를 읽어온 후 화면에 표시합니다.

setenv('AWS_ACCESS_KEY_ID', 'YOUR_AWS_ACCESS_KEY_ID'); 
setenv('AWS_SECRET_ACCESS_KEY', 'YOUR_AWS_SECRET_ACCESS_KEY');

ds = imageDatastore('s3://bucketname/image_datastore/jpegfiles', ...
  'IncludeSubfolders', true, 'LabelSource', 'foldernames'); 
img = ds.readimage(1);
imshow(img)

Amazon S3에 데이터 쓰기

Amazon S3에 데이터를 쓰려면 분산 배열 또는 tall형 배열에 대해 write 함수를 호출하고 클라우드 저장소의 폴더에 대한 전체 경로를 지정하십시오. 다음 예제에서는 Amazon S3에서 테이블 형식 데이터를 tall형 배열로 읽어오고, 누락된 항목을 제거하고 정렬하여 데이터를 전처리한 다음, Amazon S3에 다시 쓰는 방법을 보여줍니다.

setenv('AWS_ACCESS_KEY_ID', 'YOUR_AWS_ACCESS_KEY_ID');
setenv('AWS_SECRET_ACCESS_KEY', 'YOUR_AWS_SECRET_ACCESS_KEY');

ds = tabularTextDatastore('s3://bucketname/dataset/airlinesmall.csv', ...
  'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});
tt = tall(ds);
tt = sortrows(rmmissing(tt));
write('s3://bucketname/preprocessedData/',tt);

tall형 데이터를 다시 읽어오려면 datastore 함수를 사용하십시오.

ds = datastore('s3://bucketname/preprocessedData/');
tt = tall(ds);

Microsoft Azure Storage Blob

MATLAB에서는 Microsoft에서 제공하는 WASB(Windows Azure® Storage Blob)를 온라인 파일 저장소 웹 서비스로 사용할 수 있습니다. Azure에 저장된 데이터는 datastore 함수 또는 특정 datastore 객체(예: ImageDatastore, FileDatastore, SpreadsheetDatastore 또는 TabularTextDatastore)를 통해 사용할 수 있습니다. 데이터의 위치를 지정할 때는 다음 형식의 IRI(Internationalized Resource Identifier)를 사용하여 파일이나 폴더의 전체 경로를 지정해야 합니다.

wasbs://container@account/path_to_file/file.ext

container@account는 컨테이너 이름이고 path_to_file은 파일이나 폴더의 경로입니다.

Azure는 웹 서비스 인터페이스를 통해 데이터 저장소를 제공합니다. Blob을 사용하여 Azure에 데이터 파일을 저장할 수 있습니다. 자세한 내용은 Introduction to Azure를 참조하십시오.

액세스 설정하기

Azure Storage의 원격 데이터로 작업하려면 먼저 액세스를 설정해야 합니다.

  1. Microsoft Azure 계정에 가입합니다(Microsoft Azure Account 참조).

  2. setenv로 다음 두 환경 변수 중 하나를 정확하게 설정하여 인증 세부 정보를 설정합니다.

    • MW_WASB_SAS_TOKEN — 공유 액세스 서명(SAS)을 통해 인증

      SAS를 가져옵니다. 자세한 내용은 Manage Azure Blob Storage resources with Storage Explorer의 "Get the SAS for a blob container" 섹션을 참조하십시오.

      MATLAB에서 MW_WASB_SAS_TOKEN을 SAS 쿼리 문자열로 설정합니다. 예를 들면, 다음과 같습니다.

      setenv MW_WASB_SAS_TOKEN '?st=2017-04-11T09%3A45%3A00Z&se=2017-05-12T09%3A45%3A00Z&sp=rl&sv=2015-12-11&sr=c&sig=E12eH4cRCLilp3Tw%2BArdYYR8RruMW45WBXhWpMzSRCE%3D'

      이 문자열은 Azure Storage 웹 UI 또는 탐색기에서 생성된 유효한 SAS 토큰으로 설정해야 합니다.

    • MW_WASB_SECRET_KEY — 계정의 비밀 키 2개 중 하나를 통해 인증

      각 저장소 계정에는 관리자 권한 액세스를 허용하는 2개의 비밀 키가 있습니다. MW_WASB_SECRET_KEY 환경 변수를 설정하면 SAS 토큰을 만들지 않아도 MATLAB에 동일한 액세스가 부여됩니다. 예를 들면, 다음과 같습니다.

      setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'

Parallel Computing Toolbox를 사용 중인 경우 parpool, batch, createJob 또는 클러스터 프로파일 관리자(Cluster Profile Manager)에서 EnvironmentVariables를 설정하여 클라이언트 환경 변수를 클러스터의 워커에 복사해야 합니다.

자세한 내용은 Use Azure storage with Azure HDInsight clusters를 참조하십시오.

Azure에서 데이터 읽어오기

WASB 위치에서 데이터를 읽어오려면 datastore 객체를 사용하십시오. 파일 위치를 생성하려면 먼저 파일 이름 file.ext 앞에 파일 경로 /path_to_file을 지정하고, 파일 경로 앞에 계정 이름 wasbs://container@account/를 지정하십시오. 전체 데이터 위치는 다음과 같은 구문이 됩니다.

wasbs://container@account/path_to_file/file.ext

container@account는 컨테이너 이름이고 path_to_file은 파일이나 폴더의 경로입니다.

예를 들어, 테스트 저장소 계정 wasbs://blobContainer@storageAccount.blob.core.windows.net/의 폴더 /airline에 파일 airlinesmall.csv가 있으면 다음 구문을 사용하여 데이터저장소를 만들 수 있습니다.

location = 'wasbs://blobContainer@storageAccount.blob.core.windows.net/airline/airlinesmall.csv';
ds = tabularTextDatastore(location, 'TreatAsMissing', 'NA', ...
  'SelectedVariableNames', {'ArrDelay'});

직접 읽기, mapreduce, tall형 배열, 심층 학습을 비롯해 datastore가 지원하는 모든 계산에 Azure를 사용할 수 있습니다. 예를 들어, ImageDatastore를 만들고 이 데이터저장소에서 지정된 이미지를 읽어온 후 화면에 표시합니다.

setenv('MW_WASB_SAS_TOKEN', 'YOUR_WASB_SAS_TOKEN');  
ds = imageDatastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/', ...
  'IncludeSubfolders', true, 'LabelSource', 'foldernames'); 
img = ds.readimage(1);
imshow(img)

Azure에 데이터 쓰기

Azure에 데이터를 쓰려면 분산 배열 또는 tall형 배열에 대해 write 함수를 호출하고 클라우드 저장소의 폴더에 대한 전체 경로를 지정하십시오. 다음 예제에서는 Azure에서 테이블 형식 데이터를 tall형 배열로 읽어오고, 누락된 항목을 제거하고 정렬하여 데이터를 전처리한 다음, Azure에 다시 쓰는 방법을 보여줍니다.

setenv('MW_WASB_SAS_TOKEN', 'YOUR_WASB_SAS_TOKEN');  

ds = tabularTextDatastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/dataset/airlinesmall.csv', ...
  'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});
tt = tall(ds);
tt = sortrows(rmmissing(tt));
write('wasbs://YourContainer@YourAccount.blob.core.windows.net/preprocessedData/',tt);

tall형 데이터를 다시 읽어오려면 datastore 함수를 사용하십시오.

ds = datastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/preprocessedData/');
tt = tall(ds);

Hadoop Distributed File System

데이터의 위치 지정하기

또한 datastore 함수를 사용하여 HDFS(Hadoop Distributed File System)에 있는 텍스트 파일 또는 시퀀스 파일 모음을 위한 데이터저장소를 만들 수 있습니다. 데이터의 위치를 지정할 때는 다음 형식 중 하나로 된 IRI(Internationalized Resource Identifier)를 사용하여 파일이나 폴더의 전체 경로를 지정해야 합니다.

hdfs:/path_to_file
hdfs:///path_to_file
hdfs://hostname/path_to_file

hostname은 호스트 또는 서버 이름이고 path_to_file은 파일이나 폴더의 경로입니다. hostname을 지정하는 것은 선택 사항입니다. hostname을 지정하지 않으면 Hadoop에서는 MATLAB의 HDFS(Hadoop Distributed File System) 설치 위치와 연관된 디폴트 호스트 이름을 사용합니다.

예를 들어, 다음 두 명령은 myserver라는 호스트에 있는 폴더 data에 파일 file1.txt를 위한 데이터저장소를 만듭니다.

  • ds = datastore('hdfs:///data/file1.txt') 
  • ds = datastore('hdfs://myserver/data/file1.txt') 

hostname을 지정할 경우 Hadoop 클러스터의 Hadoop XML 구성 파일에 있는 fs.default.name 속성으로 정의된 namenode와 일치해야 합니다.

선택 사항으로 포트 번호를 입력할 수 있습니다. 예를 들어, 다음 위치는 data라는 폴더에 파일 file1.txt가 있는 호스트 myserver를 포트 7867로 지정합니다.

'hdfs://myserver:7867/data/file1.txt'

지정된 포트 번호는 HDFS 구성에 설정된 포트 번호와 일치해야 합니다.

Hadoop 환경 변수 설정하기

HDFS에서 읽어오기 전에, 먼저 setenv 함수를 사용하여 적절한 환경 변수를 Hadoop이 설치된 폴더로 설정합니다. 이 폴더는 현재 컴퓨터에서 액세스할 수 있어야 합니다.

  • Hadoop v1 전용 — HADOOP_HOME 환경 변수를 설정합니다.

  • Hadoop v2 전용 — HADOOP_PREFIX 환경 변수를 설정합니다.

  • Hadoop v1과 Hadoop v2를 모두 사용하거나 HADOOP_HOME 환경 변수와 HADOOP_PREFIX 환경 변수가 설정되지 않은 경우에는 MATLAB_HADOOP_INSTALL 환경 변수를 설정합니다.

예를 들어, 다음 명령을 사용하여 HADOOP_HOME 환경 변수를 설정합니다. 여기서 hadoop-folder는 Hadoop이 설치된 폴더이고 /mypath/는 해당 폴더의 경로입니다.

setenv('HADOOP_HOME','/mypath/hadoop-folder');

Hortonworks 또는Cloudera에 있는 HDFS 데이터

현재 컴퓨터가 Hortonworks 또는 Cloudera®에 있는 HDFS 데이터에 액세스할 수 있다면, HADOOP_HOME 환경 변수 또는 HADOOP_PREFIX 환경 변수를 설정하지 않아도 됩니다. MATLAB은 Hortonworks 또는 Cloudera 응용 프로그램 경계 노드를 사용할 경우에 이러한 환경 변수를 자동으로 할당합니다.

메모리에서 코드가 지워지지 않도록 방지하기

HDFS에서 읽거나 시퀀스 파일을 로컬로 읽어 들일 때 datastore 함수는 javaaddpath 명령을 호출합니다. 이 명령은 다음 작업을 수행합니다.

  • 동적 클래스 경로에 있는 파일에 의해 정의된 모든 Java® 클래스의 정의 지우기

  • 모든 전역 변수와 기본 작업 공간의 변수 제거

  • 메모리에서 모든 컴파일된 스크립트, 함수, MEX 함수 제거

영속 변수, 코드 파일, MEX 파일이 지워지지 않도록 하려면 mlock 함수를 사용하십시오.

HDFS에 데이터 쓰기

write 함수를 사용하여 tall형 배열과 분산 배열을 Hadoop Distributed File System에 씁니다. 분산 배열이나 tall형 배열에 대해 이 함수를 호출할 경우에는 HDFS 폴더의 전체 경로를 지정해야 합니다. 다음 예제에서는 HDFS에서 테이블 형식 데이터를 tall형 배열로 읽어오고, 누락된 항목을 제거하고 정렬하여 데이터를 전처리한 다음, HDFS에 다시 쓰는 방법을 보여줍니다.

ds = tabularTextDatastore('hdfs://myserver/some/path/dataset/airlinesmall.csv', ...
  'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});
tt = tall(ds);
tt = sortrows(rmmissing(tt));
write('hdfs://myserver/some/path/preprocessedData/',tt);

tall형 데이터를 다시 읽어오려면 datastore 함수를 사용하십시오.

ds = datastore('hdfs://myserver/some/path/preprocessedData/');
tt = tall(ds);

참고 항목

| | | | | | |

관련 항목