

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.

# Versiones 2.x y 3.x de la AMI de Amazon EMR
<a name="emr-release-3x"></a>

**nota**  
AWS está actualizando la configuración de TLS para todos los puntos finales de la AWS API a una versión mínima de TLS 1.2. Las versiones 3.10 y anteriores de Amazon EMR solo admiten conexiones TLS 1.0/1.1. Después del 4 de diciembre de 2023, no podrá crear clústeres con Amazon EMR 3.10 y versiones anteriores.  
Si utiliza Amazon EMR 3.10 o una versión anterior, se recomienda que pruebe y migre inmediatamente sus cargas de trabajo a la versión más reciente de Amazon EMR. Para más información, consulte el [Blog seguridad de AWS](https://aws.amazon.com/blogs//security/tls-1-2-required-for-aws-endpoints/).

Las versiones 2.x y 3.x de Amazon EMR, denominadas *versiones de la AMI*, están disponibles para las soluciones preexistentes que las necesitan por motivos de compatibilidad. No es recomendable que cree nuevos clústeres o nuevas soluciones con estas versiones. Carecen de las características de las versiones más recientes e incluyen paquetes de aplicaciones obsoletos.

Se recomienda que cree las soluciones con la versión de lanzamiento de Amazon EMR más reciente.

El ámbito de las diferencias entre las versiones de las series 2.x y 3.x y las versiones recientes de Amazon EMR es importante. Estas diferencias abarcan desde cómo crear y configurar un clúster a los puertos y la estructura de directorios de aplicaciones en el clúster.

En esta sección se intentan explicar las diferencias más importantes de Amazon EMR, así como las diferencias de configuración y administración de aplicaciones específicas. No se trata de una lista completa. Si crea y utiliza clústeres de las series 2.x o 3.x, puede encontrar diferencias no descritas en esta sección.

**Topics**
+ [Creación de un clúster con versiones anteriores de la AMI de Amazon EMR](emr-3x-create.md)
+ [Instalación de aplicaciones con versiones anteriores de la AMI de Amazon EMR](emr-3x-install-apps.md)
+ [Personalización de la configuración de clústeres y aplicaciones con versiones anteriores de la AMI de Amazon EMR](emr-3x-customizeappconfig.md)
+ [Detalles específicos de las aplicaciones de Hive para versiones anteriores de la AMI de Amazon EMR](emr-3x-hive.md)
+ [HBase especificaciones de la aplicación para versiones de AMI anteriores de Amazon EMR](emr-3x-hbase.md)
+ [Detalles específicos de las aplicaciones de Pig para versiones anteriores de la AMI de Amazon EMR](emr-3x-pig.md)
+ [Detalles específicos de las aplicaciones Spark con versiones anteriores de AMI de Amazon EMR](emr-3x-spark.md)
+ [Diferencias de la DistCp utilidad S3 con las versiones AMI anteriores de Amazon EMR](emr-3x-s3distcp.md)

# Creación de un clúster con versiones anteriores de la AMI de Amazon EMR
<a name="emr-3x-create"></a>

Las versiones de lanzamiento 2.x y 3.x de Amazon EMR reciben el nombre de versiones de la AMI. Con la versión 4.0.0 y posteriores de Amazon EMR, a las versiones se les referencia por versión de lanzamiento, mediante una etiqueta de versión como `emr-5.11.0`. Este cambio se hace más evidente cuando se crea un clúster mediante o mediante programación. AWS CLI 

Cuando utilice la AWS CLI para crear un clúster mediante una versión de lanzamiento de AMI, utilice la `--ami-version` opción, por ejemplo,`--ami-version 3.11.0`. Muchas opciones, características y aplicaciones introducidas en la versión 4.0.0 y posteriores de Amazon EMR no están disponibles cuando se especifica una `--ami-version`. Para obtener más información, consulte [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html) en la *Referencia de comandos de la AWS CLI *. 

El siguiente AWS CLI comando de ejemplo lanza un clúster mediante una versión de AMI.

**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 (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.11.0 \
--applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-groups InstanceGroupType=MASTER,InstanceCount=1,\
InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=2,\
InstanceType=m3.xlarge --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,\
Name="Configuring infinite JVM reuse",Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"]
```

Cuando se crea un clúster mediante programación, todas las versiones de Amazon EMR utilizan la acción `RunJobFlowRequest` de la API de EMR. El siguiente código Java de ejemplo crea un clúster con la versión de AMI 3.11.0.

```
RunJobFlowRequest request = new RunJobFlowRequest()
			.withName("AmiVersion Cluster")
			.withAmiVersion("3.11.0")
			.withInstances(new JobFlowInstancesConfig()
				.withEc2KeyName("myKeyPair")
				.withInstanceCount(1)
				.withKeepJobFlowAliveWhenNoSteps(true)
				.withMasterInstanceType("m3.xlarge")
				.withSlaveInstanceType("m3.xlarge");
```

La siguiente llamada `RunJobFlowRequest` utiliza una etiqueta de lanzamiento en su lugar:

```
RunJobFlowRequest request = new RunJobFlowRequest()
			.withName("ReleaseLabel Cluster")
			.withReleaseLabel("emr-7.12.0")
			.withInstances(new JobFlowInstancesConfig()
				.withEc2KeyName("myKeyPair")
				.withInstanceCount(1)
				.withKeepJobFlowAliveWhenNoSteps(true)
				.withMasterInstanceType("m3.xlarge")
				.withSlaveInstanceType("m3.xlarge");
```

## Configuración del tamaño del clúster
<a name="emr-3x-cluster-size"></a>

Cuando se ejecuta el clúster, Hadoop determina el número de tareas de mapeador y reductor necesarias para procesar los datos. Los clústeres más grandes deben tener más tareas para un mejor uso de recursos y un tiempo de procesamiento más corto. Normalmente, un clúster de EMR sigue teniendo el mismo tamaño durante todo el clúster; define el número de tareas al crear el clúster. Al cambiar el tamaño de un clúster en ejecución, puede variar el procesamiento durante la ejecución del clúster. Por lo tanto, en lugar de utilizar un número de tareas fijo, puede variar el número de tareas durante la vida útil del clúster. Existen dos opciones de configuración para ayudar a definir el número ideal de tareas:
+ `mapred.map.tasksperslot`
+ `mapred.reduce.tasksperslot`

Puede establecer ambas opciones en el archivo `mapred-conf.xml`. Al enviar un trabajo al clúster, el cliente del trabajo comprueba el número total actual de ranuras de Map y Reduce disponibles en todo el clúster. El cliente de trabajo, a continuación, utiliza las siguientes ecuaciones para definir el número de tareas: 
+ `mapred.map.tasks` =` mapred.map.tasksperslot` \$1 ranuras de Map en el clúster
+ `mapred.reduce.tasks` = `mapred.reduce.tasksperslot` \$1 ranuras de Reduce en el clúster

El cliente de trabajo solo lee el parámetro `tasksperslot` si el número de tareas no está configurado. Puede cambiar el número de tareas en cualquier momento, ya sea para todos los clústeres a través de una acción de arranque o individualmente por trabajo añadiendo un paso para cambiar la configuración. 

Amazon EMR resiste los errores de los nodos de tarea y continúa la ejecución del clúster incluso si un nodo de tarea deja de estar disponible. Amazon EMR aprovisiona automáticamente nodos de tareas adicionales para sustituir los que no funcionen. 

Puede tener un número diferente de nodos de tareas para cada paso del clúster. También puede añadir un paso a un clúster en ejecución para modificar el número de nodos de tareas. Dado que existe la garantía de que todos los pasos se ejecutarán en secuencia de forma predeterminada, puede especificar el número de nodos de tareas en ejecución para cualquier paso. 

# Instalación de aplicaciones con versiones anteriores de la AMI de Amazon EMR
<a name="emr-3x-install-apps"></a>

Cuando se usa una versión de AMI, las aplicaciones se instalan de varias maneras, incluyendo el `NewSupportedProducts` parámetro de la [RunJobFlow](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_RunJobFlow.html)acción, las acciones de arranque y la acción [Step](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_Step.html).

# Personalización de la configuración de clústeres y aplicaciones con versiones anteriores de la AMI de Amazon EMR
<a name="emr-3x-customizeappconfig"></a>

En la versión 4.0.0 de Amazon EMR se introdujo un método simplificado de configurar aplicaciones mediante clasificaciones de configuración. Para obtener más información, consulte [Configuración de aplicaciones](emr-configure-apps.md). Cuando se utiliza una versión de AMI, las aplicaciones se configuran mediante acciones de arranque y pasando argumentos. Por ejemplo, las acciones de arranque `configure-hadoop` y `configure-daemons` configuran propiedades del entorno específicas de Hadoop y YARN como `--namenode-heap-size`. En versiones más recientes, estas se configuran con las clasificaciones de configuración `hadoop-env` y `yarn-env`. Para ver las acciones de arranque que realizan configuraciones comunes, consulte el [emr-bootstrap-actions repositorio en Github](https://github.com/awslabs/emr-bootstrap-actions).

En las siguientes tablas, se asignan acciones de arranque a clasificaciones de configuración de las versiones de Amazon EMR más recientes.


**Hadoop**  

| Nombre de archivo de aplicación afectado | Acción de arranque de versión de la AMI | Clasificación de configuración | 
| --- | --- | --- | 
| core-site.xml  | configure-hadoop -c  | core-site | 
| log4j.properties  | configure-hadoop -l  | hadoop-log4j | 
| hdfs-site.xml  | configure-hadoop -s  | hdfs-site  | 
| n/a | n/a | hdfs-encryption-zones | 
| mapred-site.xml  | configure-hadoop -m  | mapred-site | 
| yarn-site.xml  | configure-hadoop -y  | yarn-site | 
| httpfs-site.xml  | configure-hadoop -t  | httpfs-site | 
| capacity-scheduler.xml  | configure-hadoop -z  | capacity-scheduler | 
| yarn-env.sh  | configure-daemons --resourcemanager-opts | yarn-env | 


**Hive**  

| Nombre de archivo de aplicación afectado | Acción de arranque de versión de la AMI | Clasificación de configuración | 
| --- | --- | --- | 
| hive-env.sh | n/a | hive-env | 
| hive-site.xml | hive-script --install-hive-site \$1\$1MY\$1HIVE\$1SITE\$1FILE\$1 | hive-site | 
| hive-exec-log4j.properties | n/a | hive-exec-log4j | 
| hive-log4j.properties | n/a | hive-log4j | 


**EMRFS**  

| Nombre de archivo de aplicación afectado | Acción de arranque de versión de la AMI | Clasificación de configuración | 
| --- | --- | --- | 
| emrfs-site.xml | configure-hadoop -e | emrfs-site | 
| n/a | s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ | emrfs-site (con el nuevo valor fs.s3.cse.encryptionMaterialsProvider.uri) | 

Para ver una lista de todas las clasificaciones, consulte [Configuración de aplicaciones](emr-configure-apps.md).

## Variables de entorno de la aplicación
<a name="emr-3x-appenv"></a>

Cuando se utiliza una versión de AMI, se usa un script `hadoop-user-env.sh` junto con la acción de arranque `configure-daemons` para configurar el entorno de Hadoop. El script incluye las siguientes acciones:

```
#!/bin/bash 
export HADOOP_USER_CLASSPATH_FIRST=true; 
echo "HADOOP_CLASSPATH=/path/to/my.jar" >> /home/hadoop/conf/hadoop-user-env.sh
```

En la versión 4.x de Amazon EMR, se hace lo mismo con la clasificación de configuración `hadoop-env`, tal y como se muestra en el ejemplo siguiente:

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

         },
         "Configurations":[ 
            { 
               "Classification":"export",
               "Properties":{ 
                  "HADOOP_USER_CLASSPATH_FIRST":"true",
                  "HADOOP_CLASSPATH":"/path/to/my.jar"
               }
            }
         ]
      }
   ]
```

Otro ejemplo consiste en usar `configure-daemons` y pasar `--namenode-heap-size=2048` y `--namenode-opts=-XX:GCTimeRatio=19`, que es equivalente a las siguientes clasificaciones de configuración.

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

         },
         "Configurations":[ 
            { 
               "Classification":"export",
               "Properties":{ 
                  "HADOOP_DATANODE_HEAPSIZE":  "2048",
           	"HADOOP_NAMENODE_OPTS":  "-XX:GCTimeRatio=19"
               }
            }
         ]
      }
   ]
```

Otras variables de entorno de aplicaciones ya no están definidas en `/home/hadoop/.bashrc`. En su lugar, se definen principalmente en archivos `/etc/default` por componente o aplicación, como por ejemplo `/etc/default/hadoop`. Los scripts envoltorios `/usr/bin/` instalados por la aplicación también RPMs pueden establecer variables de entorno adicionales antes de incluir el script bin propiamente dicho.

## Puertos de servicio
<a name="emr-3x-serviceports"></a>

Cuando se utiliza una versión de AMI, algunos servicios utilizan puertos personalizados.


**Cambios en la configuración del puerto**  

| Opción | AMI versión 3.x | Opción predeterminada de código abierto | 
| --- | --- | --- | 
| fs.default.name | hdfs://emrDeterminedIP:9000 | predeterminado (hdfs: //:8020) emrDeterminedIP  | 
| dfs.datanode.address | 0.0.0.0:9200 | valor predeterminado (0.0.0.0:50010)  | 
| dfs.datanode.http.address | 0.0.0.0:9102 | valor predeterminado (0.0.0.0:50075)  | 
| dfs.datanode.https.address | 0.0.0.0:9402 | valor predeterminado (0.0.0.0:50475) | 
| dfs.datanode.ipc.address | 0.0.0.0:9201 | valor predeterminado (0.0.0.0:50020) | 
| dfs.http.address | 0.0.0.0:9101 | valor predeterminado (0.0.0.0:50070)  | 
| dfs.https.address | 0.0.0.0:9202 | valor predeterminado (0.0.0.0:50470)  | 
| dfs.secondary.http.address | 0.0.0.0:9104 | valor predeterminado (0.0.0.0:50090) | 
| yarn.nodemanager.address | 0.0.0.0:9103 | valor predeterminado (\$1\$1yarn.nodemanager.hostname\$1:0)  | 
| yarn.nodemanager.localizer.address  | 0.0.0.0:9033 | valor predeterminado (\$1\$1yarn.nodemanager.hostname\$1:8040) | 
| yarn.nodemanager.webapp.address | 0.0.0.0:9035 | valor predeterminado (\$1\$1yarn.nodemanager.hostname\$1:8042) | 
| yarn.resourcemanager.address | emrDeterminedIPpredeterminado (hdfs: //:8020) ----sep----:9022 | valor predeterminado (\$1\$1yarn.resourcemanager.hostname\$1:8032) | 
| yarn.resourcemanager.admin.address | emrDeterminedIP:9022 ----Sept----:9025 | valor predeterminado (\$1\$1yarn.resourcemanager.hostname\$1:8033) | 
| yarn.resourcemanager.resource-tracker.address | emrDeterminedIP:9025 ----SEP----:9023 | valor predeterminado (\$1\$1yarn.resourcemanager.hostname\$1:8031) | 
| yarn.resourcemanager.scheduler.address | emrDeterminedIP:9023 ----Sept----:9024 | valor predeterminado (\$1\$1yarn.resourcemanager.hostname\$1:8030) | 
| yarn.resourcemanager.webapp.address | 0.0.0.0:9026  | valor predeterminado (\$1\$1yarn.resourcemanager.hostname\$1:8088) | 
| yarn.web-proxy.address | emrDeterminedIP:9024 ----Sept----:9046  | valor predeterminado (sin valor)  | 
| yarn.resourcemanager.hostname | 0.0.0.0 (valor predeterminado)  | emrDeterminedIP | 

**nota**  
*emrDeterminedIP*Es una dirección IP generada por Amazon EMR.

## Users
<a name="emr-3x-users"></a>

Cuando se utiliza una versión de AMI, el usuario `hadoop` ejecuta todos los procesos y es propietario de todos los archivos. En la versión 4.0.0 y posteriores de Amazon EMR, los usuarios existen en el nivel de aplicación y de componente.

## Secuencia de instalación, artefactos instalados y ubicaciones de archivos de registro
<a name="emr-3x-directories"></a>

Cuando se utiliza una versión de AMI, los artefactos de aplicación y sus directorios de configuración se instalan en el directorio `/home/hadoop/application`. Por ejemplo, si instaló Hive, el directorio sería `/home/hadoop/hive`. En la versión 4.0.0 y posteriores de Amazon EMR, los artefactos de la aplicación se instalan en el directorio `/usr/lib/application`. Cuando se utiliza una versión de AMI, los archivos log se encuentran en diversos lugares. En la tabla siguiente se indican las ubicaciones.


**Cambios en las ubicaciones de registro en Amazon S3**  

| Daemon o aplicación | Ubicación del directorio | 
| --- | --- | 
| instance-state | nodo/ /instance-state/ instance-id | 
| hadoop-hdfs-namenode | instance-iddaemons//.log hadoop-hadoop-namenode | 
| hadoop-hdfs-datanode | daemons/instance-id/hadoop-hadoop-datanode.log | 
| hadoop-yarn (ResourceManager) | demonios/instance-id/yarn-hadoop-resourcemanager | 
| hadoop-yarn (servidor proxy) | demonios//instance-idyarn-hadoop-proxyserver | 
| mapred-historyserver | demonios//instance-id | 
| httpfs | daemons/ /httpfs.log instance-id | 
| hive-server | nodo/ /hive-server/hive-server.log instance-id | 
| hive-metastore | nodo/ /apps/hive.log instance-id | 
| Hive CLI | nodo/ /apps/hive.log instance-id | 
| Registros de contenedor y de usuario de aplicaciones YARN | task-attempts/ | 
| Mahout | N/A | 
| Pig | N/A | 
| spark-historyserver | N/D | 
| archivos de historial de tareas mapreduce | jobs/ | 

## Command Runner
<a name="emr-differences-commandrunner"></a>

Cuando se utiliza una versión de AMI, muchos scripts o programas, como `/home/hadoop/contrib/streaming/hadoop-streaming.jar`, no se colocan en el entorno de ruta de inicio de sesión del shell, por lo que debe especificar la ruta completa cuando utilice un archivo jar como command-runner.jar o script-runner.jar para ejecutar los scripts. `command-runner.jar` está ubicado en la AMI y, por tanto, no hay necesidad de conocer un URI completo como ocurría con `script-runner.jar`. 

## Factor de replicación
<a name="emr-3x-replication"></a>

El factor de replicación le permite configurar cuándo iniciar una JVM de Hadoop. Puede iniciar una nueva JVM de Hadoop para cada tarea, lo que proporciona un mejor aislamiento de las tareas, o puede compartirlas JVMs entre tareas, lo que reduce la sobrecarga del marco. Si está procesando muchos archivos pequeños, es razonable reutilizar el JVM muchas veces para amortizar el costo de startup. Sin embargo, si cada tarea tarda mucho tiempo o procesa una gran cantidad de datos, es posible que desee no reutilizar la JVM para garantizar que se libere toda la memoria para las tareas siguientes. Cuando se utiliza una versión de AMI, puede personalizar el factor de replicación mediante la acción de arranque `configure-hadoop` para establecer la propiedad `mapred.job.reuse.jvm.num.tasks`. 

El siguiente ejemplo muestra cómo configurar el factor de reutilización de JVM para el uso infinito de la JVM.

**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 (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.11.0 \
--applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge \
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge \
--bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,\
Name="Configuring infinite JVM reuse",Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"]
```

# Detalles específicos de las aplicaciones de Hive para versiones anteriores de la AMI de Amazon EMR
<a name="emr-3x-hive"></a>

## Archivos de registro
<a name="emr-3x-hive-log-files"></a>

Cuando se utilizan las versiones 2.x y 3.x de la AMI de Amazon EMR, los registros de Hive se almacenan en `/mnt/var/log/apps/`. Para poder admitir las versiones simultáneas de Hive, la versión de Hive que ejecuta determina el nombre de archivo de registro, tal y como se muestra en la siguiente tabla. 


| Versión de Hive | Nombre de archivo de registro | 
| --- | --- | 
| 0.13.1 | hive.log  A partir de esta versión, Amazon EMR utiliza un nombre de archivo sin versión, `hive.log`. Las versiones secundarias comparten la misma ubicación de registro que la versión principal.   | 
| 0.11.0 | hive\$10110.log   Las versiones menores de Hive 0.11.0, tales como 0.11.0.1, comparten la misma ubicación de archivo de registro que Hive 0.11.0.   | 
| 0.8.1 | hive\$1081.log   Las versiones menores de Hive 0.8.1, tales como Hive 0.8.1.1, comparten la misma ubicación de archivo de registro que Hive 0.8.1.   | 
| 0.7.1 | hive\$107\$11.log   Las versiones menores de Hive 0.7.1, tales como Hive 0.7.1.3 y Hive 0.7.1.4, comparten la misma ubicación de archivo de registro que Hive 0.7.1.    | 
| 0.7 | hive\$107.log | 
| 0,5 | hive\$105.log | 
| 0.4 | hive.log | 

## Funcionalidad de entrada de división
<a name="emr-3x-hive-split-input"></a>

Para implementar la funcionalidad de entrada de división utilizando versiones de Hive anteriores a la 0.13.1 (versiones de la AMI de Amazon EMR anteriores a la 3.11.0), utilice lo siguiente:

```
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat;
hive> set mapred.min.split.size=100000000;
```

Esta funcionalidad se dejó de utilizar con Hive 0.13.1. Para obtener la misma funcionalidad de formato de entrada de división en la versión 3.11.0 de la AMI de Amazon EMR, utilice lo siguiente:

```
set hive.hadoop.supports.splittable.combineinputformat=true;
```

## Puertos de servicio de Thrift
<a name="emr-3x-hive-thrift-service"></a>

 Thrift es un marco de trabajo de RPC que define un formato de serialización binario compacto utilizado para conservar estructuras de datos para su análisis posterior. Normalmente, Hive configura el servidor para operar en los siguientes puertos. 


| Versión de Hive | Número de puerto | 
| --- | --- | 
| Hive 0.13.1 | 10000 | 
| Hive 0.11.0 | 10004 | 
| Hive 0.8.1 | 10003 | 
| Hive 0.7.1 | 10002 | 
| Hive 0.7 | 10001 | 
| Hive 0.5 | 10000 | 

 Para obtener más información sobre los servicios de thrift, consulte [http://wiki.apache.org/thrift/](http://wiki.apache.org/thrift/). 

## Uso de Hive para recuperar particiones
<a name="emr-3x-hive-recover-partition"></a>

Amazon EMR incluye una instrucción en el lenguaje de consultas de Hive que recupera las particiones de una tabla de los datos de tabla ubicados en Amazon S3. El ejemplo siguiente lo muestra. 

```
CREATE EXTERNAL TABLE (json string) raw_impression 
PARTITIONED BY (dt string) 
LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions';
ALTER TABLE logs RECOVER PARTITIONS;
```

Los datos y los directorios de la partición deben estar en la ubicación especificada en la definición de tabla y deben nombrarse de acuerdo con la convención de Hive: por ejemplo, `dt=2009-01-01`. 

**nota**  
Después de Hive 0.13.1 esta capacidad se admite de forma nativa `msck repair table` y, por tanto, no se admite `recover partitions`. [Para obtener más información, consulte https://cwiki.apache. org/confluence/display/Hive/LanguageManual\$1DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL).

## Pasar una variable de Hive a un script
<a name="emr-3x-hive-pass-variable"></a>

Para pasar una variable a un paso de Hive mediante el AWS CLI, escriba el siguiente comando, *myKey* sustitúyala por el nombre de su key pair de EC2 y *amzn-s3-demo-bucket* sustitúyala por el nombre de su bucket. En este ejemplo, `SAMPLE` es un valor de variable precedido por el modificador `-d`. Esta variable se define en el script de Hive como: `${SAMPLE}`.

**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 (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.9 \
--applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 \
--steps Type=Hive,Name="Hive Program",ActionOnFailure=CONTINUE,\
Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q,-d,\
INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/,\
-d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]
```

## Especificación de la ubicación de un metaalmacén externo
<a name="emr-3x-hive-external-metastore"></a>

El siguiente procedimiento muestra cómo omitir los valores de configuración predeterminados para la ubicación del metaalmacén de Hive e iniciar un clúster con la ubicación de metaalmacén reconfigurada.

**Para crear un metaalmacén situado fuera del clúster de EMR**

1. Cree una base de datos MySQL o Aurora mediante Amazon RDS.

   Para obtener información acerca de cómo crear una base de datos de Amazon RDS, consulte [Introducción a Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html).

1. **Modifique sus grupos de seguridad para permitir las conexiones JDBC entre su base de datos y el ElasticMapReduce grupo de seguridad -Master.**

   Para más información acerca de cómo modificar los grupos de seguridad para el acceso, consulte [Grupos de seguridad de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html) en la *Guía del usuario de Amazon RDS*.

1. Ajuste los valores de configuración de JDBC en `hive-site.xml`:

   1. Cree un archivo de configuración `hive-site.xml` que contenga lo siguiente:

      ```
      <configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mariadb://hostname:3306/hive?createDatabaseIfNotExist=true</value>
          <description>JDBC connect string for a JDBC metastore</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>hive</value>
          <description>Username to use against metastore database</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>password</value>
          <description>Password to use against metastore database</description>
        </property>
      </configuration>
      ```

      *hostname*es la dirección DNS de la instancia de Amazon RDS que ejecuta la base de datos. *username*y *password* son las credenciales de su base de datos. Para más información sobre la conexión a instancias de base de datos de MySQL y Aurora, consulte [Conexión a la instancia de base de datos que ejecuta el motor de base de datos de MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) y [Conexión a un clúster de base de datos de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connecting.html) en la *Guía del usuario de Amazon RDS*.

      Amazon EMR instala los controladores de JDBC. 
**nota**  
La propiedad value no debe contener espacios ni saltos de línea. Debe aparecer todo en una única línea.

   1. Guarde el archivo `hive-site.xml` en una ubicación de Amazon S3 como, por ejemplo, `s3://amzn-s3-demo-bucket/hive-site.xml`.

1. Cree un clúster especificando la ubicación en Amazon S3 del archivo `hive-site.xml` personalizado.

   El siguiente comando de ejemplo muestra un AWS CLI comando que hace esto.
**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 (^).

   ```
   aws emr create-cluster --name "Test cluster" --ami-version 3.10 \
   --applications Name=Hue Name=Hive Name=Pig \
   --use-default-roles --ec2-attributes KeyName=myKey \
   --instance-type m3.xlarge --instance-count 3 \
   --bootstrap-actions Name="Install Hive Site Configuration",\
   Path="s3://region.elasticmapreduce/libs/hive/hive-script",\
   Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\
   "--hive-site=s3://amzn-s3-demo-bucket/hive-site.xml","--hive-versions","latest"]
   ```

## Conectarse a Hive mediante JDBC
<a name="emr-3x-hive-jdbc"></a>

Para conectarse a Hive a través de JDBC es necesario que descargue el controlador JDBC e instale un cliente SQL. En el siguiente ejemplo, se muestra el uso de SQL Workbench/J para conectarse a Hive mediante JDBC.

**Para descargar controladores de JDBC**

1. Descargue y extraiga los controladores adecuados para las versiones de Hive a las que desea acceder. La versión de Hive difiere en función de la AMI que elija al crear un clúster de Amazon EMR.
   + [Controladores JDBC de Hive 0.13.1: JDBC\$11.0.4.1004.zip https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/ AmazonHive](https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC_1.0.4.1004.zip)
   + Controladores JDBC de Hive 0.11.0: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0)
   + Controladores JDBC de Hive 0.8.1: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1)

1. [Instale SQL Workbench/J. Para obtener más información, consulte Instalación e inicio de SQL Workbench/J en el manual del usuario del manual de SQL.](http://www.sql-workbench.net/manual/install.html) Workbench/J 

1. Cree un túnel de SSH en el nodo principal del clúster. El puerto de conexión varía en función de la versión de Hive. En las tablas siguientes se proporcionan comandos de ejemplo para usuarios `ssh` de Linux y comandos de PuTTY para usuarios de Windows.  
**Comandos SSH de Linux**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)  
**Configuración del túnel PuTTY para Windows**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Añadir el controlador JDBC a SQL Workbench.

   1. En el cuadro de diálogo **Select Connection Profile (Seleccionar perfil de conexión)**, elija **Manage Drivers (Administrar controladores)**. 

   1. Elija el icono **Create a new entry (Crear entrada nueva)** (página en blanco).

   1. En el campo **Name (Nombre)**, escriba **Hive JDBC**.

   1. En **Library (Biblioteca)**, haga clic en el icono **Select the JAR file(s) (Seleccionar los archivos JAR)**.

   1. Seleccione los archivos JAR que se muestran en la siguiente tabla.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

   1. En el cuadro de diálogo **Please select one driver (Seleccione un controlador)**, seleccione un controlador en función de la siguiente tabla y haga clic en **OK (Aceptar)**.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Cuando vuelva al cuadro de diálogo **Seleccionar perfil de conexión**, compruebe que el campo **Controlador** esté definido en **JDBC de Hive** y proporcione la cadena de conexión de JDBC en el campo **URL** de acuerdo con la siguiente tabla.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

   Si el clúster utiliza la versión 3.3.1 o posterior de la AMI, en el cuadro de diálogo **Select Connection Profile (Seleccionar perfil de conexión)**, escriba **hadoop** en el campo **Username (Nombre de usuario)**.

# HBase especificaciones de la aplicación para versiones de AMI anteriores de Amazon EMR
<a name="emr-3x-hbase"></a>

## Versiones compatibles HBase
<a name="emr-3x-hbase-versions"></a>


| HBase versión | Versión de AMI | AWS CLI parámetros de configuración | HBase detalles de la versión | 
| --- | --- | --- | --- | 
| [0.94.18](https://svn.apache.org/repos/asf/hbase/branches/0.94/CHANGES.txt) | 3.1.0 y versiones posteriores |  `--ami-version 3.1` `--ami-version 3.2` `--ami-version 3.3` `--applications Name=HBase`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hbase.html)  | 
| [0.94.7](https://svn.apache.org/repos/asf/hbase/branches/0.94/CHANGES.txt) | 3.0-3.0.4 |  `--ami-version 3.0` `--applications Name=HBase`  | 
| [0.92](https://svn.apache.org/repos/asf/hbase/branches/0.92/CHANGES.txt) | 2.2 y versiones posteriores |  `--ami-version 2.2 or later` `--applications Name=HBase`  | 

## HBase requisitos previos del clúster
<a name="emr-3x-hbase-prerequisites"></a>

Un clúster creado con las versiones 2.x y 3.x de la AMI de Amazon EMR debe cumplir los siguientes requisitos para. HBase
+ El AWS CLI (opcional): para interactuar con él HBase mediante la línea de comandos, descargue e instale la versión más reciente de. AWS CLI Para obtener más información, consulte [Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) en la *Guía del usuario de AWS Command Line Interface *.
+ Al menos dos instancias (opcional): el nodo maestro del clúster ejecuta el servidor maestro de HBase y ZooKeeper, y los nodos de tareas ejecutan los servidores de la región de HBase. Para obtener el mejor rendimiento, los clústeres de HBase deben ejecutarse en al menos dos instancias de EC2, pero puede ejecutarse HBase en un solo nodo con fines de evaluación. 
+ Clúster de ejecución prolongada: HBase solo se ejecuta en clústeres de ejecución prolongada. La CLI y la consola de Amazon EMR crean clústeres de ejecución prolongada de manera predeterminada. 
+ Un conjunto de par de claves de Amazon EC2 (recomendado): para utilizar el protocolo de red Secure Shell (SSH) para conectar con el nodo maestro y ejecutar comandos de intérprete de comandos de HBase, debe utilizar un par de claves de Amazon EC2 al crear el clúster. 
+ Las versiones de AMI y Hadoop correctas (HBase los clústeres) actualmente solo se admiten en Hadoop 20.205 o versiones posteriores. 
+ Ganglia (opcional): para supervisar las métricas de HBase rendimiento, instale Ganglia al crear el clúster. 
+ Un depósito de Amazon S3 para registros (opcional): los registros HBase están disponibles en el nodo principal. Si desea que estos registros se copien en Amazon S3, especifique un bucket de S3 para que reciba archivos de registro al crear el clúster. 

## Crear un clúster con HBase
<a name="emr-3x-hbase-launch"></a>

En la siguiente tabla se enumeran las opciones que están disponibles cuando se utiliza la consola para crear un clúster con HBase una versión de lanzamiento de la AMI de Amazon EMR.


| Campo | Action | 
| --- | --- | 
| Restore from backup (Restaurar desde copia de seguridad) | Especifique si desea cargar previamente el HBase clúster con los datos almacenados en Amazon S3. | 
| Backup location (Ubicación de copia de seguridad) | Especifique el URI donde reside en Amazon S3 la copia de seguridad desde la que realizará la restauración.  | 
| Backup version (Versión de copia de seguridad) | Opcionalmente, especifique el nombre de la versión de la copia de seguridad en Backup Location (Ubicación de copia de seguridad) que desea utilizar. Si deja este campo en blanco, Amazon EMR utilizará la última copia de seguridad en Backup Location para rellenar el nuevo clúster. HBase  | 
| Schedule Regular Backups (Programar copia de seguridads periódicas) | Especifique si desea programar copias de seguridad incrementales automáticas. La primera copia de seguridad es una copia de seguridad completa para crear una referencia para futuros copias de seguridad incrementales. | 
| Consistent backup (Copia de seguridad consistente) | Especifique si las copias de seguridad deben ser consistentes. Una copia de seguridad coherente es la que pone en pausa las operaciones de escritura durante la etapa de copia de seguridad inicial, con sincronización entre nodos. Cualquier operación de escritura que se haya puesto en pausa de este modo se coloca en una cola y se reanuda cuando se completa la sincronización. | 
| Backup frequency (Frecuencia de copia de seguridad) | El número de copias de seguridad programadas days/hours/minutes entre ellas. | 
| Backup location (Ubicación de copia de seguridad) | El URI de Amazon S3 donde se almacenan las copias de seguridad. La ubicación de las copias de seguridad de cada HBase clúster debe ser diferente para garantizar que las copias de seguridad diferenciales sigan siendo correctas.  | 
| Backup start time (Hora de inicio de copia de seguridad) | Especifica cuándo debe realizarse la primera copia de seguridad. Puede definirlo en now, lo que hace que la primera copia de seguridad comience en cuanto el clúster se ejecute, o escriba una fecha y hora con [formato ISO](http://www.w3.org/TR/NOTE-datetime). Por ejemplo, 2012-06-15T20:00 Z establecería la hora de inicio en el 15 de junio de 2012 a las 8:00 p. m. UTC.  | 

El siguiente AWS CLI comando de ejemplo lanza un clúster con HBase y otras aplicaciones:

**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 (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.3 \
               --applications Name=Hue Name=Hive Name=Pig Name=HBase \
               --use-default-roles --ec2-attributes KeyName=myKey \
               --instance-type c1.xlarge --instance-count 3 --termination-protected
```

Una vez realizada la conexión entre el Hive y HBase los clústeres (como se muestra en el procedimiento anterior), puede acceder a los datos almacenados en el HBase clúster creando una tabla externa en Hive. 

El siguiente ejemplo, cuando se ejecuta desde la línea de comandos de Hive, crea una tabla externa que hace referencia a los datos almacenados en una HBase tabla llamada. `inputTable` A continuación, puede hacer referencia `inputTable` a las instrucciones de Hive para consultar y modificar los datos almacenados en el HBase clúster. 

**nota**  
El siguiente ejemplo utiliza **protobuf-java-2.4.0a.jar** en la AMI 2.3.3, pero debe modificar el ejemplo de adaptarlo a su versión. Para comprobar la versión de Protocol Buffers JAR que tiene, ejecute el comando en el símbolo del sistema de Hive: `! ls /home/hadoop/lib;`. 

```
add jar lib/emr-metrics-1.0.jar ;
               add jar lib/protobuf-java-2.4.0a.jar ;
               
               set hbase.zookeeper.quorum=ec2-107-21-163-157.compute-1.amazonaws.com ;
               
               create external table inputTable (key string, value string)
                    stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
                     with serdeproperties ("hbase.columns.mapping" = ":key,f1:col1")
                     tblproperties ("hbase.table.name" = "t1");
               
               select count(*) from inputTable ;
```

## Personalización HBase de la configuración
<a name="emr-3x-hbase-customize"></a>

Si bien la configuración predeterminada debería funcionar para la mayoría de las aplicaciones, tiene la flexibilidad de modificar las opciones HBase de configuración. Para ello, ejecute uno de los dos scripts de acciones de arranque: 
+ **configure-hbase-daemons**—Configura las propiedades de los daemons maestro, regionserver y zookeeper. Estas propiedades incluyen el tamaño del montón y las opciones que se transferirán a la máquina virtual Java (JVM) cuando se inicie el daemon. HBase Puede definir estas propiedades como argumentos en la acción de arranque. Esta acción de arranque modifica el archivo de configuración/home/hadoop/conf/hbase-user-env.sh del clúster. HBase 
+ **configure-hbase** —Configura los ajustes HBase específicos del sitio, como el puerto al que debe enlazarse el HBase maestro y la cantidad máxima de veces que el cliente CLI del cliente debe volver a intentar una acción. Puede configurarlos one-by-one como argumentos en la acción de arranque o puede especificar la ubicación de un archivo de configuración XML en Amazon S3. Esta acción de arranque modifica el archivo de configuración/home/hadoop/conf/hbase-site.xml del clúster. HBase 

**nota**  
Estos scripts, al igual que otras acciones de arranque, solo se pueden ejecutar cuando se crea el clúster; no se pueden usar para cambiar la configuración de un HBase clúster que se esté ejecutando actualmente. 

Al ejecutar las acciones **configure-hbase** o **configure-hbase-daemons**bootstrap, los valores que especifique anulan los valores predeterminados. Cualquier valor que no haya definido explícitamente toma los valores predeterminados. 

La configuración HBase con estas acciones de arranque es similar a usar acciones de arranque en Amazon EMR para configurar los ajustes de Hadoop y las propiedades de los daemon de Hadoop. La diferencia es que no tiene opciones de memoria por proceso. HBase En su lugar, las opciones de memoria se configuran mediante el `--daemon-opts` argumento, donde *daemon* se sustituye por el nombre del daemon a configurar. 

### Configura HBase los daemons
<a name="emr-3x-hbase-configure-daemons"></a>

 Amazon EMR proporciona una acción de arranque que puede utilizar para cambiar la configuración de los HBase daemons, *region* es decir, la región en la que va a lanzar el clúster. `s3://region.elasticmapreduce/bootstrap-actions/configure-hbase-daemons` HBase 

Para configurar los HBase daemons mediante el AWS CLI, añada la acción de `configure-hbase-daemons` arranque al lanzar el clúster para configurar uno o más daemons. HBase Puede definir las siguientes propiedades: 


| Propiedad | Description (Descripción) | 
| --- | --- | 
| hbase-master-opts | Opciones que controlan cómo la JVM ejecuta el daemon maestro. Si están definidas, anulan las variables HBASE\$1MASTER\$1OPTS predeterminadas.  | 
| regionserver-opts | Opciones que controlan cómo la JVM ejecuta el daemon de servidor de región. Si están definidas, anulan las variables HBASE\$1REGIONSERVER\$1OPTS predeterminadas. | 
| zookeeper-opts | Opciones que controlan cómo la JVM ejecuta el daemon zookeeper. Si están definidas, anulan las variables HBASE\$1ZOOKEEPER\$1OPTS predeterminadas.  | 

[Para obtener más información sobre estas opciones, consulte el archivo hbase-env.sh en la documentación.](https://hbase.apache.org/book.html#hbase.env.sh) HBase 

En el siguiente ejemplo se muestra una acción de arranque para configurar valores para `zookeeper-opts` y `hbase-master-opts`.

**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 (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.3 \
--applications Name=Hue Name=Hive Name=Pig Name=HBase \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-type c1.xlarge --instance-count 3 --termination-protected \
--bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase-daemons,\
Args=["--hbase-zookeeper-opts=-Xmx1024m -XX:GCTimeRatio=19","--hbase-master-opts=-Xmx2048m","--hbase-regionserver-opts=-Xmx4096m"]
```

### Configure los ajustes HBase del sitio
<a name="emr-3x-hbase-configure-site"></a>

Amazon EMR proporciona una acción de arranque,`s3://elasticmapreduce/bootstrap-actions/configure-hbase`, que puede utilizar para cambiar la configuración de. HBase Puede establecer valores de configuración one-by-one, como argumentos en la acción de arranque, o puede especificar la ubicación de un archivo de configuración XML en Amazon S3. Establecer los valores de configuración one-by-one es útil si solo necesita establecer algunos ajustes de configuración. Definirlos utilizando un archivo XML resulta útil si tiene que hacer muchos cambios o si desea guardar las opciones de configuración que reutilizar. 

**nota**  
Puede anteponer al nombre del bucket de Amazon S3 un prefijo de región, por ejemplo`s3://region.elasticmapreduce/bootstrap-actions/configure-hbase`, dónde *region* está la región en la que va a lanzar el clúster HBase . 

Esta acción de arranque modifica el archivo de `/home/hadoop/conf/hbase-site.xml` configuración del clúster. HBase La acción de arranque solo se puede ejecutar cuando se lanza el HBase clúster.

Para obtener más información sobre los ajustes del HBase sitio que puede configurar, consulte [Configuración predeterminada](http://hbase.apache.org/book.html#config.files) en la HBase documentación. 

Establezca la acción de `configure-hbase` arranque al lanzar el HBase clúster y especifique los valores `hbase-site.xml` que desee cambiar.

**Para especificar la configuración individual HBase del sitio mediante el AWS CLI**
+ Para cambiar la `hbase.hregion.max.filesize` configuración, escriba el siguiente comando y *myKey* sustitúyalo por el nombre del par de claves de Amazon 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 (^).

  ```
  aws emr create-cluster --name "Test cluster" --ami-version 3.3 \
  --applications Name=Hue Name=Hive Name=Pig Name=HBase \
  --use-default-roles --ec2-attributes KeyName=myKey \
  --instance-type c1.xlarge --instance-count 3 --termination-protected \
  --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase,Args=["-s","hbase.hregion.max.filesize=52428800"]
  ```

**Para especificar la configuración HBase del sitio con un archivo XML, utilice AWS CLI**

1. Cree una versión personalizada de `hbase-site.xml`. Su archivo personalizado debe ser XML válido. Para reducir la posibilidad de introducir errores, comience con la copia predeterminada de`hbase-site.xml`, que se encuentra en el nodo HBase principal de Amazon EMR en`/home/hadoop/conf/hbase-site.xml`, y edite una copia de ese archivo en lugar de crear un archivo desde cero. Puede proporcionar un nombre nuevo al nuevo archivo o dejarlo como `hbase-site.xml`. 

1. Cargue el archivo `hbase-site.xml` personalizado en un bucket de Amazon S3. Debe tener los permisos establecidos para que la AWS cuenta que lanza el clúster pueda acceder al archivo. Si la AWS cuenta que lanza el clúster también es propietaria del bucket de Amazon S3, tendrá acceso. 

1. Defina la acción bootstrap **configure-hbase** al lanzar el HBase clúster e incluya la ubicación del archivo personalizado. `hbase-site.xml` El siguiente ejemplo establece los valores de configuración del HBase sitio en los especificados en el archivo. `s3://amzn-s3-demo-bucket/my-hbase-site.xml` Escriba el siguiente comando, *myKey* sustitúyalo por el nombre del key pair de EC2 y *amzn-s3-demo-bucket* sustitúyalo por el nombre de su bucket de Amazon S3.
**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 (^).

   ```
   aws emr create-cluster --name "Test cluster" --ami-version 3.3 \
           --applications Name=Hue Name=Hive Name=Pig Name=HBase \
           --use-default-roles --ec2-attributes KeyName=myKey \
           --instance-type c1.xlarge --instance-count 3 --termination-protected \
           --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase,Args=["--site-config-file","s3://amzn-s3-demo-bucket/config.xml"]
   ```

   Si especifica más de una opción para personalizar la HBase operación, debe anteponer a cada par clave-valor un modificador de `-s` opción, como se muestra en el siguiente ejemplo:

   ```
          --bootstrap-actions s3://elasticmapreduce/bootstrap-actions/configure-hbase,Args=["-s","zookeeper.session.timeout=60000"]
   ```

Con el proxy configurado y la conexión SSH abierta, puede ver la HBase interfaz de usuario abriendo una ventana del navegador con http: //:60010/master-status*master-public-dns-name*, donde se encuentra la dirección DNS pública del nodo principal *master-public-dns-name* del clúster. HBase 

Para ver los HBase registros actuales, utilice SSH para conectarse al nodo maestro y navegue hasta el directorio. `mnt/var/log/hbase` Estos registros no estarán disponibles una vez que el clúster se haya terminado a menos que hubiera habilitado el registro en Amazon S3 cuando se lanzó el clúster.

## Realice copias de seguridad y restaure HBase
<a name="emr-3x-hbase-backup-restore"></a>

Amazon EMR ofrece la posibilidad de realizar copias de seguridad de sus HBase datos en Amazon S3, ya sea de forma manual o automática. Puede realizar tanto copias de seguridad completas como incrementales. Una vez que haya hecho una copia de seguridad de HBase los datos, puede restaurarla en un clúster. HBase Puede restaurar un HBase clúster que se esté ejecutando actualmente o lanzar un clúster nuevo rellenado previamente con los datos de los que se ha hecho una copia de seguridad. 

Durante el proceso de copia de seguridad, HBase sigue ejecutando los comandos de escritura. Aunque esto garantiza que el clúster permanezca disponible durante la copia de seguridad, existe el riesgo de inconsistencia entre los datos cuya copia de seguridad se realiza y las operaciones de escritura que se ejecutan en paralelo. Para entender las inconsistencias que puedan surgir, hay que tener en cuenta que HBase distribuye las operaciones de escritura entre los nodos de su clúster. Si una operación de escritura se produce después de sondear un nodo determinado, dichos datos no se incluyen en el archivo de copia de seguridad. Es posible que incluso descubras que las escrituras anteriores en el HBase clúster (enviadas a un nodo que ya ha sido sondeado) podrían no estar en el archivo de respaldo, mientras que las escrituras posteriores (enviadas a un nodo antes de ser sondeado) sí están incluidas. 

Si se requiere una copia de seguridad coherente, debe pausar las escrituras HBase durante la parte inicial del proceso de copia de seguridad, es decir, la sincronización entre los nodos. Puede hacerlo especificando el parámetro `--consistent` al solicitar una copia de seguridad. Con este parámetro, las escrituras durante este período se ponen en cola y se ejecutan en cuanto se completa la sincronización. También puede programar copias de seguridad recurrentes, que resuelven cualquier inconsistencia a lo largo del tiempo, ya que los datos que faltan en un paso de copia de seguridad se incluyen en el siguiente paso de copia de seguridad. 

Al hacer una copia de seguridad de HBase los datos, debe especificar un directorio de copia de seguridad diferente para cada clúster. Una forma sencilla de hacerlo consiste en utilizar el identificador del clúster como parte de la ruta especificada en el directorio de copia de seguridad. Por ejemplo, `s3://amzn-s3-demo-bucket/backups/j-3AEXXXXXX16F2`. Esto garantiza que cualquier copia de seguridad incremental futura haga referencia al HBase clúster correcto. 

Cuando esté listo para eliminar los archivos de copia de seguridad antiguos que ya no son necesarios, le recomendamos que primero haga una copia de seguridad completa de sus HBase datos. Esto garantiza que se conserven todos los datos y ofrece una línea de base para futuras copias de seguridad incrementales. Una vez realizado la copia de seguridad completa, puede acceder a la ubicación de copia de seguridad y eliminar manualmente los archivos de copia de seguridad antiguos. 

El proceso HBase de copia de seguridad utiliza S3 DistCp para la operación de copia, que presenta ciertas limitaciones en cuanto al espacio de almacenamiento temporal de archivos. 

### Realice copias de seguridad y restaure HBase mediante la consola
<a name="emr-3x-hbase-backup-restore-console"></a>

La consola permite lanzar un nuevo clúster y rellenarlo con los datos de una HBase copia de seguridad anterior. También le permite programar copias de seguridad incrementales periódicas de HBase los datos. Otra funcionalidad adicional de copia de seguridad y restauración, como la posibilidad de restaurar datos en un clúster que ya está en ejecución, realizar copias de seguridad manuales y programar copias de seguridad completos automatizadas, está disponible utilizando la CLI.

**Para rellenar un nuevo clúster con HBase datos archivados mediante la consola**

1. Vaya hasta la nueva consola de Amazon EMR y seleccione **Ir a la consola antigua** en el panel de navegación lateral. Para más información sobre lo que puede esperar al cambiar a la consola antigua, consulte [Uso de la consola antigua](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Elija **Create cluster**.

1. En la sección **Configuración de software**, para **Aplicaciones adicionales**, elija **Configurar **HBase**y agregar**.

1. En el cuadro de diálogo **Add Application (Añadir aplicación)**, marque **Restore From Backup (Restaurar a partir de una copia de seguridad)**. 

1. En **Backup Location**, especifique la ubicación de la copia de seguridad para cargarla en el nuevo HBase clúster. Debe ser una URL de Amazon S3 de la forma `s3://amzn-s3-demo-bucket/backups/`. 

1. Puede definir un valor para **Backup Version (Versión de copia de seguridad)** para especificar el nombre de la versión de copia de seguridad que desea cargar. Si no define un valor para la **Versión de copia de seguridad**, Amazon EMR carga la copia de seguridad más reciente en la ubicación especificada. 

1. Elija **Add (Añadir)** y continúe con la creación del clúster especificando las demás opciones que desee.

**Para programar copias de seguridad automatizadas de HBase los datos mediante la consola**

1. En la sección **Configuración del software**, para **Aplicaciones adicionales**, elija **Configurar **HBase**y añadir**.

1. Elija **Schedule Regular Backups (Programar copias de seguridad periódicas)**.

1. Especifique si las copias de seguridad deben ser consistentes. Una copia de seguridad coherente es la que pone en pausa las operaciones de escritura durante la etapa de copia de seguridad inicial, con sincronización entre nodos. Cualquier operación de escritura que se haya puesto en pausa de este modo se coloca en una cola y se reanuda cuando se completa la sincronización. 

1. Defina la frecuencia con la que se deben realizar las copias de seguridad introduciendo un número para **Backup Frequency (Frecuencia de copia de seguridad)** y eligiendo **Days (Días)**, **Hours (Horas)** o **Minutes (Minutos)**. La primera copia de seguridad automatizada que se ejecuta es una copia de seguridad completa; posteriormente, Amazon EMR guarda las copias de seguridad incrementales en función de la programación que especifique. 

1. Especifique la ubicación en Amazon S3 donde deben almacenarse las copias de seguridad. Se debe hacer una copia de seguridad de cada HBase clúster en una ubicación diferente en Amazon S3 para garantizar que las copias de seguridad incrementales se calculen correctamente. 

1. Especifique cuándo se debe realizar la primera copia de seguridad definiendo un valor para **Backup Start Time (Hora de inicio de copia de seguridad)**. Puede definirlo en `now`, lo que hace que la primera copia de seguridad comience en cuanto el clúster se ejecute, o escriba una fecha y hora con [formato ISO](http://www.w3.org/TR/NOTE-datetime). Por ejemplo, 2013-09-26T20:00 Z establece la hora de inicio en el 26 de septiembre de 2013 a las 8:00 p. m. UTC. 

1. Elija **Añadir**.

1. Continúe con la creación del clúster con otras opciones como desee.

## Supervise HBase con CloudWatch
<a name="emr-3x-hbase-cloudwatch"></a>

Amazon EMR informa de tres métricas CloudWatch que puede utilizar para supervisar las copias de seguridad. HBase Estas métricas se actualizan CloudWatch en intervalos de cinco minutos y se proporcionan de forma gratuita.


| Métrica | Description (Descripción) | 
| --- | --- | 
| HBaseBackupFailed |  Si la última copia de seguridad produjo un error. Está establecido en 0 de forma predeterminada y se actualiza a 1 si el intento de copia de seguridad anterior produjo un error. Esta métrica solo se informa para HBase los clústeres. Caso de uso: supervise las HBase copias de seguridad Unidades: *recuento*  | 
| HBaseMostRecentBackupDuration |  La cantidad de tiempo que tarda en completarse la copia de seguridad anterior. Esta métrica se establece independientemente de si la última copia de seguridad se realizó correctamente o produjo un error. Mientras la copia de seguridad está en curso, esta métrica devuelve el número de minutos tras el inicio de la copia de seguridad. Esta métrica solo se informa para HBase los clústeres. Caso de uso: supervise las HBase copias de seguridad Unidades: *minutos*  | 
| HBaseTimeSinceLastSuccessfulBackup |  El número de minutos transcurridos desde que se inició la última HBase copia de seguridad correcta en el clúster. Esta métrica solo se indica para HBase los clústeres. Caso de uso: supervise las HBase copias de seguridad Unidades: *minutos*  | 

## Configure Ganglia para HBase
<a name="emr-3x-ganglia-for-hbase"></a>

Se configura Ganglia para HBase usar la acción **configure-hbase-for-ganglia**bootstrap. Esta acción de arranque se configura para publicar métricas en HBase Ganglia. 

Debe configurar HBase Ganglia al lanzar el clúster; los informes de Ganglia no se pueden agregar a un clúster en ejecución. 

Ganglia también almacena los archivos de registro en el servidor en `/mnt/var/log/ganglia/rrds`. Si configura su clúster para mantener los archivos de registro en un bucket de Amazon S3, los archivos de registro de Ganglia también se mantienen ahí. 

Para lanzar un clúster con Ganglia como función HBase, utilice la acción de **configure-hbase-for-ganglia**arranque, tal y como se muestra en el siguiente ejemplo.

**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 (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.3 \
--applications Name=Hue Name=Hive Name=Pig Name=HBase Name=Ganglia \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-type c1.xlarge --instance-count 3 --termination-protected \
--bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase-for-ganglia
```

Una vez que el clúster se haya lanzado con Ganglia configurado, puede acceder a los informes y gráficos de Ganglia utilizando la interfaz gráfica que se ejecuta en el nodo principal. 

# Detalles específicos de las aplicaciones de Pig para versiones anteriores de la AMI de Amazon EMR
<a name="emr-3x-pig"></a>

## Versiones de Pig compatibles
<a name="emr-3x-Pig_SupportedVersions"></a>

La versión de Pig que puede agregar a su clúster depende de la versión de la AMI de Amazon EMR y de la versión de Hadoop que utilice. En la tabla siguiente se muestra las versiones de la AMI y las versiones de Hadoop que son compatibles con las distintas versiones de Pig. Le recomendamos que utilice la última versión disponible de Pig para aprovechar las mejoras de rendimiento y las nuevas funcionalidades. 

Cuando utilizas la API para instalar Pig, se utiliza la versión predeterminada, a menos que especifiques `--pig-versions` como argumento el paso que carga Pig en el clúster durante la llamada a. [RunJobFlow](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_RunJobFlow.html) 


| Versión de Pig | Versión de AMI | Parámetros de configuración | Detalles de la versión de Pig | 
| --- | --- | --- | --- | 
| <a name="pig12"></a>0.12.0[Notas de la versión](http://pig.apache.org/releases.html#14+October%2C+2013%3A+release+0.12.0+available)[Documentación](http://pig.apache.org/docs/r0.12.0/) | 3.1.0 y versiones posteriores |  `--ami-version 3.1` `--ami-version 3.2` `--ami-version 3.3`  |  Añade compatibilidad para lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-pig.html)  | 
| <a name="pig1111"></a>0.11.1.1[Notas de la versión](http://pig.apache.org/releases.html#1+April%2C+2013%3A+release+0.11.1+available)[Documentación](http://pig.apache.org/docs/r0.11.1/) | 2.2 y versiones posteriores |  `--pig-versions 0.11.1.1` `--ami-version 2.2`  |  Mejora el rendimiento del comando LOAD PigStorage si la entrada reside en Amazon S3.  | 
| <a name="pig0111"></a>0.11.1[Notas de la versión](http://pig.apache.org/releases.html#1+April%2C+2013%3A+release+0.11.1+available)[Documentación](http://pig.apache.org/docs/r0.11.1/) | 2.2 y versiones posteriores |  `--pig-versions 0.11.1` `--ami-version 2.2`  |  Añade compatibilidad con JDK 7, Hadoop 2, las funciones definidas por el usuario de Groovy, la SchemaTuple optimización, nuevos operadores y mucho más. Para más información, consulte el [Registro de cambios de Pig 0.11.1](http://svn.apache.org/repos/asf/pig/tags/release-0.11.1/CHANGES.txt).  | 
| <a name="pig0922"></a>0.9.2.2[Notas de la versión](http://pig.apache.org/releases.html#22+January%2C+2012%3A+release+0.9.2+available)[Documentación](http://pig.apache.org/docs/r0.9.2/index.html) | 2.2 y versiones posteriores |  `--pig-versions 0.9.2.2` `--ami-version 2.2`  |  Añade compatibilidad para Hadoop 1.0.3.  | 
| <a name="pig0921"></a>0.9.2.1[Notas de la versión](http://pig.apache.org/releases.html#22+January%2C+2012%3A+release+0.9.2+available)[Documentación](http://pig.apache.org/docs/r0.9.2/index.html) | 2.2 y versiones posteriores |  `--pig-versions 0.9.2.1` `--ami-version 2.2`  |  Añade soporte para MapR.  | 
| <a name="pig092"></a>0.9.2[Notas de la versión](http://pig.apache.org/releases.html#22+January%2C+2012%3A+release+0.9.2+available)[Documentación](http://pig.apache.org/docs/r0.9.2/index.html) | 2.2 y versiones posteriores |  `--pig-versions 0.9.2` `--ami-version 2.2`  |  Incluye varias mejoras de rendimiento y correcciones de errores. Para obtener información completa sobre los cambios de Pig 0.9.2, consulte el [registro de cambios de Pig 0.9.2](http://svn.apache.org/repos/asf/pig/tags/release-0.9.2/CHANGES.txt).  | 
| <a name="pig091"></a>0.9.1[Notas de la versión](http://pig.apache.org/releases.html#5+October%2C+2011%3A+release+0.9.1+available)[Documentación](http://pig.apache.org/docs/r0.9.1/) | 2.0 |  `--pig-versions 0.9.1` `--ami-version 2.0`  | 
| <a name="pig06"></a>0.6[Notas de la versión](http://pig.apache.org/releases.html#1+March%2C+2010%3A+release+0.6.0+available) | 1.0 |  `--pig-versions 0.6` `--ami-version 1.0`  | 
| <a name="pig03"></a>0.3[Notas de la versión](http://pig.apache.org/releases.html#25+June%2C+2009%3A+release+0.3.0+available) | 1.0 |  `--pig-versions 0.3` `--ami-version 1.0`  | 

## Detalles de la versión de Pig
<a name="emr-pig-version-details"></a>

Amazon EMR admite determinadas versiones de Pig que podrían tener aplicados parches de Amazon EMR adicionales. Puede configurar la versión de Pig que desea ejecutar en clústeres de Amazon EMR. Para obtener más información acerca de cómo hacerlo, consulte [Apache Pig](emr-pig.md). En las siguientes secciones se describen diferentes versiones de Pig y los parches aplicados a las versiones cargadas en Amazon EMR. 

### Parches de Pig
<a name="EnvironmentConfig_AMIPigPatches"></a>

En esta sección se describen los parches personalizados aplicados a versiones de Pig disponibles con Amazon EMR.

#### Parches de Pig 0.11.1.1
<a name="EnvironmentConfig_AMIPigPatches-0.11.1.1"></a>

La versión Amazon EMR de Pig 0.11.1.1 es una versión de mantenimiento que mejora el rendimiento del comando LOAD PigStorage si la entrada reside en Amazon S3.

#### Parches de Pig 0.11.1
<a name="EnvironmentConfig_AMIPigPatches-0.11.1"></a>

La versión de Amazon EMR de Pig 0.11.1 contiene todas las actualizaciones facilitadas por la Apache Software Foundation y los parches acumulativos de Amazon EMR de la versión 0.9.2.2 de Pig. Sin embargo, no hay parches nuevos específicos de Amazon EMR en Pig 0.11.1.

#### Parches de Pig 0.9.2
<a name="EnvironmentConfig_AMIPigPatches-0.9.2"></a>

Apache Pig 0.9.2 es una versión de mantenimiento de Pig. El equipo de Amazon EMR ha aplicado los siguientes parches a la versión de Amazon EMR de Pig 0.9.2. 


| Parche | Description (Descripción) | 
| --- | --- | 
|  PIG-1429  |   Añadir el tipo de datos booleano a Pig como tipo de datos de primer nivel. [Para obtener más información, visite https://issues.apache. org/jira/browse/PIG-1429](https://issues.apache.org/jira/browse/PIG-1429).   **Estado:** confirmado   **Corregido en la versión de Apache Pig:** 0.10   | 
|  PIG-1824  |   Admite módulos de importación en Jython UDF. Para obtener más información, visite [https://issues.apache. org/jira/browse/PIG-1824](https://issues.apache.org/jira/browse/PIG-1824).   **Estado:** confirmado   **Corregido en la versión de Apache Pig:** 0.10   | 
|  PIG-2010  |   Paquete registrado JARs en la memoria caché distribuida. Para obtener más información, visite [https://issues.apache. org/jira/browse/PIG-2010.](https://issues.apache.org/jira/browse/PIG-2010)   **Estado:** confirmado   **Corregido en la versión de Apache Pig:** 0.11   | 
|  PIG-2456  |   Añadir un archivo \$1/.pigbootup donde el usuario puede especificar instrucciones de Pig predeterminadas. Para obtener más información, visite [https://issues.apache. org/jira/browse/PIG-2456](https://issues.apache.org/jira/browse/PIG-2456).   **Estado:** confirmado   **Corregido en la versión de Apache Pig:** 0.11   | 
|  PIG-2623  |   Support use las rutas de Amazon S3 para registrarse UDFs. Para obtener más información, visite [https://issues.apache. org/jira/browse/PIG-2623](https://issues.apache.org/jira/browse/PIG-2623).   **Estado:** confirmado   **Corregido en la versión de Apache Pig:** 0.10, 0.11   | 

#### Parches de Pig 0.9.1
<a name="EnvironmentConfig_AMIPigPatches-0.9.1"></a>

El equipo de Amazon EMR ha aplicado los siguientes parches a la versión de Amazon EMR de Pig 0.9.1. 


| Parche | Description (Descripción) | 
| --- | --- | 
|  Admite archivos de JAR y scripts de Pig en dfs  |   Agregue compatibilidad para ejecutar scripts y registrar archivos de JAR almacenados en HDFS, Amazon S3 u otros sistemas de archivos distribuidos. [Para obtener más información, visite https://issues.apache. org/jira/browse/PIG-1505](https://issues.apache.org/jira/browse/PIG-1505).   **Estado:** confirmado   **Corregido en la versión de Apache Pig:** 0.8.0   | 
|  Soporta varios sistemas de archivos en Pig  |   Añade soporte para scripts de Pig para leer datos desde un sistema de archivos y escribirlos en otro. Para obtener más información, visite [https://issues.apache. org/jira/browse/PIG-1564](https://issues.apache.org/jira/browse/PIG-1564).   **Estado:** no confirmado   **Corregido en la versión de Apache Pig:** n/d   | 
|  Agregue la fecha, hora y cadena de Piggybank UDFs  |   Agregue la fecha, la hora y la cadena para admitir scripts Pig personalizados. UDFs [Para obtener más información, visita https://issues.apache. org/jira/browse/PIG-1565](https://issues.apache.org/jira/browse/PIG-1565).   **Estado:** no confirmado   **Corregido en la versión de Apache Pig:** n/d   | 

## Clústeres de Pig interactivos y por lotes
<a name="emr-3x-pig-interactive-batch"></a>

Amazon EMR le permite ejecutar scripts de Pig en dos modos:
+ Interactivo
+ Lote

Al lanzar un clúster de larga duración mediante la consola o la AWS CLI, puede conectarse **ssh** al nodo maestro como usuario de Hadoop y utilizar el shell de Grunt para desarrollar y ejecutar sus scripts de Pig de forma interactiva. El uso de Pig de forma interactiva le permite revisar el script de Pig con mayor facilidad que el modo por lotes. Después de revisar correctamente el script de Pig en modo interactivo, puede cargar el script en Amazon S3 y utilizar el modo por lotes para ejecutar el script en la fase de producción. También puede enviar comandos de Pig de forma interactiva en un clúster en ejecución para analizar y transformar los datos según sea necesario.

En el modo de lotes, se carga el script de Pig en Amazon S3 y, a continuación, se envía el trabajo al clúster como un paso. Los pasos de Pig se pueden enviar a un clúster en ejecución prolongada o a un clúster transitorio.

# Detalles específicos de las aplicaciones Spark con versiones anteriores de AMI de Amazon EMR
<a name="emr-3x-spark"></a>

## Usar Spark interactivamente o en modo de lote
<a name="emr-3x-spark-interactive-batch"></a>

Amazon EMR le permite ejecutar aplicaciones de Spark en dos modos: 
+ Interactivo
+ Lote

Cuando lanzas un clúster de larga duración con la consola o la consola AWS CLI, puedes conectarte mediante SSH al nodo maestro como usuario de Hadoop y usar el shell de Spark para desarrollar y ejecutar tus aplicaciones de Spark de forma interactiva. El uso de Spark de forma interactiva le permite crear prototipos o probar aplicaciones de Spark con mayor facilidad en un entorno de lotes. Después de revisar correctamente la aplicación Spark en modo interactivo, puede colocar la aplicación JAR o el programa Python en el sistema de archivos local en el nodo maestro del clúster en Amazon S3. A continuación, puede enviar la aplicación como un flujo de trabajo por lotes.

En el modo de lotes, cargue su script de Spark en Amazon S3 o el sistema de archivos del nodo maestro local y, a continuación, envíe el trabajo al clúster como un paso. Los pasos de Spark se pueden enviar a un clúster en ejecución prolongada o a un clúster transitorio.

## Creación de un clúster con Spark instalado
<a name="emr-3x-spark-install"></a>

**Para lanzar un clúster con Spark instalado utilizando la consola**

1. Vaya hasta la nueva consola de Amazon EMR y seleccione **Ir a la consola antigua** en el panel de navegación lateral. Para más información sobre lo que puede esperar al cambiar a la consola antigua, consulte [Uso de la consola antigua](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Elija **Create cluster**.

1. En **Software Configuration (Configuración de software)**, elija la versión de la AMI que necesite.

1.  Para **Applications to be installed (Aplicaciones que hay que instalar)**, elija **Spark** en la lista y, a continuación, elija **Configure and add (Configurar y añadir)**.

1. Añada argumentos para cambiar la configuración de Spark como desee. Para obtener más información, consulte [Configurar Spark](#emr-3x-spark-configure). Elija **Add (Agregar)**.

1.  Seleccione las demás opciones que necesite y, a continuación, elija **Create cluster (Crear clúster)**.

El siguiente ejemplo muestra cómo crear un clúster con Spark mediante Java:

```
AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
SupportedProductConfig sparkConfig = new SupportedProductConfig()
			.withName("Spark");

RunJobFlowRequest request = new RunJobFlowRequest()
			.withName("Spark Cluster")
			.withAmiVersion("3.11.0")
			.withNewSupportedProducts(sparkConfig)
			.withInstances(new JobFlowInstancesConfig()
				.withEc2KeyName("myKeyName")
				.withInstanceCount(1)
				.withKeepJobFlowAliveWhenNoSteps(true)
				.withMasterInstanceType("m3.xlarge")
				.withSlaveInstanceType("m3.xlarge")
			);			
RunJobFlowResult result = emr.runJobFlow(request);
```

## Configurar Spark
<a name="emr-3x-spark-configure"></a>

[Para configurar Spark al crear un clúster, ejecuta la acción de arranque que se encuentra en el repositorio de Github. awslabs/emr-bootstrap-actions/spark](https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark) Para ver los argumentos que acepta la acción de arranque, consulte [README](https://github.com/aws-samples/emr-bootstrap-actions/blob/master/spark/examples/README.md) en ese repositorio. La acción de arranque configura propiedades en el archivo `$SPARK_CONF_DIR/spark-defaults.conf`. Para obtener más información acerca de la configuración, consulte el tema Spark Configuration en la documentación de Spark. Puede sustituir "latest" en la URL siguiente por el número de versión de Spark que va a instalar, por ejemplo, `2.2.0` [http://spark.apache.org/docs/latest/configuration.html](http://spark.apache.org/docs/latest/configuration.html).

También es posible configurar Spark dinámicamente en el momento de enviar la aplicación. Existe un valor para maximizar automáticamente la asignación de recursos para un ejecutor utilizando el archivo de configuración `spark`. Para obtener más información, consulte [Anulación de las opciones de configuración predeterminadas de Spark](#emr-3x-spark-dynamic-configuration).

### Cambio de la configuración predeterminada de Spark
<a name="emr-3x-spark-default-settings"></a>

El siguiente ejemplo muestra cómo crear un clúster con `spark.executor.memory` establecido en 2G mediante la AWS CLI.

**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 (^).

```
aws emr create-cluster --name "Spark cluster" --ami-version 3.11.0 \
--applications Name=Spark, Args=[-d,spark.executor.memory=2G] --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 --use-default-roles
```

### Enviar trabajo a Spark
<a name="emr-3x-spark-submit-work"></a>

Para enviar trabajos a un clúster, utilice un paso para ejecutar el script `spark-submit` en su clúster de EMR. Agrega el paso mediante el `addJobFlowSteps` método que se muestra en [AmazonElasticMapReduceClient](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/AmazonElasticMapReduceClient.html):

```
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
StepFactory stepFactory = new StepFactory();
AddJobFlowStepsRequest req = new AddJobFlowStepsRequest();
req.withJobFlowId("j-1K48XXXXXXHCB");

List<StepConfig> stepConfigs = new ArrayList<StepConfig>();
		
StepConfig sparkStep = new StepConfig()
	.withName("Spark Step")
	.withActionOnFailure("CONTINUE")
	.withHadoopJarStep(stepFactory.newScriptRunnerStep("/home/hadoop/spark/bin/spark-submit","--class","org.apache.spark.examples.SparkPi","/home/hadoop/spark/lib/spark-examples-1.3.1-hadoop2.4.0.jar","10"));

stepConfigs.add(sparkStep);
req.withSteps(stepConfigs);
AddJobFlowStepsResult result = emr.addJobFlowSteps(req);
```

### Anulación de las opciones de configuración predeterminadas de Spark
<a name="emr-3x-spark-dynamic-configuration"></a>

Es posible que desee anular los valores de configuración predeterminados de Spark por aplicación. Puede hacerlo cuando envíe aplicaciones utilizando un paso, que básicamente transfiere opciones a `spark-submit`. Por ejemplo, es posible que desee cambiar la memoria asignada a un proceso de ejecutor cambiando `spark.executor.memory`. Puede proporcionar el modificador `--executor-memory` con un argumento como el siguiente:

```
/home/hadoop/spark/bin/spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10
```

Del mismo modo, puede ajustar `--executor-cores` y `--driver-memory`. En un paso, debería proporcionar los siguientes argumentos al paso:

```
--executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10
```

También puede ajustar la configuración que puede no tener un modificador integrado utilizando la opción `--conf`. Para obtener más información sobre otras opciones que se pueden ajustar, consulte el tema [Dynamically loading Spark properties](https://spark.apache.org/docs/latest/configuration.html#dynamically-loading-spark-properties) en la documentación de Apache Spark.

# Diferencias de la DistCp utilidad S3 con las versiones AMI anteriores de Amazon EMR
<a name="emr-3x-s3distcp"></a>

## Amazon EMR admite DistCp versiones S3
<a name="emr-s3distcp-verisons"></a>

Las siguientes DistCp versiones de S3 son compatibles con las versiones de AMI de Amazon EMR. DistCpLas versiones de S3 posteriores a la 1.0.7 se encuentran directamente en los clústeres. Utilice el JAR de `/home/hadoop/lib` para las características más recientes.


| Versión | Description (Descripción) | Fecha de lanzamiento de la nueva versión | 
| --- | --- | --- | 
| 1.0.8 | Añade las opciones --appendToLastFile, --requirePreviousManifest y --storageClass. | 3 de enero de 2014 | 
| 1.0.7 | Añade la opción --s3ServerSideEncryption. | 2 de mayo de 2013 | 
| 1.0.6 | Añade la opción --s3Endpoint. | 6 de agosto de 2012 | 
| 1.0.5 | Mejora la capacidad de especificar qué versión de S3 se va DistCp a ejecutar. | 27 de junio de 2012 | 
| 1.0.4 | Mejora la opción --deleteOnSuccess. | 19 de junio de 2012 | 
| 1.0.3 | Añade soporte para las opciones --numberFiles y --startingIndex. | 12 de junio de 2012 | 
| 1.0.2 | Mejora la nomenclatura de archivos al utilizar grupos. | 6 de junio de 2012 | 
| 1.0.1 | Versión inicial de S3DistCp. | 19 de enero de 2012 | 

## Agregue un paso de DistCp copia de S3 a un clúster
<a name="emr-3x-s3distcp-add-step"></a>

Para añadir un paso de DistCp copia de S3 a un clúster en ejecución, escriba el siguiente comando, *j-3GYXXXXXX9IOK* sustitúyalo por el ID del clúster y *amzn-s3-demo-bucket* sustitúyalo por el nombre del bucket de Amazon S3.

**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 (^).

```
aws emr add-steps --cluster-id j-3GYXXXXXX9IOK \
--steps Type=CUSTOM_JAR,Name="S3DistCp step",Jar=/home/hadoop/lib/emr-s3distcp-1.0.jar,\
Args=["--s3Endpoint,s3-eu-west-1.amazonaws.com",\
"--src,s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/",\
"--dest,hdfs:///output",\
"--srcPattern,.*[a-zA-Z,]+"]
```

**Example Cargue CloudFront los registros de Amazon en HDFS**  
En este ejemplo, se cargan CloudFront los registros de Amazon en HDFS añadiendo un paso a un clúster en ejecución. En el proceso, cambia el formato de compresión de Gzip (el valor predeterminado de CloudFront) a LZO. Esto resulta útil porque los datos comprimidos mediante LZO se pueden dividir en varias asignaciones a medida que se descomprimen, por lo que ya no tendrá que esperar hasta que se complete la compresión, como hace con Gzip. Esto proporciona un mejor rendimiento al analizar los datos con Amazon EMR. Este ejemplo mejora además el rendimiento utilizando la expresión regular especificada en la opción `--groupBy` para combinar todos los registros de una hora dada en un archivo único. Los clústeres de Amazon EMR son más eficaces al procesar unos pocos archivos grandes comprimidos con LZO que al procesar muchos archivos pequeños comprimidos con Gzip. Para dividir los archivos de LZO, debe indexarlos y utilizar la biblioteca de terceros hadoop-lzo.   
Para cargar CloudFront los registros de Amazon en HDFS, escriba el siguiente comando, *j-3GYXXXXXX9IOK* sustitúyalo por el ID del clúster y *amzn-s3-demo-bucket* sustitúyalo por el nombre del bucket de Amazon S3.   
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 (^).

```
aws emr add-steps --cluster-id j-3GYXXXXXX9IOK \
--steps Type=CUSTOM_JAR,Name="S3DistCp step",Jar=/home/hadoop/lib/emr-s3distcp-1.0.jar,\
Args=["--src,s3://amzn-s3-demo-bucket/cf","--dest,hdfs:///local",\
"--groupBy,.*XABCD12345678.([0-9]+-[0-9]+-[0-9]+-[0-9]+).*",\
"--targetSize,128",
"--outputCodec,lzo","--deleteOnSuccess"]
```
Tenga en cuenta el caso en el que el ejemplo anterior se ejecuta sobre los siguientes archivos de registro de CloudFront .   

```
s3://amzn-s3-demo-bucket/cf/XABCD12345678.2012-02-23-01.HLUS3JKx.gz
s3://amzn-s3-demo-bucket/cf/XABCD12345678.2012-02-23-01.I9CNAZrg.gz
s3://amzn-s3-demo-bucket/cf/XABCD12345678.2012-02-23-02.YRRwERSA.gz
s3://amzn-s3-demo-bucket/cf/XABCD12345678.2012-02-23-02.dshVLXFE.gz
s3://amzn-s3-demo-bucket/cf/XABCD12345678.2012-02-23-02.LpLfuShd.gz
```
S3 DistCp copia, concatena y comprime los archivos en los dos archivos siguientes, donde el nombre del archivo viene determinado por la coincidencia realizada por la expresión regular.   

```
hdfs:///local/2012-02-23-01.lzo
hdfs:///local/2012-02-23-02.lzo
```