Lanzar un clúster mediante la línea de comando - AWS Data Pipeline

AWS Data Pipeline ya no está disponible para los nuevos clientes. Los clientes existentes de AWS Data Pipeline pueden seguir utilizando el servicio con normalidad. Más información

Lanzar un clúster mediante la línea de comando

Si ejecuta periódicamente un clúster de Amazon EMR para analizar registros de web o realizar análisis de datos científicos, puede utilizar AWS Data Pipeline para administrar los clústeres de Amazon EMR. Con AWS Data Pipeline, puede especificar las condiciones previas que se deben cumplir antes de que se lance el clúster (por ejemplo, garantizar que los datos de hoy se hayan cargado en Amazon S3). Este tutorial le mostrará cómo lanzar un clúster, que puede ser un modelo para una canalización sencilla basada en Amazon EMR o como parte de una canalización más compleja.

Requisitos previos

Antes de poder utilizar la CLI; debe llevar a cabo los pasos siguientes:

  1. Instale y configure la interfaz de la línea de comandos (CLI). Para obtener más información, consulte Acceso a AWS Data Pipeline.

  2. Asegúrese de que existan los roles de IAM denominados DataPipelineDefaultRole y DataPipelineDefaultResourceRole. La consola AWS Data Pipeline crea estos roles automáticamente. Si no ha utilizado la consola AWS Data Pipeline al menos una vez, debe crear estos roles manualmente. Para obtener más información, consulte Roles de IAM para AWS Data Pipeline.

Creación del archivo de definición de canalización

El código siguiente es el archivo de definición de canalización para un clúster sencillo de Amazon EMR que ejecuta un trabajo de Hadoop Streaming existente proporcionado por Amazon EMR. Esta aplicación de ejemplo se denomina WordCount y también puede ejecutarla desde la consola de Amazon EMR.

Copie este código en un archivo de texto y guárdelo como MyEmrPipelineDefinition.json. Debe sustituir la ubicación del bucket de Amazon S3 por el nombre de un bucket de Amazon S3 de su propiedad. También debe sustituir las fechas de inicio y final. Para lanzar clústeres de forma inmediata, establezca startDateTime en la fecha de un día del pasado y endDateTime en un día del futuro. AWS Data Pipeline comenzará entonces a lanzar los clústeres "vencidos" inmediatamente, en un intento de solucionar lo que percibe como un atasco de trabajo. Esta reposición significa que no es necesario esperar una hora para ver cómo AWS Data Pipeline lanza su primer clúster.

{ "objects": [ { "id": "Hourly", "type": "Schedule", "startDateTime": "2012-11-19T07:48:00", "endDateTime": "2012-11-21T07:48:00", "period": "1 hours" }, { "id": "MyCluster", "type": "EmrCluster", "masterInstanceType": "m1.small", "schedule": { "ref": "Hourly" } }, { "id": "MyEmrActivity", "type": "EmrActivity", "schedule": { "ref": "Hourly" }, "runsOn": { "ref": "MyCluster" }, "step": "/home/hadoop/contrib/streaming/hadoop-streaming.jar,-input,s3n://elasticmapreduce/samples/wordcount/input,-output,s3://myawsbucket/wordcount/output/#{@scheduledStartTime},-mapper,s3n://elasticmapreduce/samples/wordcount/wordSplitter.py,-reducer,aggregate" } ] }

Esta canalización tiene tres objetos:

  • Hourly, que representa el programa del trabajo. Puede establecer un programa como uno de los campos de una actividad. Cuando lo haga, la actividad se ejecutará de acuerdo con dicho programa o, en este caso, cada hora.

  • MyCluster, que representa el conjunto de instancias Amazon EC2 utilizadas para ejecutar el clúster. Puede especificar el tamaño y el número de instancias EC2 que se ejecutarán como el clúster. Si no especifica el número de instancias, el clúster se lanzará con dos, un nodo principal y un nodo de tarea. Puede especificar una subred en la que lanzar el clúster. Puede añadir configuraciones adicionales al clúster, tales como acciones de arranque para cargar software adicional en la AMI proporcionada por Amazon EMR.

  • MyEmrActivity, que representa el cálculo que se procesará con el clúster. Amazon EMR admite varios tipos de clústeres, entre los que se incluyen streaming, Cascading y Scripted Hive. El campo runsOn vuelve a hacer referencia a MyCluster y lo utiliza como especificación para sustentar el clúster.

Actualización y activación de la definición de la canalización

Debe cargar la definición de su canalización y activarla. En los siguientes comandos de ejemplo, reemplace pipeline_name por una etiqueta para su canalización y pipeline_file por la ruta completa para el archivo de definición de canalización .json.

AWS CLI

Para crear su definición de canalización y activarla, use el siguiente comando create-pipeline. Anote el ID de su canalización, ya que utilizará este valor con la mayoría de los comandos de la CLI.

aws datapipeline create-pipeline --name pipeline_name --unique-id token { "pipelineId": "df-00627471SOVYZEXAMPLE" }

Para cargar su definición de la canalización, utilice el comando siguiente: put-pipeline-definition.

aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json

Si la canalización se valida correctamente, el campo validationErrors estará vacío. Debe revisar todas las advertencias.

Para activar la canalización, utilice el siguiente comando activate-pipeline:

aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE

Puede comprobar que su canalización aparece en la lista de canalizaciones mediante el siguiente comando list-pipelines.

aws datapipeline list-pipelines

Supervisar las ejecuciones de la canalización

Puede ver los clústeres que lanza AWS Data Pipeline utilizando la consola de Amazon EMR y puede ver la carpeta de salida mediante la consola de Amazon S3.

Para comprobar el progreso de los clústeres que lanza AWS Data Pipeline
  1. Abra la consola de Amazon EMR.

  2. El nombre de los clústeres generados por AWS Data Pipeline tiene el formato siguiente: <pipeline-identifier>_@<emr-cluster-name>_<launch-time>.

    Elastic MapReduce clúster list showing three running clusters with unique identifiers.
  3. Cuando finalice una de las ejecuciones, abra la consola de Amazon S3 y compruebe que la carpeta de salida con marca temporal existe y contiene los resultados esperados del clúster.

    Amazon S3 console showing folders with timestamp names in the wordcount directory.