ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

リモート データの読み取り

MATLAB® では、datastore オブジェクトを使用してリモート データにアクセスできます。データ ストアを作成し、Amazon S3™ (Simple Storage Service)、Windows Azure® BLOB ストレージ、および Hadoop® 分散ファイル システム (HDFS™ ) を使用したクラウド ストレージなどのリモートの場所に格納されているデータを操作することが可能です。データ ストアを使用して、MATLAB のデスクトップ バージョンからデータの一部を調べます。その後、コードをローカルでプロトタイプ化してから、クラスターまたはクラウドにスケール アップできます。データと同じ場所で大規模な計算を実行するほうが効率がよいため、スケール アップすると実行効率性が向上します。

Amazon S3

MATLAB では、Amazon S3 をアマゾン ウェブ サービス提供のオンライン ファイル ストレージ ウェブ サービスとして使用できます。Amazon S3 に格納されているデータを使用して、ImageDatastoreFileDatastore または TabularTextDatastore を作成できます。データの場所を指定する場合、次の形式の国際化リソース識別子 (IRI) を使用してファイルまたはフォルダーへの絶対パスを指定しなければなりません。

s3://bucketname/path_to_file

bucketname はコンテナーの名前、path_to_file はファイルまたはフォルダーへのパスです。

Amazon S3 は、ウェブ サービス インターフェイス経由でデータ ストレージを提供します。"バケット" をコンテナーとして使用して、オブジェクトを Amazon S3 に格納できます。詳細については、Amazon S3 のご紹介を参照してください。

Amazon S3 データ ストアを使用するには、以下の手順に従います。

  1. アマゾン ウェブ サービス (AWS) のルート アカウントの新規登録を行います。「アマゾン ウェブ サービス: アカウント」を参照してください。

  2. AWS のルート アカウントを使用して、IAM (Identity and Access Management) ユーザーを作成します。「AWS アカウント内での IAM ユーザーの作成」を参照してください。

  3. アクセス キーを生成して、アクセス キー ID とシークレット アクセス キーを受け取ります。「IAM ユーザーのアクセスキーの管理」を参照してください。

  4. setenv を使用して環境変数を設定します。

    • AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY — Amazon S3 サービスを認証して使用可能にします (このアクセス キー変数のペアは手順 3 で生成しました)。

    • AWS_REGION — バケットの地理的領域を選択します。この変数は、使用中のプロファイルの既定の地域が設定されている場合、これをオーバーライドします。

たとえば、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 では、Windows Azure BLOB ストレージ (WABS) を Microsoft 提供のオンライン ファイル ストレージ ウェブ サービスとして使用できます。Windows Azure に格納されているデータを使用して、ImageDatastoreFileDatastore または TabularTextDatastore を作成できます。データの場所を指定する場合、次の形式の国際化リソース識別子 (IRI) を使用してファイルまたはフォルダーへの絶対パスを指定しなければなりません。

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

container@account はコンテナーの名前、path_to_file はファイルまたはフォルダーへのパスです。

Windows Azure は、ウェブ サービス インターフェイス経由でデータ ストレージを提供します。"BLOB" をコンテナーとして使用して、オブジェクトを Windows Azure に格納できます。詳細については、Windows Azure のご紹介を参照してください。

Windows Azure データ ストアを使用するには、次の手順に従います。

  1. Microsoft Azure アカウントの新規登録を行います。詳細については、Microsoft Azure アカウントを参照してください。

  2. setenv を使用して以下の 2 つの環境変数のうちのどちらか 1 つのみを設定し、認証の詳細をセットアップします。

    • 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 web UI またはエクスプローラーから生成された有効な SAS トークンに設定しなければなりません。

    • MW_WASB_SECRET_KEY — アカウントの 2 つの秘密鍵の 1 つを使用した認証

      各ストレージ アカウントには 2 つの秘密鍵があり、それを使用した管理者権限アクセスが可能です。環境変数 MW_WASB_SECRET_KEY を設定することにより、SAS トークンを作成しなくても、これと同じアクセス権を MATLAB に付与できます。以下に例を示します。

      setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'

  3. Windows Azure Storage BLOB (WASB) の場所からデータ ストアを作成します。

    ファイルの場所を作成するには、ファイル名 file.ext で開始して、ファイル パス /path_to_file とアカウント名 wasbs://container@account/ を前に追加します。完全なデータの場所には次の構文を使用します。

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

    container@account はコンテナーの名前、path_to_file はファイルまたはフォルダーへのパスです。

    たとえば、airlinesmall.csv というファイルが /airline というフォルダーの中にあり、このフォルダーがテスト ストレージ アカウント wasbs://blobContainer@storageAccount.blob.core.windows.net/ にある場合、次を使用してデータ ストアを作成できます。

    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™ を使用している場合は、EnvironmentVariablesparpoolbatchcreateJob の中で設定するか、クラスター プロファイル マネージャーの中で設定することにより、クライアント環境変数をクラスター上のワーカーにコピーしなければなりません。

詳細については、https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-use-blob-storageを参照してください。

HDFS

データ位置の指定

関数 datastore を使用して、Hadoop 分散ファイル システム (HDFS) 上のテキスト ファイルまたはシーケンス ファイルのコレクションについてデータ ストアを作成することもできます。データの場所を指定する場合、次のいずれかの形式の国際化リソース識別子 (IRI) を使用してファイルまたはフォルダーへの絶対パスを指定しなければなりません。

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

hostname はホストまたはサーバーの名前、path_to_file はファイルまたはフォルダーへのパスです。hostname の指定はオプションです。hostname を指定しない場合、Hadoop は MATLAB の Hadoop 分散ファイル システム (HDFS) インストールに関連付けられている既定のホスト名を使用します。

たとえば、これらのコマンドは両方とも 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 を含む、ポート 7867myserver というホストを指定します。

'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 の各環境変数を設定する必要はありません。Hortonworks または Cloudera アプリケーションのエッジ ノードを使用するとき、MATLAB はこれらの環境変数を自動的に割り当てます。

メモリからコードがクリアされるのを回避する

HDFS から読み取る場合やシーケンス ファイルをローカルに読み取る場合、関数 datastorejavaaddpath コマンドを呼び出します。このコマンドは以下を実行します。

  • 動的クラス パス上のファイルによって定義されるすべての Java® クラスの定義をクリアする

  • すべてのグローバル変数および基本ワークスペースからの変数を削除する

  • すべてのコンパイルされているスクリプト、関数、MEX 関数をメモリから削除する

永続変数、コード ファイルまたは MEX ファイルがクリアされないようにするには、関数 mlock を使用します。

参考

| | | | | |