Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

원격 데이터로 작업하기

파일 I/O 함수와 일부 datastore 객체와 같은 MATLAB® 함수와 객체를 사용하여 원격 위치에서 데이터를 읽고 쓸 수 있습니다. 이 예제에서는 다음과 같은 클라우드 저장소 플랫폼에서 원격 위치를 설정하고 원격 위치의 데이터를 읽고 쓰는 방법을 보여줍니다.

  • Amazon S3™(Simple Storage Service)

  • Azure® Blob Storage(이전에는 Windows Azure® Storage Blob(WASB)라고 함)

  • Hadoop® Distributed File System(HDFS™)

Amazon S3

MATLAB에서는 Amazon Web Services에서 제공하는 Amazon S3를 온라인 파일 저장소 웹 서비스로 사용할 수 있습니다. 데이터의 위치를 지정할 때는 다음 형식의 URL(Uniform Resource Locator)을 사용하여 파일이나 폴더의 전체 경로를 지정해야 합니다.

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

    • AWS_SESSION_TOKEN(선택 사항) — AWS® Federated Authentication 같은 임시 보안 자격 증명을 사용하는 경우 세션 토큰을 지정합니다.

Amazon S3 위치에 퍼블릭 액세스 권한이 있는 경우 환경 변수를 설정하거나 인증을 구성하지 않아도 됩니다. 퍼블릭 액세스를 구성하는 방법에 대한 자세한 내용은 Blocking public access to your Amazon S3 storage를 참조하십시오.

Amazon S3을 사용하면 여러 명의 사용자가 하나의 계정에 액세스할 수도 있습니다. Amazon S3 액세스에 대한 자세한 내용은 AWS Identity and Access Management (IAM)를 참조하십시오.

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

Amazon S3에서 데이터 읽어오기

다음 예제는 ImageDatastore 객체를 사용하여 Amazon S3에서 특정 이미지를 읽어온 다음 화면에 표시하는 방법을 보여줍니다.

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에 데이터 쓰기

다음 예에서는 tabularTextDatastore 객체를 사용하여 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);

Azure Blob Storage

MATLAB에서는 Azure Blob Storage를 온라인 파일 저장소로 사용할 수 있습니다. 데이터의 위치를 지정할 때는 다음 형식의 URL(Uniform Resource Locator)을 사용하여 파일이나 폴더의 전체 경로를 지정해야 합니다.

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

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

Azure는 웹 서비스 인터페이스를 통해 데이터 저장소를 제공합니다. Blob을 사용하여 Azure에 데이터 파일을 저장할 수 있습니다. 자세한 내용은 What is 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'

Azure Storage 위치에 퍼블릭 액세스 권한이 있는 경우 환경 변수를 설정하거나 인증을 구성하지 않아도 됩니다. Azure Storage에 대한 퍼블릭 액세스에 대한 자세한 내용은 Configure anonymous public read access를 참조하십시오.

Azure Storage를 사용하면 여러 명의 사용자가 하나의 계정에 액세스할 수도 있습니다. 여러 명의 사용자 관리에 대한 자세한 내용은 Azure Active Directory Identity and access management operations reference guide를 참조하십시오.

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

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

Azure에서 데이터 읽어오기

Azure Blob Storage 위치에서 데이터를 읽어오려면 다음 구문을 사용하여 위치를 지정하십시오.

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형 배열, 딥러닝을 비롯해 데이터저장소가 지원하는 모든 계산에 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에 데이터 쓰기

이 예제에서는 tabularTextDatastore 객체를 사용하여 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

데이터의 위치 지정하기

MATLAB에서는 Hadoop Distributed File System(HDFS)을 온라인 파일 저장소 웹 서비스로 사용할 수 있습니다. 데이터의 위치를 지정할 때는 다음 형식 중 하나로 된 URL(Uniform Resource Locator)을 사용하여 파일이나 폴더의 전체 경로를 지정해야 합니다.

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 = tabularTextDatastore('hdfs:///data/file1.txt') 
  • ds = tabularTextDatastore('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에 데이터 쓰기

이 예제에서는 tabularTextDatastore 객체를 사용하여 데이터를 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);

참고 항목

| | | | | | | |

관련 항목