Both sides previous revisionPrevious revisionNext revision | Previous revision |
inv:desenvolvemento:amazon_elastic_mapreduce [2015/11/12 19:06] – [Java 8 en EMR] ismael.rodriguez | inv:desenvolvemento:amazon_elastic_mapreduce [2018/10/03 09:40] (actual) – [Configuración del cluster] diego.cougil |
---|
====== Amazon Elastic MapReduce ====== | ====== Amazon Elastic MapReduce ====== |
Amazon Elastic MapReduce ([[http://aws.amazon.com/elasticmapreduce/|Amazon EMR]]) es un servicio web para la configuración y depliegue de un cluster basado en instancias de máquinas en el servicio Amazon Elastic Compute Cloud ([[http://aws.amazon.com/ec2/|Amazon EC2]]) y que es gestionado mediante [[https://hadoop.apache.org/|Hadoop]]. También se puede ejecutar en Amazon EMR otros marcos de trabajo distribuídos como [[https://spark.apache.org/|Spark]], e interactuar con los datos en otros almacenes de datos como [[http://aws.amazon.com/s3/|Amazon S3]]. | Amazon Elastic MapReduce ([[http://aws.amazon.com/elasticmapreduce/|Amazon EMR]]) es un servicio web para la configuración y despliegue de un cluster basado en instancias de máquinas en el servicio Amazon Elastic Compute Cloud ([[http://aws.amazon.com/ec2/|Amazon EC2]]) y que es gestionado mediante [[https://hadoop.apache.org/|Hadoop]]. También se puede ejecutar en Amazon EMR otros marcos de trabajo distribuidos como [[https://spark.apache.org/|Spark]], e interactuar con los datos en otros almacenes de datos como [[http://aws.amazon.com/s3/|Amazon S3]]. |
| |
===== Creación de un cluster con EMR ===== | ===== Creación de un cluster con EMR ===== |
Un cluster EMR suele tener un ciclo de vida totalmente automatizado y que se establece en el momento de su creación. El proceso general sería: | Un cluster EMR suele tener un ciclo de vida totalmente automatizado y que se establece en el momento de su creación. El proceso general sería: |
* Lanzamiento de las instancias EC2 de las que se compone el cluster | * Lanzamiento de las instancias EC2 de las que se compone el cluster |
* Ejecución de los scripts de instalación, tanto automáticos de amazon (como las imagenes preconfiguradas [[http://aws.amazon.com/es/amazon-linux-ami/|AMI]]) como los añadidos por el usuario en las acciones de inicialización (Bootstrap actions). | * Ejecución de los scripts de instalación, tanto automáticos de amazon (como las imágenes preconfiguradas [[http://aws.amazon.com/es/amazon-linux-ami/|AMI]]) como los añadidos por el usuario en las acciones de inicialización (Bootstrap actions). |
* Trabajos a realizar (Steps) normalmente consistentes en carga de datos de entrada, procesamiento de los mismos, y almacenado de los resultados. | * Trabajos a realizar (Steps) normalmente consistentes en carga de datos de entrada, procesamiento de los mismos, y almacenado de los resultados. |
* Apagado automático del cluster una vez se han terminado todos los steps. | * Apagado automático del cluster una vez se han terminado todos los steps. |
| |
En las siguientes subsecciones se explican todos lo básico para poder lanzar un cluster EMR y analizar los resultados de las ejecuciones. | En las siguientes subsecciones se explica todo lo básico para poder lanzar un cluster EMR y analizar los resultados de las ejecuciones. |
| |
==== Almacenamiento con S3 ==== | ==== Almacenamiento con S3 ==== |
</code> | </code> |
| |
Una vez configurado el software, se continua con la configuración del hardware. La configuración más típica se compone por un nodo ''Master'' donde se lanzarán los trabajos y 1 o más instancias ''Core'' que harán de workers dentro del cluster hadoop (para realizar, por ejemplo, las tareas de mapper). Dependiendo del tipo de necesidad, amazon pone a disposición varios tipos de [[http://aws.amazon.com/ec2/instance-types/#instance-details|instancias EC2]]. | Una vez configurado el software, se continúa con la configuración del hardware. La configuración más típica se compone por un nodo ''Master'' donde se lanzarán los trabajos y 1 o más instancias ''Core'' que harán de workers dentro del cluster hadoop (para realizar, por ejemplo, las tareas de mapper). Dependiendo del tipo de necesidad, amazon pone a disposición varios tipos de [[http://aws.amazon.com/ec2/instance-types/#instance-details|instancias EC2]]. |
{{ :inv:desenvolvemento:emr_hw.png?nolink&700 |}} | {{ :inv:desenvolvemento:emr_hw.png?nolink&700 |}} |
| |
| |
===== Java 8 en EMR ===== | ===== Java 8 en EMR ===== |
La última versión AMI disponible (3.7.0) contiene como versión java 7. Para aquellos que usan java 8 (algo común en este tipo de entorno, por el uso de funciones lambda), pueden instalarlo en el cluster mediante un script ejecutado como bootstrap action. Para ello, solo es necesario almacenar en el contenedor S3 el siguiente script (([[https://gist.github.com/ericeijkelenboom/9951500|Bootstrap script for installing Java 8 on an Amazon Elastic MapReduce instance (AMI 3.0.1)]])), para luego añadirlo como acción bootstrap a la hora de lanzar un nuevo cluster: | La última versión de EMR (emr-4.0.0) contiene como versión java 7. Para aquellos que usan java 8 (algo común en este tipo de entorno, por el uso de funciones lambda), pueden instalarlo en el cluster mediante un script ejecutado como bootstrap action. Para ello, solo es necesario almacenar en el contenedor S3 el siguiente script (([[https://gist.github.com/ericeijkelenboom/9951500|Bootstrap script for installing Java 8 on an Amazon Elastic MapReduce instance (AMI 3.0.1)]])), para luego añadirlo como acción bootstrap a la hora de lanzar un nuevo cluster: |
<code bash> | <code bash> |
# Check java version | # Check java version |