Diferenzas
Isto amosa as diferenzas entre a revisión seleccionada e a versión actual da páxina.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
inv:desenvolvemento:amazon_elastic_mapreduce [2015/05/22 17:28] – ismael.rodriguez | inv:desenvolvemento:amazon_elastic_mapreduce [2015/05/26 10:57] – ismael.rodriguez | ||
---|---|---|---|
Liña 1: | Liña 1: | ||
====== Amazon Elastic MapReduce ====== | ====== Amazon Elastic MapReduce ====== | ||
- | + | Amazon Elastic MapReduce ([[http:// | |
- | Amazon Elastic MapReduce ([[http:// | + | |
===== Creación de un cluster con EMR ===== | ===== Creación de un cluster con EMR ===== | ||
- | ==== Almacenamento | + | 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: |
- | ==== Configuración | + | * Lanzamiento de las instancias EC2 de las que se compone el cluster |
+ | * Ejecución de los scripts de instalación, | ||
+ | * 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. | ||
+ | |||
+ | En las siguientes subsecciones se explican todos lo básico para poder lanzar un cluster EMR y analizar los resultados de las ejecuciones. | ||
+ | |||
+ | ==== Almacenamiento | ||
+ | Amazon EMR puede hacer uso de Amazon S3 como almacenamiento de los datos de entrada, los ficheros de log y los datos de salida. Para más información sobre este tipo de sistema de almacenamiento visita la [[http:// | ||
+ | |||
+ | Para crear un nuevo contenedor de datos S3 (bucket), solamente es necesario entrar en el servicio S3 y pulsar " | ||
+ | {{ : | ||
+ | |||
+ | Una vez creado el contenedor, suele ser una buena práctica organizarlo de la siguiente manera: | ||
+ | * Crear una carpeta '' | ||
+ | * Crear una carpeta '' | ||
+ | * Crear una carpeta '' | ||
+ | Además, será necesario tener en este contenedor todo lo necesario para el trabajo que se vaya a ejecutar en el cluster, así como los diferentes scripts de configuración (tal como se comenta en la siguiente sección). | ||
+ | {{ : | ||
+ | |||
+ | ==== Configuración | ||
+ | Una vez se dispone de un contenedor S3, ya es posible lanzar un cluster EMR plenamente útil. Después de pulsar en '' | ||
+ | {{ : | ||
+ | |||
+ | El siguiente paso es la configuración del software que estará disponible en el cluster. En primer lugar se elige la imagen AMI del linux preconfigurado por amazon (es posible ver que contienen las diferentes [[https:// | ||
+ | {{ : | ||
+ | |||
+ | 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 máster donde se lanzarán los trabajos y 2 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:// | ||
+ | {{ : | ||
+ | |||
+ | También es posible añadir un par de [[https:// | ||
+ | {{ : | ||
+ | |||
+ | Además del software preconfigurado por amazon, se pueden realizar más acciones de instalación de software o configuración mediante acciones de lanzamiento (Bootstrap actions). | ||
+ | {{ : | ||
+ | Para añadir una nueva acción de lanzamiento, | ||
+ | {{ : | ||
+ | |||
+ | Por último, aunque es posible añadir trabajos una vez desplegado el cluster, el procedimiento habitual y más seguro es añadir los trabajos (Steps) a realizar en el cluster antes de su lanzamiento. | ||
+ | {{ : | ||
+ | Por ejemplo, para añadir la ejecución de un archivo '' | ||
+ | {{ : | ||
+ | |||
==== Logs ==== | ==== Logs ==== | ||
+ | Durante el despliegue y ejecución del cluster, se irán generando una serie de logs que serán guardados en la carpeta indicada dentro del contenedor S3 ([[http:// | ||
+ | |||
+ | De entre los logs generados, cabe destacar: | ||
+ | * ''/< | ||
+ | * ''/< | ||
+ | * controller — Información sobre el procesamiento del trabajo. | ||
+ | * syslog — Describe la ejecución del trabajo mediante hadoop. | ||
+ | * stderr — La salida estandar de error del trabajo (en Spark suele ser aquí donde están los logs generados por la ejecución del trabajo) | ||
+ | * stdout — La salida estandar del trabajo. | ||
+ | |||
+ | |||
===== Spark sobre EMR ====== | ===== Spark sobre EMR ====== | ||
+ | Para poder utilizar Spark sobre EMR es necesario seguir una serie de pasos adicionales a lo explicado para desplegar un cluster EMR(([[https:// | ||
+ | |||
==== Instalar Spark ==== | ==== Instalar Spark ==== | ||
+ | Para instalar Spark se añade una nueva bootstrap action, donde el script a ejecutar es el siguiente (sin argumentos): | ||
+ | <code bash> | ||
+ | s3:// | ||
+ | </ | ||
- | ==== Executar | + | ==== Ejecutar |
+ | Por defecto, los steps de EMR son ejecutados mediante hadoop. Para evitar esto, amazon proporciona un programa en java para ejecutar scripts fuera de hadoop. De esta forma, para ejecutar un trabajo sobre Spark, las opciones son las siguientes (sustituir los argumentos entre <> por sus valores reales): | ||
* **Step type**: Custom JAR | * **Step type**: Custom JAR | ||
* **JAR Location**: <code bash> | * **JAR Location**: <code bash> | ||
* **Arguments**: | * **Arguments**: | ||
+ | Los argumentos son: | ||
+ | * ''/ | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * ''< | ||
- | ===== Java 8 en EMR ===== | + | ==== Lectura y escritura |
+ | Spark es capaz de leer y escribir mediante el protocolo s3 sin necesidad de realizar cambios. | ||
+ | ===== 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:// | ||
<code bash> | <code bash> | ||
# Check java version | # Check java version |