Работа с удаленными данными

В MATLAB® можно читать и записать данные к и от удаленного местоположения, такого как "облачное" хранилище в Amazon S3™ (Простой Сервис Устройства хранения данных), Microsoft® Azure® Storage Blob и Hadoop® Distributed File System (HDFS™).

Можно получить доступ к удаленным данным с помощью объектов datastore. Используйте datastore, чтобы исследовать часть ваших данных из вашей настольной версии MATLAB. Затем после прототипирования вашего кода локально, можно масштабировать до кластера или облака. Увеличение масштаба повышает эффективность выполнения, когда более эффективно выполнить большие вычисления в том же месте как данные. Чтобы записать данные к удаленному местоположению, можно использовать функцию write на высоком или распределенном массиве.

Amazon S3

MATLAB позволяет вам использовать Amazon S3 в качестве онлайнового веб-сервиса хранилища файлов, предлагаемого Amazon Web Services. Можно использовать данные, хранимые на Amazon S3 с функцией datastore или определенном объекте datastore, таком как ImageDatastore, FileDatastore, SpreadsheetDatastore или TabularTextDatastore. Когда вы задаете местоположение данных, необходимо задать полный путь к файлам или папкам с помощью интернационализировавшего идентификатора ресурса (IRI) формы

s3://bucketname/path_to_file

bucketname является именем контейнера, и path_to_file является путем к файлу или папкам.

Amazon S3 обеспечивает хранение данных через интерфейсы веб-сервисов. Можно использовать блок в качестве контейнера, чтобы хранить объекты в Amazon S3.

Настройте доступ

Чтобы работать с удаленными данными в Amazon S3, необходимо настроить доступ сначала:

  1. Зарегистрируйтесь в системе для корневой учетной записи Amazon Web Services (AWS). См. Amazon Web Services: Учетная запись.

  2. Используя вашу корневую учетную запись AWS, создайте меня AM (Идентичность и управление доступом) пользователь. Смотрите Создание меня Пользователь AM в Вашей Учетной записи AWS.

  3. Сгенерируйте ключ доступа, чтобы получить ID ключа доступа и секретный ключ доступа. Смотрите Ключи доступа Управления поскольку я Пользователи AM.

  4. Сконфигурируйте свою машину с ID ключа доступа AWS, секретным ключом доступа и областью с помощью инструмента AWS Command Line Interface под эгидой https://aws.amazon.com/cli/. Также установите переменные окружения непосредственно при помощи setenv:

    • AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY — Аутентифицируйте и включите использование сервисов Amazon S3. (Вы сгенерировали эту пару переменных ключа доступа на шаге 3.)

    • (Дополнительный) AWS_REGION — Выбор географическая область вашего блока. Значение этой переменной окружения обычно определяется автоматически, но владелец блока может потребовать, чтобы вы установили его вручную.

Если вы используете Parallel Computing Toolbox™, необходимо гарантировать, что кластер был сконфигурирован для доступа сервисы S3. Можно скопировать переменные клиентской среды в рабочих на кластере установкой EnvironmentVariables в parpool, пакете, createJob или в Кластерном менеджере по Профилю.

Считайте данные из Amazon S3

Можно считать данные из Amazon S3 с помощью объектов datastore. Например, создайте ImageDatastore, считайте заданное изображение из datastore, и затем отобразите изображение, чтобы экранировать.

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, вызовите функцию write на распределенном или длинном массиве и предоставьте полный путь папке в "облачном" хранилище. Следующий пример показывает, как считать табличные данные из Amazon S3 в длинный массив, предварительно обработать его путем удаления недостающих записей и сортировки, и затем записать его обратно к 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);

Чтобы считать ваши высокие данные назад, используйте функцию datastore.

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

Microsoft Azure Storage Blob

MATLAB позволяет вам использовать Windows Azure® Storage Blob (WASB) в качестве онлайнового веб-сервиса хранилища файлов, предлагаемого Microsoft. Можно использовать данные, хранимые на Azure с функцией datastore или определенном объекте datastore, таком как ImageDatastore, FileDatastore, SpreadsheetDatastore или TabularTextDatastore. Когда вы задаете местоположение данных, необходимо задать полный путь к файлам или папкам с помощью интернационализировавшего идентификатора ресурса (IRI) формы

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

container@account является именем контейнера, и path_to_file является путем к файлу или папкам.

Azure обеспечивает хранение данных через интерфейсы веб-сервисов. Можно использовать блоб, чтобы сохранить файлы данных в Azure. Смотрите Введение в Azure для получения дополнительной информации.

Настройте доступ

