Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Trabajar con datos remotos

En MATLAB®, puede leer y escribir datos en y desde una ubicación remota, como el almacenamiento en la nube de Amazon S3™ (Simple Storage Service), Microsoft® Azure® Storage Blob y el sistema de archivos distribuido Hadoop® (HDFS™).

Puede acceder a datos remotos mediante objetos del almacén de datos. Utilice el almacén de datos para examinar parte de los datos desde la versión de escritorio de MATLAB. Después, tras prototipar el código localmente, puede escalar a un cluster o una nube. El escalado mejora la eficacia de la ejecución, ya que es más eficaz ejecutar grandes cálculos en la misma ubicación de los datos. Para escribir datos en una ubicación remota, puede utilizar la función write en un arreglo distribuido o alto.

Amazon S3

MATLAB le permite utilizar Amazon S3 como servicio web de almacenamiento de archivos online ofrecido por Amazon Web Services. Puede utilizar datos almacenados en Amazon S3 con objetos del almacén de datos como ImageDatastore, FileDatastore, SpreadsheetDatastore o TabularTextDatastore. Cuando especifique la ubicación de los datos, debe especificar la ruta completa a los archivos o las carpetas mediante un localizador uniforme de recursos (URL) con el formato

s3://bucketname/path_to_file

bucketname es el nombre del contenedor y path_to_file es la ruta al archivo o a las carpetas.

Amazon S3 proporciona almacenamiento de datos a través de interfaces de servicios web. Puede utilizar un bucket como contenedor para almacenar objetos en Amazon S3.

Configurar acceso

Para trabajar con datos remotos en Amazon S3, debe configurar el acceso primero:

  1. Regístrese para obtener una cuenta raíz de Amazon Web Services (AWS). Consulte Amazon Web Services: cuenta.

  2. Con su cuenta raíz de AWS, cree un usuario de IAM (Administración de identidades y accesos). Consulte Creación de un usuario de IAM en su cuenta de AWS.

  3. Genere una clave de acceso para recibir un ID de clave de acceso y una clave de acceso secreta. Consulte Administración de las claves de acceso de los usuarios de IAM.

  4. Configure el equipo con el ID de clave de acceso de AWS, la clave de acceso secreta y la región mediante la interfaz de línea de comandos de AWS desde https://aws.amazon.com/cli/. De forma alternativa, configure directamente las variables de entorno mediante setenv:

    • AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY: autentique y permita el uso de los servicios de Amazon S3 (generó este par de variables de clave de acceso en el paso 3).

    • AWS_DEFAULT_REGION (opcional): seleccione la región geográfica del bucket. El valor de esta variable de entorno se suele determinar automáticamente, pero el propietario del bucket puede necesitar que lo configure manualmente.

    • AWS_SESSION_TOKEN (opcional): especifique el token de sesión si utiliza credenciales de seguridad temporales, como con la autenticación federada de AWS®.

Si utiliza Parallel Computing Toolbox™, debe asegurarse de que el cluster se haya configurado para acceder a los servicios de S3. Puede copiar las variables del entorno de cliente en los trabajadores de un cluster estableciendo EnvironmentVariables en parpool, batch, createJob o en el Administrador de perfiles de cluster.

Leer datos de Amazon S3

Puede leer datos de Amazon S3 mediante objetos del almacén de datos. Por ejemplo, cree un ImageDatastore, lea una imagen específica del almacén de datos y luego muestre la imagen en la pantalla.

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)

Escribir datos en Amazon S3

Para escribir datos en Amazon S3, llame a la función write en un arreglo alto o distribuido y proporcione la ruta completa a una carpeta del almacenamiento en la nube. El siguiente ejemplo muestra cómo leer datos tabulares de Amazon S3 en un arreglo alto, preprocesarlos eliminando las entradas ausentes y clasificándolos, y luego volver a escribirlos en 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);

Para volver a leer los datos altos, utilice la función datastore.

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

Microsoft Azure Storage Blob

MATLAB le permite utilizar Windows Azure® Storage Blob (WASB) como servicio web de almacenamiento de archivos online ofrecido por Microsoft. Puede utilizar datos almacenados en Azure con objetos del almacén de datos como ImageDatastore, FileDatastore, SpreadsheetDatastore o TabularTextDatastore. Cuando especifique la ubicación de los datos, debe especificar la ruta completa a los archivos o las carpetas mediante un localizador uniforme de recursos (URL) con el formato

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

container@account es el nombre del contenedor y path_to_file es la ruta al archivo o a las carpetas.

Azure proporciona almacenamiento de datos a través de interfaces de servicios web. Puede utilizar un blob para almacenar archivos de datos en Azure. Consulte Introducción a Azure para obtener más información.

Configurar acceso

Para trabajar con datos remotos en el almacenamiento de Azure, debe configurar el acceso primero:

  1. Regístrese para obtener una cuenta de Microsoft Azure y consulte Cuenta de Microsoft Azure.

  2. Defina sus credenciales de autenticación estableciendo exactamente una de las siguientes variables de entorno mediante setenv:

    • MW_WASB_SAS_TOKEN: autenticación mediante firma de acceso compartido (SAS)

      Obtenga una SAS. Para obtener información, consulte la sección «Obtención de la SAS para un contenedor de blobs» en Administración de recursos de Azure Blob Storage con el Explorador de Storage.

      En MATLAB, establezca MW_WASB_SAS_TOKEN en la cadena de consulta de SAS. Por ejemplo:

      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'

      Debe establecer esta cadena como token de SAS válido generado desde la interfaz de usuario web o el Explorador de Azure Storage.

    • MW_WASB_SECRET_KEY: autenticación mediante una de las dos claves secretas de la cuenta

      Cada cuenta de Storage tiene dos claves secretas que permiten el acceso a privilegios administrativos. Este mismo acceso se puede conceder a MATLAB sin tener que crear un token de SAS estableciendo la variable de entorno MW_WASB_SECRET_KEY. Por ejemplo:

      setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'

