Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2. Herramientas a utilizar
• Vagrant
• VirtualBox
• Apache Spark
3. Introducción
2. Scripts de configuración
cd hadoop_spark
vagrant up
5. Desarrollo de la Práctica
Ingrese al master
vagrant@nodemaster:~$ su hadoop
Password:
hadoop@nodemaster:/home/vagrant$ cd /home/hadoop/
Iniciar HDFS y Yarn del Cluster (esto lo debe hacer cada vez que reinicie la
maquina)
hadoop@nodemaster:~$ start-dfs.sh
hadoop@nodemaster:~$ start-yarn.sh
Verifique el dashboard de Hadoop en http://192.168.200.3:8088/cluster
src/conteoVehicular.py
import cv2
import numpy as np
import time
import uuid
import math
import os
import hdfs
from hdfs.client import InsecureClient
import pyspark
from pyspark import SparkContext
conf = pyspark.SparkConf()
master_url = 'http://192.168.200.3:9870'
min_contour_width = 40
min_contour_height = 40
offset = 2
line_height = 240
matches = []
def remove_files():
dir_name= "/tmp/"
extensions = [".mov", ".avi"]
test = os.listdir(dir_name)
for e in extensions:
for item in test:
if item.endswith(e):
os.remove(os.path.join(dir_name,item))
cx = x + x1
cy = y + y1
return cx, cy
cars = 0
print("Process image")
client = InsecureClient(master_url, user='hadoop')
random_ = str(uuid.uuid1())
random = '/tmp/ori-{}.mov'.format(random_)
client.download(path, random)
save = '/tmp/rs-{}.avi'.format(random_)
cap.set(3, 1920)
cap.set(4, 1080)
if cap.isOpened():
ret, frame1 = cap.read()
else:
ret = False
ret, frame1 = cap.read()
ret, frame2 = cap.read()
while ret:
d = cv2.absdiff(frame1, frame2)
grey = cv2.cvtColor(d, cv2.COLOR_BGR2GRAY)
if not contour_valid:
continue
cv2.rectangle(frame1, (x-10, y-10), (x+w+10, y+h+10), (255, 0, 0),
2)
out.write(frame1)
out.write(th)
if cv2.waitKey(1) == 27:
break
frame1 = frame2
ret, frame2 = cap.read()
cv2.destroyAllWindows()
cap.release()
return cars
def main():
sc = SparkContext(appName="hadoop")
client = InsecureClient(master_url, user='hadoop')
paths = client.list('vids')
filepaths = ['vids/{}'.format(x) for x in paths]
print("filepaths", filepaths)
results = sc.parallelize(filepaths, 2).map(process_image).sum()
print(results, type(results))
if __name__ == "__main__":
main()
Primero, se importan los módulos necesarios: cv2 para OpenCV, numpy para
matrices y operaciones matemáticas, time para el temporizador, uuid para
generar identificadores únicos, math para funciones matemáticas, os para
operaciones del sistema de archivos, hdfs para acceder a archivos en HDFS y
pyspark para la programación de Spark.
Ejecutar la aplicación
hadoop@nodemaster:~$ cd /vagrant/media/
#!/bin/bash
hadoop@nodemaster:~$ cd /vagrant/src
hadoop@nodemaster:/vagrant/src$ ./run_traffic.sh
…
3/03/06 19:30:09 INFO Client:
client token: N/A
diagnostics: N/A
ApplicationMaster host: node1
ApplicationMaster RPC port: 38143
queue: default
start time: 1678130942685
final status: SUCCEEDED
tracking URL:
http://nodemaster:8088/proxy/application_1678119627375_0002/
user: hadoop
23/03/06 19:30:09 INFO ShutdownHookManager: Shutdown hook called
23/03/06 19:30:09 INFO ShutdownHookManager: Deleting directory /tmp/spark-
82fab796-aa63-47f5-b63e-0c15fbcb4403
23/03/06 19:30:09 INFO ShutdownHookManager: Deleting directory /tmp/spark-
a52affff-7ef1-4982-886c-e5225a7989f6
real 1m42.391s
user 0m17.292s
sys 0m9.308s
ssh node1
vagrant@node1:~$ cd /tmp/
vagrant@node1:/tmp$ ls
hadoop-hadoop
hadoop-hadoop-datanode.pid
hadoop-hadoop-nodemanager.pid
hsperfdata_hadoop
jetty-0_0_0_0-8042-hadoop-yarn-common-3_3_4_jar-_-any-4596329207355425483
jetty-localhost-39917-datanode-_-any-9221542983047067273
ori-94cae7c4-bc5c-11ed-9de6-3df2bbc1dd7b.mov
ori-97772cee-bc5c-11ed-9de6-3df2bbc1dd7b.mov
rs-94cae7c4-bc5c-11ed-9de6-3df2bbc1dd7b.avi
rs-97772cee-bc5c-11ed-9de6-3df2bbc1dd7b.avi
snap-private-tmp
systemd-private-0417b82a05344612868b05e0f41e1d1c-ModemManager.service-iHxBrI
systemd-private-0417b82a05344612868b05e0f41e1d1c-systemd-logind.service-Cyc8DF
systemd-private-0417b82a05344612868b05e0f41e1d1c-systemd-resolved.service-
kl9QFA
El nombre del video original tendra un prefijo "ori" y el del resultante un prefijo
"rs".
Por ejemplo,
ori-94cae7c4-bc5c-11ed-9de6-3df2bbc1dd7b.mov
ori-97772cee-bc5c-11ed-9de6-3df2bbc1dd7b.mov
rs-94cae7c4-bc5c-11ed-9de6-3df2bbc1dd7b.avi
rs-97772cee-bc5c-11ed-9de6-3df2bbc1dd7b.avi
Para extraer estos videos los puede copiar al directorio sincronizado de Vagrant
Por ejemplo:
Ejemplo:
7. Ejercicio
8. Entregables y Evaluación
- Sustentación de la práctica
9. Bonificación