Pràctica PR507501: Disseny d'arquitectura amb NiFi
Informació de la pràctica
| Camp | Detall |
|---|---|
| Codi | PR507501 |
| Mòdul | 5075 — Big Data Aplicat |
| RA | RA1 — Arquitectura i emmagatzematge distribuït |
| Durada estimada | 3-4 hores |
| Modalitat | Individual |
| Lliurament | Informe .md/.pdf amb captures de pantalla |
| Qualificació | Sobre 10 punts, amb rúbrica |
Objectius
- Justificar l'elecció d'una arquitectura Big Data (Lambda, Kappa o Delta) per a un cas d'ús donat.
- Desplegar Apache NiFi amb Docker i dissenyar un flux d'ingestió real.
- Implementar el flux dissenyat sobre l'arquitectura triada.
- Documentar les decisions preses aplicant els principis del Well-Architected Framework.
Escenari
TecnoShop és una botiga en línia que vol començar a ingerir, en temps real, els events de navegació dels seus usuaris (visites a producte, afegits al carretó) des d'un endpoint HTTP, per emmagatzemar-los en brut i alimentar, més endavant, un model de recomanació.
Part 1: Disseny de l'arquitectura
Abans de tocar cap eina, respon per escrit:
- Donat que el model de recomanació necessitarà tant l'històric complet (per a entrenar-se) com les dades més recents (per a recomanacions gairebé immediates), quina arquitectura (Lambda, Kappa o Delta) triaries? Justifica-ho aplicant el principi SCV.
- Identifica, per a la teva arquitectura triada, quina eina faràs servir a la capa d'ingesta i per què (NiFi, Kafka, o ambdues).
- Aplica el Well-Architected Framework: per a cada un dels 5 pilars, indica una decisió concreta de disseny per a aquest cas (per exemple, quin factor de replicació triaries a la capa d'emmagatzematge, o com automatitzaries la recuperació davant d'una fallada).
Part 2: Desplegament de NiFi
docker run --name nifi-nom-cognom -p 8443:8443 -d \
-e SINGLE_USER_CREDENTIALS_USERNAME=nifi \
-e SINGLE_USER_CREDENTIALS_PASSWORD=nifinifinifi \
-e NIFI_JVM_HEAP_MAX=2g \
apache/nifi:latest
Accedeix a https://localhost:8443/nifi i comprova que la interfície carrega correctament.
Part 3: Disseny del flux d'ingestió
Dissenya un flux NiFi que:
- Escolti events HTTP (
ListenHTTP) simulant les visites de producte d'un usuari (envia'ls ambcurl --data). - Extregui els atributs rellevants de cada event (
ExtractText/EvaluateJsonPath). - Distingeixi (
RouteOnContentoRouteOnAttribute) entre events de "visita" i events "d'afegir al carretó". - Fusioni els events de cada tipus cada 30 segons (
MergeContent) per a reduir el nombre de fitxers finals. - Persisteixi el resultat en un directori local (
PutFile) simulant la capa d'emmagatzematge en brut (Bronze).
Consulta Apache NiFi per als detalls de configuració de cada processador.
Part 4: Verificació
- Comprova amb el Data Provenance de NiFi el llinatge complet d'almenys un event, des que arriba per HTTP fins que es persisteix a disc.
- Fes una captura del flux complet i una del contingut d'un fitxer de sortida.
Entrega
- Respostes de la Part 1 (justificació d'arquitectura i aplicació del WAF).
- Captura del flux NiFi complet, amb tots els processadors connectats i sense advertiments.
- Captura del Data Provenance d'un event.
- Fitxer de sortida amb els events fusionats.
- Reflexió final: quines limitacions té NiFi per a aquest cas d'ús si el volum d'events creixés 1000x? Quina eina addicional (vegeu Apache Kafka) hi afegiries?
Rúbrica: Rúbrica RA1