Data Pipeline: Módulo 7

Durante la séptima sesión del curso de Data Analytics en AWS, se continuo con el módulo de procesamiento de datos. Seguimos estudiando lo que es Data Pipeline y EMR.

Data Pipeline

Es un servicio de procesamiento de datos y trasferencia de los mismos ofreciendo fiabilidad, intervalos definidos, entre otras.

Se puede obtener acceso con regularidad a las ubicaciones donde se encuentran almacenados los datos, se los puede transformar y procesar a escala y trasnferirlos con eficacia a otros servicios de AWS como Amazon S3, Amazon RDS, Amazon Dynamo DB y Amazon EMR.

EMR

es una plataforma de Big Data nativa en la nube que permite procesar grandes volúmenes de datos de manera rápida y rentable a escala. Utiliza herramientas de código abierto como Apache Spark, Apache Hive, Apache HBase, Apache Flink y Apache Hudi, las cuales se combinan con la escalabilidad dinámica de Amazon EC2 y el almacenamiento escalable de Amazon S3.

Laboratorio EMR, Hadoop, HDFS, Hive y Spark:

En este laboratorio se realizó la importación de datos a Hive, consultas mediante Hue, CLI y Spark.

Para la aplicación de laboratorio de procesamiento de datos se realizó lo siguiente:

  1. Ingresar a la consola de AWS y acceder al servicio de S3, creando un nuevo bucket. Una vez creado el bucket se debe crear una carpeta dentro denominada data, dentro de esta carpeta, crear una carpeta llamada videogames. En esta carpeta se debe subir el archivo videogames.csv
  2. Ingresar al servicio de EMR y creamos un cluster , al momento de crear el cluster se debe elegir en opciones avanzadas lo siguiente:

3. Dentro de las opciones avanzadas se debe seleccionar Hadoop 2.8.5, Hive 2.3.6 Hue 4.4.0 Spark 2.4.4 y se selecciona la opción Usar para metadatos de la tabla de Hive y Spark como se muestra a continuación:

4. Se debe seleccionar las zonas de disponibilidad que se encuentren dentro de los límites de AWS como us-east-1a, us-east-1b, us.east.1c. La familia a usar será m5.xlarge que ofrece 4v core y 16 GB de memoria y se da click en next.

5. Se le otorga el nombre al cluster como ClusterBigData en el paso de configuración general del cluster. Como último paso en el de seguridad se debe poner la clave que se creada y guardada en la segunda sesión ya que nos vamos a loguear mediante SSH al nodo maestro. Finalmente se crea el cluster.

6. Se agregan dos reglas de entrada para el SG del nodo maestro del cluster, en el puerto 8888 para el acceso a Hue (Hadoop User Experience) y el puerto 22 para acceder mediante SSH.Se selecciona el SG se da clic en la pestaña Inbound y clic en Edit.

Se deberá esperar entre 8 a 10 minutos para que el cluster esté listo para usarlo.

7. Se debe acceder a Hue para lo cual se debe obtener el DNS público del cluster EMR, copiando la url y la pegamos en una pestaña de navegador.

8. Se debe agregar el puerto 8888 y aparecerá la siguiente interfaz donde se debe ingresar un usuario y una clave.

9. Dentro de Hue se debe seleccionar la opción S3 para ver los buckets creados, se selecciona el bucket creado y nos dirigimos hacia el archivo de videogames.csv , damos clic en la opción Open in Importer

10. Hacemos clic en next, después en submit y se creara una tabla en Hue.

11. Damos clic en Query para explorar la tabla creada.

12. Se puede probar el siguiente Query SELECT name,platform,year_of_release,user_score,user_count FROM `default`.`videogames`

WHERE isnotnull(user_score) AND user_score < 10 and user_count > 5000;

13. Accedemos mediante SSH al nodo maestro del cluster, en MobaXTerm creando un nuevo inicio de sesión Remote Host: La url que corresponde al DNS público del clúster y la clave es que la tenemos desde la segunda sesión. Una vez abierto la sesión se debe subir el archivo WorldCupMatches.csv a la raíz /home/hadoop del clúster

14. Con el comando hdfs dfs -ls / lo que permite listar las carpetas dentro de HDFS.

15. Se debe copiar en una carpeta en hdfs el archivo WorldCupMatches.csv con los siguientes comandos:

16. Se ejecuta el comando hive donde se creará un nuevo schema: create schema mundial;

17. Se crea la siguiente tabla en Hive

CREATE TABLE mundial.match (

`Year` string,

`Date_time` string,

`Stage` string,

`Stadium` string,

`City` string,

`HomeTeamName` string,

`HomeTeamGoals` int,

`AwayTeamGoals` int,

`AwayTeamName` string,

`Winconditions` string,

`Attendance` int,

`HalftimeHomeGoals` string,

`HalftimeAwayGoals` string,

`Referee` string,

`Assistant1` string,

`Assistant2` string,

`RoundID` int,

`MatchID` int,

`HomeTeamInitials` string,

`AwayTeamInitials` string

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘,’

LINES TERMINATED BY ‘\n’

STORED AS TEXTFILE

LOCATION ‘/hive/schema/mundial/tables/match’

TBLPROPERTIES(“skip.header.line.count” = “1”);

19. Ahora se accede a Spark ejecutando en el terminal en el terminal: spark-shell y realizando consultas con consultas con SparkSQL a Hive.

val df = sql(“select * from mundial.match”)

df.show(10)

df.printSchema()

df.count()

df.show(5)

df.filter(“City like ‘Mont%’”).show()

#Guardando resultados en formato parquet

val dataDir = “/tmp/parquet_data”

df.repartition(1).write.parquet(dataDir)

#Leyendo los archivos parquet

val parquetDF = spark.read.parquet(“/tmp/parquet_data”)

parquetDF.show(10)

19. Se verifica que los archivos se hayan subido al parquet de S3

20. Se debe finalizar el cluster para que no se siga cobrando.

Autores:

  • Michelle Herrera
  • Cristian Moyano
  • Lui Moyano
  • Edwin Rodríguez

Conoce más: bootcampai.org/aws-big-data

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store