Чтобы работать с удаленными данными в устройстве хранения данных Azure, необходимо настроить доступ сначала:

  1. Зарегистрируйте аккаунт Microsoft Azure, смотрите Microsoft Azure Account.

  2. Настройте свои детали аутентификации путем установки точно одного из двух после переменных окружения с помощью setenv:

    • MW_WASB_SAS_TOKEN — Аутентификация с помощью подписанного URL-адреса (SAS)

      Получите SAS. Для получения дополнительной информации смотрите, что раздел "Get the SAS for a blob container" в Управляет Ресурсами хранения Блоба Azure с Проводником Устройства хранения данных.

      В 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'

      Необходимо установить эту строку на допустимую лексему SAS, сгенерированную от сети Устройства хранения данных Azure пользовательский интерфейс или Проводник.

    • MW_WASB_SECRET_KEY — Аутентификация через один из двух секретных ключей Учетной записи

      Каждая Учетная запись Устройства хранения данных имеет два секретных ключа тот доступ к административной привилегии разрешения. Этому тому же доступу можно предоставить в MATLAB, не имея необходимость создавать лексему SAS путем установки переменной окружения MW_WASB_SECRET_KEY. Например:

      setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'

Если вы используете Parallel Computing Toolbox, необходимо скопировать переменные клиентской среды в рабочих на кластере установкой EnvironmentVariables в parpool, пакете, createJob или в Кластерном менеджере по Профилю.

Для получения дополнительной информации смотрите устройство хранения данных Azure Использования с кластерами Azure HDInsight.

Считайте данные из Azure

Чтобы считать данные из местоположения WASB, используйте объект datastore. Чтобы произвести расположение файла, запустите с имени файла 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/, затем можно создать datastore при помощи:

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

Можно использовать Azure для всех вычислений поддержки datastore, включая непосредственное считывание, mapreduce, длинные массивы и глубокое обучение. Например, создайте ImageDatastore, считайте заданное изображение из datastore, и затем отобразите изображение, чтобы экранировать.

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, вызовите функцию write на распределенном или длинном массиве и предоставьте полный путь папке в "облачном" хранилище. Следующий пример показывает, как считать табличные данные из Azure в длинный массив, предварительно обработать его путем удаления недостающих записей и сортировки, и затем записать его обратно к 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);

Чтобы считать ваши высокие данные назад, используйте функцию datastore.

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

Распределенная файловая система Hadoop

Определение местоположения данных

Также можно создать datastore для набора текстовых файлов или файлов последовательности, которые находятся на Распределенной файловой системе Hadoop (HDFS) с помощью функции datastore. Когда вы задаете местоположение данных, необходимо задать полный путь к файлам или папкам с помощью интернационализировавшего идентификатора ресурса (IRI) одной из следующих форм:

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

hostname является именем хоста или сервера, и path_to_file является путем к файлу или папкам. Определение hostname является дополнительным. Когда вы не задаете hostname, Хэдуп использует имя хоста по умолчанию, сопоставленное с установкой Распределенной файловой системы Hadoop (HDFS) в MATLAB.

Например, обе этих команды создают datastore для файла, file1.txt, в папке под названием data, расположенный в хосте под названием myserver:

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

Если hostname задан, он должен соответствовать namenode, заданному свойством fs.default.name в конфигурационных XML-файлах Hadoop для вашего кластера Hadoop.

Опционально, можно включать номер порта. Например, это местоположение задает хост под названием myserver с портом 7867, содержа файл file1.txt в папке под названием data:

'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');

Данные HDFS по Hortonworks или Cloudera

Если ваша текущая машина имеет доступ к данным HDFS по Hortonworks или Cloudera®, то вы не должны устанавливать переменные окружения HADOOP_PREFIX или HADOOP_HOME. MATLAB автоматически присваивает эти переменные окружения при использовании узлов ребра приложения Hortonworks или Cloudera.

Предотвращение очищающегося кода из памяти

При чтении из HDFS или при чтении файлов Последовательности локально, вызовы функции datastore команда javaaddpath. Эта команда делает следующее:

  • Очищает определения всех классов Java®, заданных файлами на динамическом пути к классу

  • Удаляет все глобальные переменные и переменные из базового рабочего пространства

  • Удаляет все скомпилированные скрипты, функции и MEX-функции из памяти

Чтобы предотвратить персистентные переменные, файлы кода или файлы MEX от того, чтобы быть очищенным, используют функцию mlock.

Запись данных к HDFS

Используйте функцию write, чтобы записать ваши высокие и распределенные массивы в Распределенную файловую систему Hadoop. Когда вы вызываете эту функцию на распределенном или длинном массиве, необходимо задать полный путь к папке HDFS. Следующий пример показывает, как считать табличные данные из HDFS в длинный массив, предварительно обработать его путем удаления недостающих записей и сортировки, и затем записать его обратно к 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);

Чтобы считать ваши высокие данные назад, используйте функцию datastore.

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

Смотрите также

| | | | | | |

Похожие темы