

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Preparación de los datos de entrada para su procesamiento con Amazon EMR
<a name="emr-plan-input"></a>

La mayoría de los clústeres cargan los datos de entrada y, a continuación, procesan dichos datos. Para cargar datos, tiene que estar en una ubicación a la que el clúster pueda acceder y en un formato que el clúster pueda procesar. El escenario más habitual consiste en cargar los datos de entrada en Amazon S3. Amazon EMR proporciona herramientas para su clúster para importar o leer datos desde Amazon S3.

El formato de entrada predeterminado en Hadoop son archivos de texto, aunque puede personalizar Hadoop y utilizar herramientas para importar los datos almacenados en otros formatos. 

**Topics**
+ [Tipos de entrada que Amazon EMR puede aceptar](emr-plan-input-accept.md)
+ [Diferentes formas de obtener datos en Amazon EMR](emr-plan-get-data-in.md)

# Tipos de entrada que Amazon EMR puede aceptar
<a name="emr-plan-input-accept"></a>

El formato de entrada predeterminado para un clúster son archivos de texto con cada línea separada por un carácter de nueva línea (\$1n), que es el formato de entrada usado con más frecuencia. 

Si los datos de entrada se encuentran en un formato que no sean los archivos de texto predeterminados, puede utilizar la interfaz de Hadoop `InputFormat` para especificar otros tipos de entrada. Puede incluso crear una subclase de la clase `FileInputFormat` para gestionar tipos de datos personalizados. [Para obtener más información, consulte http://hadoop.apache. org/docs/current/api/org/apache/hadoop/mapred/InputFormat.html](http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/InputFormat.html). 

Si usa Hive, puede usar a serializer/deserializer (SerDe) para leer datos de un formato determinado en HDFS. [Para obtener más información, consulte https://cwiki.apache. org/confluence/display/Hive/SerDe](https://cwiki.apache.org/confluence/display/Hive/SerDe). 

# Diferentes formas de obtener datos en Amazon EMR
<a name="emr-plan-get-data-in"></a>

Amazon EMR proporciona varias formas de obtener datos en un clúster. La forma más común consiste en cargar los datos en Amazon S3 y utilizar las características integradas de Amazon EMR para cargar los datos en el clúster. También puede utilizar la característica DistributedCache de Hadoop para transferir archivos desde un sistema de archivos distribuido al sistema de archivos local. La implementación de Hive proporcionada por Amazon EMR (Hive versión 0.7.1.1 y posteriores) incluye la funcionalidad que puede utilizar para importar y exportar datos entre DynamoDB y un clúster de Amazon EMR. Si tiene una gran cantidad de datos on-premises para procesar, puede encontrar útil el servicio Direct Connect . 

**Topics**
+ [Descargar datos en Amazon S3](emr-plan-upload-s3.md)
+ [Sube los datos con AWS DataSync](emr-plan-upload-datasync.md)
+ [Importación de archivos con caché distribuida con Amazon EMR](emr-plan-input-distributed-cache.md)
+ [Detección y procesamiento de archivos comprimidos con Amazon EMR](HowtoProcessGzippedFiles.md)
+ [Importación de datos de DynamoDB a Hive con Amazon EMR](emr-plan-input-dynamodb.md)
+ [Conéctese a los datos AWS Direct Connect desde Amazon EMR](emr-plan-input-directconnect.md)
+ [Cargue grandes cantidades de datos para Amazon EMR con AWS Snowball Edge](emr-plan-input-snowball.md)

# Descargar datos en Amazon S3
<a name="emr-plan-upload-s3"></a>

Para obtener información sobre cómo cargar objetos en Amazon S3, consulte [Agregar un objeto a un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PuttingAnObjectInABucket.html) en la *Guía del usuario de Amazon Simple Storage Service*. [Para obtener más información sobre el uso de Amazon S3 con Hadoop, consulte http://wiki.apache. org/hadoop/AmazonS3.](http://wiki.apache.org/hadoop2/AmazonS3) 

**Topics**
+ [Creación y configuración de un bucket de Amazon S3](#create-s3-bucket-input)
+ [Configurar cargas multiparte para Amazon S3](#Config_Multipart)
+ [Prácticas recomendadas](#emr-bucket-bestpractices)
+ [Carga de datos en Amazon S3 Express One Zone](emr-express-one-zone.md)

## Creación y configuración de un bucket de Amazon S3
<a name="create-s3-bucket-input"></a>

Amazon EMR lo utiliza AWS SDK para Java con Amazon S3 para almacenar datos de entrada, archivos de registro y datos de salida. Amazon S3 denomina estas ubicaciones de almacenamiento *buckets*. Los buckets tienen ciertas restricciones y limitaciones para cumplir con los requisitos de Amazon S3 y DNS. Para obtener más información, consulte [Restricciones y limitaciones de los buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) en la *Guía del usuario de Amazon Simple Storage Service*.

En esta sección, se muestra cómo utilizar Amazon S3 Consola de administración de AWS para crear y, a continuación, establecer los permisos para un bucket de Amazon S3. También puede crear y establecer permisos para un bucket de Amazon S3 con la API o la AWS CLI de Amazon S3. También puede utilizar curl junto con una modificación para pasar los parámetros de autenticación correspondientes a Amazon S3.

Consulte los siguientes recursos:
+ Para crear un bucket mediante la consola, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) en la *Guía del usuario de Amazon S3*.
+ Para crear buckets y trabajar con ellos mediante el AWS CLI, consulte [Uso de comandos de S3 de alto nivel AWS Command Line Interface en la](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-s3-commands.html) *Guía del usuario de Amazon S3*.
+ Para crear un bucket mediante un SDK, consulte [Ejemplos de creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-get-location-example.html) en la *Guía del usuario de Amazon Simple Storage Service*.
+ Para trabajar con buckets mediante curl, consulte [Herramienta de autenticación de Amazon S3 para curl](https://aws.amazon.com/code/amazon-s3-authentication-tool-for-curl/).
+ Para más información acerca de la especificación de buckets específicos de una región, consulte [Acceso a un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html#access-bucket-intro) en la *Guía del usuario de Amazon Simple Storage Service*.
+ Para trabajar con buckets mediante Puntos de acceso de Amazon S3, consulte [Uso de un alias de estilo de bucket para su punto de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-alias.html) en la *Guía del usuario de Amazon S3*. Puede utilizar fácilmente Puntos de acceso de Amazon S3 con el alias del punto de acceso de Amazon S3 en lugar del nombre del bucket de Amazon S3. Puede utilizar el alias del punto de acceso Amazon S3 para aplicaciones nuevas y existentes, incluidas Spark, Hive y Presto, entre otras.

**nota**  
Si habilita el registro para un bucket, se habilitan únicamente los registros de acceso al bucket, no los registros del clúster de Amazon EMR. 

Durante la creación de un bucket o posteriormente, puede definir los permisos adecuados para tener acceso a él, en función de su aplicación. Lo habitual es que se conceda a sí mismo (el propietario) acceso de lectura y de escritura, así como acceso de lectura a los usuarios autenticados.

Los buckets de Amazon S3 necesarios deben existir para poder crear un clúster. Debe cargar en Amazon S3 todos los scripts o datos necesarios a los que se hace referencia en el clúster. 

## Configurar cargas multiparte para Amazon S3
<a name="Config_Multipart"></a>

Amazon EMR admite la carga multiparte de Amazon S3 a través del AWS SDK for Java. La carga multiparte permite cargar un solo objeto como un conjunto de partes. Puede cargar estas partes del objeto de forma independiente y en cualquier orden. Si la transmisión de cualquier parte falla, puede retransmitir esta parte sin que las demás partes se vean afectadas. Después de cargar todas las partes del objeto, Amazon S3 las combina y crea el objeto.

Para obtener más información, consulte la sección [Información general sobre la carga multiparte](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) en la *Guía de del usuario de Amazon Simple Storage Service*.

Además, Amazon EMR ofrece propiedades que le permiten controlar de manera más precisa la limpieza de partes de carga multiparte con errores.

En la siguiente tabla, se describen las propiedades de configuración de Amazon EMR para la carga multiparte. Puede configurarlas utilizando la clasificación de configuración `core-site`. Para más información, consulte [Configuración de aplicaciones](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/configure-apps.html) en la *Guía de versiones de Amazon EMR*.


| Nombre de parámetro de configuración | Predeterminado | Description (Descripción) | 
| --- | --- | --- | 
| fs.s3n.multipart.uploads.enabled | true | Un tipo booleano que indica si se debe habilitar las cargas multiparte. Cuando la vista consistente de EMRFS se ha habilitado, las cargas multiparte se habilitan de forma predeterminada y si se configura este valor en false, no se tiene en cuenta. | 
| fs.s3n.multipart.uploads.split.size | 134217728 | Especifica el tamaño máximo de una parte, en bytes, para que EMRFS inicie la carga de una parte nueva cuando las cargas multiparte están habilitadas. El valor mínimo es `5242880` (5 MB). Si se especifica un valor menor, se utiliza `5242880`. El valor máximo es `5368709120` (5 GB). Si se especifica un valor mayor, se utiliza `5368709120`. Si se ha desactivado el cifrado del cliente de EMRFS y el confirmador optimizado de Amazon S3 también se ha desactivado, este valor también controla el tamaño máximo que puede alcanzar un archivo de datos para que EMRFS utilice cargas multiparte en lugar de una solicitud `PutObject` para cargar el archivo. Para obtener más información, consulte  | 
| fs.s3n.ssl.enabled | true | Un tipo booleano que indica si se debe utilizar http o https.  | 
| fs.s3.buckets.create.enabled | false | Un tipo booleano que indica si se debe crear un bucket en caso de que no exista. Si se establece en false, se provocará una excepción en las operaciones CreateBucket. | 
| fs.s3.multipart.clean.enabled | false | Un tipo booleano que indica si se debe habilitar la limpieza periódica en segundo plano de las cargas multiparte incompletas. | 
| fs.s3.multipart.clean.age.threshold | 604800 | Un tipo long que especifica la edad mínima de una carga multiparte, en segundos, antes de que se la incluya en la limpieza. El valor predeterminado es una semana. | 
| fs.s3.multipart.clean.jitter.max | 10000 | Un tipo entero que especifica la cantidad máxima de retraso de fluctuación aleatorio, en segundos, que se agrega al retraso fijo de 15 minutos antes de programar la próxima ronda de limpieza. | 

### Desactivar cargas multiparte
<a name="emr-dev-multipart-upload"></a>

------
#### [ Console ]

**Para deshabilitar las cargas multiparte con la consola**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. En **EMR en EC2** situado en el panel de navegación izquierdo, elija **Clústeres** y, a continuación, elija **Crear clúster**.

1. En **Configuración de software**, introduzca la configuración siguiente: `classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]`.

1. Elija cualquier otra opción que se aplique a su clúster. 

1. Para lanzar el clúster, elija **Crear clúster**.

------
#### [ CLI ]

**Para deshabilitar la carga multiparte mediante el AWS CLI**

Este procedimiento explica cómo deshabilitar la carga multiparte utilizando la AWS CLI. Para deshabilitar la carga multiparte, escriba el comando `create-cluster` con el parámetro `--bootstrap-actions`. 

1. Cree un archivo `myConfig.json` con el siguiente contenido y guárdelo en el mismo directorio en el que va a ejecutar el comando:

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3n.multipart.uploads.enabled": "false"
       }
     }
   ]
   ```

1. Escriba el comando siguiente y sustituya *myKey* por el nombre del par de claves de EC2.
**nota**  
Se incluyen caracteres de continuación de línea de Linux (\$1) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

   ```
   1. aws emr create-cluster --name "Test cluster" \
   2. --release-label emr-7.12.0 --applications Name=Hive Name=Pig \
   3. --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \
   4. --instance-count 3 --configurations file://myConfig.json
   ```

------
#### [ API ]

**Para desactivar la carga multiparte mediante la API**
+ Para obtener información sobre cómo utilizar las cargas multiparte de Amazon S3 mediante programación, consulte [Uso del SDK de AWS para Java para cargas multiparte](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMPDotJavaAPI.html) en la *Guía del usuario de Amazon Simple Storage Service*.

  Para obtener más información sobre el AWS SDK para Java, consulte [AWS SDK for Java](https://aws.amazon.com/sdkforjava/).

------

## Prácticas recomendadas
<a name="emr-bucket-bestpractices"></a>

A continuación se indican las recomendaciones para utilizar buckets de Amazon S3 con clústeres de EMR.

### Habilitación del control de versiones
<a name="emr-enable-versioning"></a>

El control de versiones es una configuración recomendada para su bucket de Amazon S3. Al habilitar el control de versiones, se asegura de que incluso si se eliminan o se sobrescriben involuntariamente los datos, se puedan recuperar. Para más información, consulte [Uso del control de versiones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) en la Guía del usuario de Amazon Simple Storage Service.

### Limpiar las cargas multiparte con errores
<a name="emr-multipart-cleanup"></a>

Los componentes del clúster EMR utilizan cargas multiparte a través del AWS SDK para Java con Amazon S3 para escribir archivos de registro y enviar datos APIs a Amazon S3 de forma predeterminada. Para más información sobre cómo utilizar Amazon EMR para cambiar las propiedades relacionadas con esta configuración, consulte [Configurar cargas multiparte para Amazon S3](#Config_Multipart). En ocasiones, la carga de un archivo de gran tamaño puede dar lugar a una carga multiparte de Amazon S3 incompleta. Cuando una carga multiparte no se puede completar de forma satisfactoria, la carga multiparte en curso sigue ocupando su bucket e incurre en costos de almacenamiento. Le recomendamos las siguientes opciones para evitar un almacenamiento de archivos excesivo:
+ En el caso de los buckets que utilice con Amazon EMR, utilice una regla de configuración del ciclo de vida en Amazon S3 que elimine las cargas multiparte incompletas tres días después de la fecha de inicio de la carga. Las reglas de configuración del ciclo de vida le permiten controlar la clase de almacenamiento y el ciclo de vida de los objetos. Para más información, consulte [Administración del ciclo de vida de los objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) y [Anulación de cargas multiparte incompletas con la política de ciclo de vida de buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
+ Habilite la característica de limpieza de cargas multiparte de Amazon EMR estableciendo `fs.s3.multipart.clean.enabled` en `true` y ajustando otros parámetros de limpieza. Esta característica es útil con volúmenes altos y a gran escala, así como con clústeres que tienen un tiempo de actividad limitado. En este caso, el parámetro `DaysAfterIntitiation` de una regla de configuración de ciclo de vida puede ser demasiado largo, incluso si se establece en su valor mínimo, provocando picos en el almacenamiento de Amazon S3. La limpieza multiparte de Amazon EMR permite un control más preciso. Para obtener más información, consulte [Configurar cargas multiparte para Amazon S3](#Config_Multipart). 

### Administrar los marcadores de versiones
<a name="w2aac28c11c17c11b7c11b9"></a>

Se recomienda habilitar una regla de configuración de ciclo de vida en Amazon S3 para eliminar los marcadores de eliminación de objetos vencidos de los buckets con control de versiones que utilice con Amazon EMR. Al eliminar un objeto de un bucket con control de versiones, se crea un marcador de eliminación. Si todas las versiones anteriores del objeto caducan posteriormente, queda un marcador de eliminación de objeto caducado en el bucket. Aunque no se aplican cargos por los marcadores de eliminación, si borra los marcadores caducados puede mejorar el rendimiento de las solicitudes de LIST. Para más información, consulte [Configuración del ciclo de vida de un bucket con el control de versiones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html) en la Guía del usuario de Amazon Simple Storage Service.

### Prácticas recomendadas de rendimiento
<a name="w2aac28c11c17c11b7c11c11"></a>

En función de las cargas de trabajo, los tipos específicos de uso de clústeres de EMR y las aplicaciones en dichos clústeres pueden dar lugar a un número elevado de solicitudes en su bucket. Para más información, consulte [Consideraciones sobre la tasa de solicitudes y el rendimiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/request-rate-perf-considerations.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

# Carga de datos en Amazon S3 Express One Zone
<a name="emr-express-one-zone"></a>

## Descripción general de
<a name="emr-express-one-zone-overview"></a>

A partir de la versión 6.15.0 de Amazon EMR, puede utilizar Amazon EMR con Apache Spark junto con la clase de almacenamiento [Amazon S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html) para mejorar el rendimiento de sus trabajos de Spark. Las versiones 7.2.0 y posteriores de Amazon EMR también son compatibles con HBase Flink y Hive, por lo que también puede beneficiarse de S3 Express One Zone si utiliza estas aplicaciones. *S3 Express One Zone* es una clase de almacenamiento de S3 para aplicaciones que acceden con frecuencia a los datos con cientos de miles de solicitudes por segundo. En el momento de su lanzamiento, S3 Express One Zone ofrece el almacenamiento de objetos en la nube con la latencia más baja y el rendimiento más alto de Amazon S3. 

## Requisitos previos
<a name="emr-express-one-zone-prereqs"></a>
+ **Permisos de S3 Express One Zone**: cuando S3 Express One Zone realiza a una acción como `GET`, `LIST` o `PUT` en un objeto de S3, la clase de almacenamiento llama a `CreateSession` en su nombre. Su política de IAM debe permitir el permiso `s3express:CreateSession` para que el conector S3A pueda invocar la API `CreateSession`. Para ver un ejemplo de política con ese permiso, consulte [Introducción a Amazon S3 Express One Zone](#emr-express-one-zone-start).
+ **Conector S3A**: para configurar el clúster de Spark de modo que pueda acceder a los datos de un bucket de Amazon S3 que utilice la clase de almacenamiento S3 Express One Zone, debe utilizar el conector de Apache Hadoop S3A. Para usar el conector, asegúrese de que todos los S3 URIs utilicen el esquema. `s3a` Si no es así, puede cambiar la implementación del sistema de archivos que utiliza para los esquemas `s3` y `s3n`.

Para cambiar el esquema `s3`, especifique las siguientes configuraciones de clúster: 

```
[
  {
    "Classification": "core-site",
    "Properties": {
      "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
      "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A"
    }
  }
]
```

Para cambiar el esquema `s3n`, especifique las siguientes configuraciones de clúster: 

```
[
  {
    "Classification": "core-site",
    "Properties": {
      "fs.s3n.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
      "fs.AbstractFileSystem.s3n.impl": "org.apache.hadoop.fs.s3a.S3A"
    }
  }
]
```

## Introducción a Amazon S3 Express One Zone
<a name="emr-express-one-zone-start"></a>

**Topics**
+ [Creación de una política de permisos](#emr-express-one-zone-permissions)
+ [Creación y configuración de un clúster](#emr-express-one-zone-create)
+ [Información general sobre las configuraciones](#emr-express-one-zone-configs)

### Creación de una política de permisos
<a name="emr-express-one-zone-permissions"></a>

Antes de poder crear un clúster que utilice Amazon S3 Express One Zone, debe crear una política de IAM para adjuntarla al perfil de instancia de Amazon EC2 del clúster. La política debe tener permisos para acceder a la clase de almacenamiento S3 Express One Zone. En la siguiente política de ejemplo, se muestra cómo conceder los permisos necesarios. Después de crear la política, adjúntela al rol de perfil de instancia que utilice para crear su clúster de EMR, tal y como se describe en la sección [Creación y configuración de un clúster](#emr-express-one-zone-create).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3express:*:123456789012:bucket/example-s3-bucket"
      ],
      "Action": [
        "s3express:CreateSession"
      ],
      "Sid": "AllowS3EXPRESSCreatesession"
    }
  ]
}
```

------

### Creación y configuración de un clúster
<a name="emr-express-one-zone-create"></a>

A continuación, cree un clúster que ejecute Spark HBase, Flink o Hive con S3 Express One Zone. En los siguientes pasos, se ofrece información general de alto nivel para crear un clúster en la Consola de administración de AWS:

1. Navegue hasta la consola de Amazon EMR y seleccione **Clústeres** en la barra lateral. A continuación, elija **Crear clúster**.

1. Si utiliza Spark, seleccione la versión `emr-6.15.0` o posterior de Amazon EMR. Si usas HBase Flink o Hive, selecciona o una opción superior. `emr-7.2.0`

1. Seleccione las aplicaciones que desee incluir en el clúster, como Spark o HBase Flink.

1. Para habilitar Amazon S3 Express One Zone, introduzca una configuración similar a la del siguiente ejemplo en la sección **Configuración de software**. Las configuraciones y los valores recomendados se describen en la sección [Información general sobre las configuraciones](#emr-express-one-zone-configs) que sigue a este procedimiento.

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider",
         "fs.s3a.change.detection.mode": "none",
         "fs.s3a.endpoint.region": "aa-example-1",
         "fs.s3a.select.enabled": "false"
       }
     },
     {
       "Classification": "spark-defaults",
       "Properties": {
         "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false"
       }
     }
   ]
   ```

1. En la sección **Perfil de instancia de EC2 para Amazon EMR**, elija usar un rol existente y use un rol con la política adjunta que creó en la sección anterior [Creación de una política de permisos](#emr-express-one-zone-permissions).

1. Configure el resto de los ajustes del clúster según corresponda para su aplicación y, a continuación, seleccione **Crear clúster**.

### Información general sobre las configuraciones
<a name="emr-express-one-zone-configs"></a>

En las siguientes tablas, se describen las configuraciones y los valores sugeridos que debe especificar al configurar un clúster que utiliza S3 Express One Zone con Amazon EMR, tal y como se describe en la sección [Creación y configuración de un clúster](#emr-express-one-zone-create).

**Configuraciones de S3A**


| Parámetro | Predeterminado | Valor sugerido | Explicación | 
| --- | --- | --- | --- | 
|  `fs.s3a.aws.credentials.provider`  |  Si no se especifica, se utiliza `AWSCredentialProviderList` en el siguiente orden: `TemporaryAWSCredentialsProvider`, `SimpleAWSCredentialsProvider`, `EnvironmentVariableCredentialsProvider`, `IAMInstanceCredentialsProvider`.  |  <pre>software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider</pre>  |  El rol del perfil de instancia de Amazon EMR debe tener la política que permita al sistema de archivos S3A llamar a `s3express:CreateSession`. Otros proveedores de credenciales también funcionan si tienen los permisos de S3 Express One Zone.  | 
|  `fs.s3a.endpoint.region`  |  null  |  El Región de AWS lugar donde creaste el depósito.  |  La lógica de resolución regional no funciona con la clase de almacenamiento S3 Express One Zone.  | 
|  `fs.s3a.select.enabled`  |  `true`  |  `false`  |  `select` de Amazon S3 no es compatible con la clase de almacenamiento S3 Express One Zone.  | 
|  `fs.s3a.change.detection.mode`  |  `server`  |  none  |  La detección de cambios de S3A se realiza al comprobar las `etags` basadas en MD5. La clase de almacenamiento S3 Express One Zone no es compatible con `checksums` de MD5.  | 

**Configuraciones de Spark**


| Parámetro | Predeterminado | Valor sugerido | Explicación | 
| --- | --- | --- | --- | 
|  `spark.sql.sources.fastS3PartitionDiscovery.enabled`  |  `true`  |  false  |  La optimización interna utiliza un parámetro de API de S3 que la clase de almacenamiento S3 Express One Zone no admite.  | 

**Configuraciones de Hive**


| Parámetro | Predeterminado | Valor sugerido | Explicación | 
| --- | --- | --- | --- | 
|  `hive.exec.fast.s3.partition.discovery.enabled`  |  `true`  |  false  |  La optimización interna utiliza un parámetro de API de S3 que la clase de almacenamiento S3 Express One Zone no admite.  | 

## Consideraciones
<a name="emr-express-one-zone-considerations"></a>

Tenga en cuenta lo siguiente al integrar Apache Spark en Amazon EMR con la clase de almacenamiento S3 Express One Zone:
+ Se requiere el conector S3A para utilizar S3 Express One Zone con Amazon EMR. Solo S3A tiene las características y las clases de almacenamiento necesarias para interactuar con S3 Express One Zone. Para ver los pasos para configurar el conector, consulte [Requisitos previos](#emr-express-one-zone-prereqs).
+ La clase de almacenamiento Amazon S3 Express One Zone admite el cifrado SSE-S3 y SSE-KMS. Para obtener más información, consulte [Cifrado del servidor con Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-data-protection.html#s3-express-ecnryption).
+ La clase de almacenamiento Amazon S3 Express One Zone no es compatible con la escritura con el `FileOutputCommitter` de S3A. Si se escribe con el `FileOutputCommitter` de S3A en los buckets de S3 Express One Zone, se produce un error: *InvalidStorageClass: The storage class you specified is not valid*.
+ Amazon S3 Express One Zone es compatible con las versiones 6.15.0 y posteriores de Amazon EMR en el EMR de EC2. Además, es compatible con las versiones 7.2.0 y posteriores de Amazon EMR en Amazon EMR con EKS y en Amazon EMR sin servidor.

# Sube los datos con AWS DataSync
<a name="emr-plan-upload-datasync"></a>

AWS DataSync es un servicio de transferencia de datos en línea que simplifica, automatiza y acelera el proceso de transferencia de datos entre el almacenamiento local y los servicios de almacenamiento o entre los servicios de AWS almacenamiento. AWS DataSync admite diversos sistemas de almacenamiento local, como el sistema de archivos distribuido Hadoop (HDFS), los servidores de archivos NAS y el almacenamiento de objetos autogestionado.

La forma más común de tener datos en un clúster es mediante la carga de datos en Amazon S3 y el uso de características integradas de Amazon EMR para cargar los datos en el clúster.

DataSync puede ayudarle a realizar las siguientes tareas:
+ Replicar el HDFS de su clúster de Hadoop en Amazon S3 para garantizar la continuidad empresarial
+ Copiar el HDFS a Amazon S3 para rellenar sus lagos de datos
+ Transferir datos entre el HDFS de su clúster de Hadoop y Amazon S3 para su análisis y procesamiento

Para cargar datos a su depósito de S3, primero debe implementar uno o más DataSync agentes en la misma red que su almacenamiento local. Un *agente* es una máquina virtual (VM) que se utiliza para leer o escribir datos en una ubicación autoadministrada. A continuación, activa los agentes en el depósito de S3 Cuenta de AWS y en el Región de AWS lugar en el que se encuentra.

Una vez activado el agente, debe crear una ubicación de origen para el almacenamiento en las instalaciones, una ubicación de destino para el bucket de S3 y una tarea. Una *tarea* es un conjunto de dos ubicaciones (origen y destino) y un conjunto de opciones predeterminadas que se utilizan para controlar el comportamiento de la tarea.

Por último, ejecuta la DataSync tarea de transferir los datos del origen al destino. 

Para obtener más información, consulta [Introducción a AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/getting-started.html).

# Importación de archivos con caché distribuida con Amazon EMR
<a name="emr-plan-input-distributed-cache"></a>

DistributedCache es una característica de Hadoop que puede aumentar la eficacia cuando una tarea de asignación o de reducción necesita acceder a datos comunes. Si el clúster depende de aplicaciones existentes o binarias que no se instalaron al crear el clúster, puede utilizar DistributedCache para importar estos archivos. Esta característica permite a un nodo de clúster leer los archivos importados desde su sistema de archivos local, en lugar de recuperar los archivos desde otros nodos del clúster. 

Para obtener más información, vaya a [http://hadoop.apache. org/docs/stable/api/org/apache/hadoop/filecache/DistributedCache.html](http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/filecache/DistributedCache.html).

Invoca DistributedCache al crear el clúster. Los archivos se almacenan en caché justo antes de empezar el trabajo de Hadoop y los archivos permanecen almacenados en la memoria caché durante el tiempo que dura el trabajo. Puede almacenar en caché los archivos almacenados en cualquier sistema de archivos compatible con Hadoop, por ejemplo, HDFS o Amazon S3. El tamaño predeterminado de la caché de archivos es de 10 GB. Para cambiar el tamaño de la caché, vuelva a configurar el parámetro de Hadoop, `local.cache.size` a través de la acción de arranque. Para obtener más información, consulte [Creación de acciones de arranque para instalar software adicional con un clúster de Amazon EMR](emr-plan-bootstrap.md).

**Topics**
+ [Tipos de archivo admitidos](#emr-dev-supported-file-types)
+ [Ubicación de los archivos en caché](#locationofcache)
+ [Acceso a archivos almacenados en caché desde aplicaciones de streaming](#cachemapper)
+ [Acceso a archivos almacenados en caché desde aplicaciones de streaming](#cacheinconsole)

## Tipos de archivo admitidos
<a name="emr-dev-supported-file-types"></a>

DistributedCache permite importar tanto archivos individuales como conjuntos de archivos. Los archivos individuales se almacenan en caché como de solo lectura. Los archivos ejecutables y binarios tienen establecidos permisos de ejecución.

Los conjuntos de archivos son uno o más archivos empaquetados mediante una utilidad, como `gzip`. DistributedCache transfiere los archivos comprimidos a cada nodo central y descomprime el conjunto de archivos como parte del proceso de almacenamiento en caché. DistributedCache es compatible con los siguientes formatos de compresión:
+ zip
+ tgz
+ tar.gz
+ tar
+ jar

## Ubicación de los archivos en caché
<a name="locationofcache"></a>

DistributedCache solo copia los archivos en los nodos centrales. Si no hay nodos centrales en el clúster, DistributedCache copia los archivos en el nodo principal.

DistributedCache asocia los archivos en caché al directorio de trabajo actual del asignador y reductor mediante enlaces simbólicos. Un symlink es un alias a una ubicación de archivo, no la ubicación de archivo real. El valor del parámetro, `yarn.nodemanager.local-dirs` en `yarn-site.xml`, especifica la ubicación de los archivos temporales. Amazon EMR establece este parámetro en `/mnt/mapred` o alguna variación basada en el tipo de instancia y la versión de EMR. Por ejemplo, una configuración podría tener `/mnt/mapred` y `/mnt1/mapred` dado que el tipo de instancia tiene dos volúmenes efímeros. Los archivos de caché se encuentran en un subdirectorio de la ubicación de archivos temporales en `/mnt/mapred/taskTracker/archive`. 

Si almacena un solo archivo en caché, DistributedCache colocará el archivo en el directorio `archive`. Si almacena un conjunto de archivos en caché, DistributedCache lo descomprime y crea un subdirectorio en `/archive` con el mismo nombre que el del conjunto de archivos. Los archivos individuales se encuentran en el nuevo subdirectorio.

Puede utilizar DistributedCache solo cuando se utilice una transmisión.

## Acceso a archivos almacenados en caché desde aplicaciones de streaming
<a name="cachemapper"></a>

Para acceder a los archivos almacenados en la memoria caché de sus aplicaciones de mapeador o reductor, asegúrese de añadir el directorio de trabajo actual (./) en la ruta de la aplicación y hacer referencia a los archivos en caché aunque estén presentes en el directorio de trabajo actual.

## Acceso a archivos almacenados en caché desde aplicaciones de streaming
<a name="cacheinconsole"></a>

Puede usar el Consola de administración de AWS y el AWS CLI para crear clústeres que usen caché distribuida. 

------
#### [ Console ]

**Para especificar los archivos de caché distribuida utilizando la nueva consola**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. En **EMR en EC2** situado en el panel de navegación izquierdo, elija **Clústeres** y, a continuación, elija **Crear clúster**.

1. En **Pasos**, seleccione **Agregar paso**. Se abrirá el cuadro de diálogo **Agregar paso**. En el campo **Argumentos**, incluya los archivos y conjuntos de archivos que desea guardar en la memoria caché. El tamaño del archivo (o tamaño total de los archivos en un archivo de almacenamiento) debe ser menor que el tamaño de la memoria caché asignado.

   Si desea agregar un archivo individual en la caché distribuida, especifique `-cacheFile` seguido del nombre y ubicación del archivo, el símbolo numeral (\$1) y el nombre que desee asignarle al archivo cuando se coloque en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo individual a la caché distribuida.

   ```
   -cacheFile \
   s3://amzn-s3-demo-bucket/file-name#cache-file-name
   ```

   Si desea agregar un conjunto de archivos en la caché distribuida, introduzca `-cacheArchive` seguido de la ubicación de los archivos en Amazon S3, el símbolo numeral (\$1) y a continuación el nombre que desee asignarle a la colección de archivos en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo de almacenamiento a la caché distribuida.

   ```
   -cacheArchive \
   s3://amzn-s3-demo-bucket/archive-name#cache-archive-name
   ```

   Ingrese los valores adecuados en el resto de los campos del cuadro de diálogo. Las opciones varían según el tipo de paso. Para agregar el paso y salir del cuadro de diálogo, elija **Agregar paso**.

1. Elija cualquier otra opción que se aplique a su clúster. 

1. Para lanzar el clúster, elija **Crear clúster**.

------
#### [ CLI ]

**Para especificar los archivos de caché distribuidos con el AWS CLI**
+ Para enviar un paso de streaming cuando se crea un clúster, escriba el comando `create-cluster` con el parámetro `--steps`. Para especificar los archivos de caché distribuidos mediante el AWS CLI, especifique los argumentos adecuados al enviar un paso de transmisión. 

  Si desea agregar un archivo individual en la caché distribuida, especifique `-cacheFile` seguido del nombre y ubicación del archivo, el símbolo numeral (\$1) y el nombre que desee asignarle al archivo cuando se coloque en la caché local. 

  Si desea agregar un conjunto de archivos en la caché distribuida, introduzca `-cacheArchive` seguido de la ubicación de los archivos en Amazon S3, el símbolo numeral (\$1) y a continuación el nombre que desee asignarle a la colección de archivos en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo de almacenamiento a la caché distribuida.

  Para obtener más información sobre el uso de los comandos de Amazon EMR en AWS CLI, consulte. [https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)

**Example 1**  
Escriba el siguiente comando para lanzar un clúster y enviar un paso de streaming que utiliza `-cacheFile` para añadir un archivo `sample_dataset_cached.dat`, a la caché.   

```
aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheFile","s3://my_bucket/sample_dataset.dat#sample_dataset_cached.dat"]
```
Cuando especifica el recuento de instancias sin utilizar el parámetro `--instance-groups`, se lanza un nodo principal único y el resto de las instancias se lanzan como nodos básicos. Todos los nodos utilizarán el tipo de instancia especificado en el comando.  
Si no ha creado con anterioridad el rol de servicio de EMR predeterminado y el perfil de instancia de EC2, escriba `aws emr create-default-roles` para crearlos antes de escribir el subcomando `create-cluster`.

**Example 2**  
El siguiente comando muestra la creación de un clúster de streaming y utiliza `-cacheArchive` para añadir un archivo de almacenamiento de archivos a la caché.   

```
aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheArchive","s3://my_bucket/sample_dataset.tgz#sample_dataset_cached"]
```
Cuando especifica el recuento de instancias sin utilizar el parámetro `--instance-groups`, se lanza un nodo principal único y el resto de las instancias se lanzan como nodos básicos. Todos los nodos utilizarán el tipo de instancia especificado en el comando.  
Si no ha creado con anterioridad el rol de servicio de EMR predeterminado y el perfil de instancia de EC2, escriba `aws emr create-default-roles` para crearlos antes de escribir el subcomando `create-cluster`.

------

# Detección y procesamiento de archivos comprimidos con Amazon EMR
<a name="HowtoProcessGzippedFiles"></a>

Hadoop comprueba la extensión de archivo para detectar archivos comprimidos. Los tipos de compresión compatibles con Hadoop son: gzip, bzip2 y LZO. No tiene que tomar ninguna medida adicional para extraer archivos utilizando estos tipos de compresión; Hadoop se encarga por usted.

[Para indexar los archivos LZO, puede utilizar la biblioteca hadoop-lzo, que se puede descargar de hadoop-lzo. https://github.com/kevinweil/](https://github.com/kevinweil/hadoop-lzo) Tenga en cuenta que, dado que se trata de una biblioteca de terceros, Amazon EMR no ofrece soporte al desarrollador sobre cómo utilizar esta herramienta. Para obtener información sobre su uso, consulte [el archivo readme de hadoop-lzo.](https://github.com/kevinweil/hadoop-lzo/blob/master/README.md) 

# Importación de datos de DynamoDB a Hive con Amazon EMR
<a name="emr-plan-input-dynamodb"></a>

La implementación de Hive proporcionada por Amazon EMR incluye funcionalidad que puede utilizar para importar y exportar datos entre DynamoDB y un clúster de Amazon EMR. Esto resulta útil si los datos de entrada se almacenan en DynamoDB. Para más información, consulte [Exportación, importación, consulta y unión de tablas en DynamoDB mediante Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/EMRforDynamoDB.html). 

# Conéctese a los datos AWS Direct Connect desde Amazon EMR
<a name="emr-plan-input-directconnect"></a>

Direct Connect es un servicio que puede utilizar para establecer una conexión de red privada dedicada a Amazon Web Services desde su centro de datos, oficina o entorno de colocación. Si tiene grandes cantidades de datos de entrada, su uso Direct Connect puede reducir los costos de la red, aumentar el rendimiento del ancho de banda y proporcionar una experiencia de red más uniforme que las conexiones basadas en Internet. Para obtener más información, consulte la [Guía del usuario de Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/). 

# Cargue grandes cantidades de datos para Amazon EMR con AWS Snowball Edge
<a name="emr-plan-input-snowball"></a>

AWS Snowball Edge es un servicio que puede utilizar para transferir grandes cantidades de datos entre Amazon Simple Storage Service (Amazon S3) y su ubicación faster-than-internet de almacenamiento de datos in situ a gran velocidad. Snowball Edge admite dos tipos de trabajos: de importación y de exportación. Los trabajos de importación implican una transferencia de datos desde un origen en las instalaciones a un bucket de Amazon S3. Los trabajos de exportación implican una transferencia de datos de un bucket de Amazon S3 a un origen en las instalaciones. Para ambos tipos de trabajos, los dispositivos Snowball Edge protegen y aseguran sus datos, mientras que los transportadores regionales los trasladan entre Amazon S3 y su ubicación de almacenamiento de datos local. Los dispositivos Snowball Edge son físicamente robustos y están protegidos por el AWS Key Management Service ()AWS KMS. Para más información, consulte [Guía para desarrolladores de AWS Snowball Edge Edge](https://docs.aws.amazon.com/snowball/latest/developer-guide/).