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

원격 데이터 읽어오기

MATLAB®에서는 datastore 객체를 사용하여 원격 데이터에 액세스할 수 있습니다. 또한 Amazon S3™(Simple Storage Service), Windows Azure® Blob 저장소, HDFS™(Hadoop® Distributed File System)를 사용하는 클라우드 저장소와 같이 원격 위치에 저장된 데이터를 처리하도록 데이터저장소를 만들 수 있습니다. MATLAB의 데스크탑 버전에서 데이터저장소를 사용하여 데이터의 일부를 검토하십시오. 그런 다음 로컬에서 코드를 프로토타이핑한 후 클러스터나 클라우드로 확장할 수 있습니다. 확장하면 데이터와 같은 위치에서 대규모 계산을 실행할 때 더 효율적이므로 실행 효율성이 높아집니다.

Amazon S3

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

s3://bucketname/path_to_file

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

Amazon S3는 웹 서비스 인터페이스를 통해 데이터 저장소를 제공합니다. Bucket을 컨테이너로 사용하여 Amazon S3에 객체를 저장할 수 있습니다. 자세한 내용은 Introduction to 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. setenv를 사용하여 다음 환경 변수를 설정합니다.

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

    • AWS_REGION — Bucket의 지리적 영역을 선택합니다. 이 변수가 설정되면 사용 중인 프로파일의 디폴트 영역보다 우선합니다.

예를 들어, ImageDatastore를 만들고 이 데이터저장소에서 지정된 이미지를 읽어온 후 화면에 표시합니다.

setenv('AWS_ACCESS_KEY_ID', 'YOUR_AWS_ACCESS_KEY_ID'); 
setenv('AWS_SECRET_ACCESS_KEY', 'YOUR_AWS_SECRET_ACCESS_KEY'); 
setenv('AWS_REGION', 'us-east-1');

ds = imageDatastore('s3://mw-s3-datastore-tests-us/image_datastore/jpegfiles', ...
  'IncludeSubfolders', true, 'LabelSource', 'foldernames'); 
img = ds.readimage(1);
imshow(img)

Windows Azure Blob 저장소

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

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

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

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

Windows Azure 데이터저장소를 사용하려면 다음 단계를 따르십시오.

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

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

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

      SAS를 가져옵니다. 자세한 내용은 https://docs.microsoft.com/en-us/azure/vs-azure-tools-storage-explorer-blobs의 "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'

  3. WASB(Windows Azure Storage Blob) 위치에서 데이터저장소를 만듭니다.

    파일 위치를 생성하려면 먼저 파일 이름 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)

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

자세한 내용은 https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-use-blob-storage를 참조하십시오.

HDFS

데이터의 위치 지정하기

또한 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 함수를 사용하십시오.

참고 항목

| | | | | |