Si utiliza Parallel Computing Toolbox, debe copiar las variables del entorno de cliente en los trabajadores de un cluster estableciendo EnvironmentVariables en parpool, batch, createJob o en el Administrador de perfiles de cluster.

Para obtener más información, consulte Uso de Azure Storage con clusters de Azure HDInsight.

Leer datos de Azure

Para leer datos de una ubicación de WASB, utilice un objeto del almacén de datos. Para producir la ubicación del archivo, comience con el nombre de archivo file.ext y prefíjelo con la ruta de archivo /path_to_file y el nombre de la cuenta wasbs://container@account/. La ubicación completa de los datos utiliza la siguiente sintaxis:

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

container@account es el nombre del contenedor y path_to_file es la ruta al archivo o a las carpetas.

Por ejemplo, si tiene un archivo airlinesmall.csv en una carpeta /airline en una cuenta de almacenamiento de prueba wasbs://blobContainer@storageAccount.blob.core.windows.net/, puede crear un almacén de datos mediante:

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

Puede utilizar Azure para todos los cálculos que los almacenes de datos admiten, como la lectura directa, mapreduce, los arreglos altos y el aprendizaje profundo. Por ejemplo, cree un ImageDatastore, lea una imagen específica del almacén de datos y luego muestre la imagen en la pantalla.

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)

Escribir datos en Azure

Para escribir datos en Azure, llame a la función write en un arreglo alto o distribuido y proporcione la ruta completa a una carpeta del almacenamiento en la nube. El siguiente ejemplo muestra cómo leer datos tabulares de Azure en un arreglo alto, preprocesarlos eliminando las entradas ausentes y clasificándolos, y luego volver a escribirlos en 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);

Para volver a leer los datos altos, utilice la función datastore.

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

Sistema de archivos distribuido Hadoop

Especificar la ubicación de los datos

También puede crear un almacén de datos para una recopilación de archivos de texto o archivos de secuencia alojados en el sistema de archivos distribuido Hadoop (HDFS) mediante la función tabularTextDatastore. Cuando especifique la ubicación de los datos, debe especificar la ruta completa a los archivos o las carpetas mediante un localizador uniforme de recursos (URL) con uno de los siguientes formatos:

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

hostname es el nombre del host o servidor y path_to_file es la ruta al archivo o a las carpetas. Especificar el hostname es opcional. Si no se especifica el hostname, Hadoop utiliza el nombre de host predeterminado asociado a la instalación del sistema de archivos distribuido Hadoop (HDFS) en MATLAB.

Por ejemplo, estos comandos crean un almacén de datos para el archivo, file1.txt, en una carpeta llamada data que se encuentra en un host denominado myserver:

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

Si se especifica el hostname, debe corresponderse con el namenode definido por la propiedad fs.default.name en los archivos de configuración XML de Hadoop del cluster de Hadoop.

De forma opcional, puede incluir el número de puerto. Por ejemplo, esta ubicación especifica un host denominado myserver con el puerto 7867, que contiene el archivo file1.txt en una carpeta denominada data:

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

El número de puerto especificado debe coincidir con el número de puerto establecido en la configuración de HDFS.

Establecer una variable de entorno de Hadoop

Antes de leer desde HDFS, utilice la función setenv para establecer la variable de entorno correspondiente para la carpeta donde se haya instalado Hadoop. Se debe poder acceder a esta carpeta desde el equipo actual.

  • Hadoop v1 solo: establezca la variable de entorno HADOOP_HOME.

  • Hadoop v2 solo: establezca la variable de entorno HADOOP_PREFIX.

  • Si trabaja tanto con Hadoop v1 como con Hadoop v2 o si no se establecen las variables de entorno HADOOP_HOME y HADOOP_PREFIX, establezca el entorno de variable MATLAB_HADOOP_INSTALL.

Por ejemplo, utilice este comando para establecer la variable de entorno HADOOP_HOME. hadoop-folder es la carpeta en la que se ha instalado Hadoop y /mypath/ es la ruta a dicha carpeta.

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

Datos HDFS en Hortonworks o Cloudera

Si el equipo actual tiene acceso a datos HDFS en Hortonworks o Cloudera®, no tiene que establecer las variables de entorno HADOOP_HOME o HADOOP_PREFIX. MATLAB asigna automáticamente estas variables de entorno al utilizar los nodos perimetrales de aplicaciones de Hortonworks o Cloudera.

Evitar el código de eliminación de la memoria

Al leer desde HDFS o leer archivos de secuencia localmente, la función datastore llama al comando javaaddpath. Este comando hace lo siguiente:

  • Elimina las definiciones de todas las clases de Java® definidas por archivos en una ruta de clase dinámica

  • Elimina todas las variables y variables globales del espacio de trabajo base

  • Elimina todos los scripts, las funciones y las funciones MEX recopiladas de la memoria

Para evitar que se eliminen las variables, los archivos de código o los archivos MEX persistentes, utilice la función mlock.

Escribir datos en HDFS

Utilice la función write para escribir los arreglos altos y distribuidos en un sistema de archivos distribuido Hadoop. Al llamar a esta función en un arreglo alto o distribuido, debe especificar la ruta completa a una carpeta HDFS. El siguiente ejemplo muestra cómo leer datos tabulares de HDFS en un arreglo alto, preprocesarlos eliminando las entradas ausentes y clasificándolos, y luego volver a escribirlos en 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);

Para volver a leer los datos altos, utilice la función datastore.

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

Consulte también

| | | | | | | |

Temas relacionados