Salta el contingut

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:

  1. 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.
  2. Identifica, per a la teva arquitectura triada, quina eina faràs servir a la capa d'ingesta i per què (NiFi, Kafka, o ambdues).
  3. 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:

  1. Escolti events HTTP (ListenHTTP) simulant les visites de producte d'un usuari (envia'ls amb curl --data).
  2. Extregui els atributs rellevants de cada event (ExtractText / EvaluateJsonPath).
  3. Distingeixi (RouteOnContent o RouteOnAttribute) entre events de "visita" i events "d'afegir al carretó".
  4. Fusioni els events de cada tipus cada 30 segons (MergeContent) per a reduir el nombre de fitxers finals.
  5. 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