Volver al blog
Apache NiFi12 min de lectura

Apache NiFi, de cero a un flujo resiliente con Kafka

Una guía de campo para entender el modelo mental de NiFi, levantar una instancia segura, construir un dataflow trazable y conectarlo con Kafka sin perder control operativo.

Publicado el 20 ago 2026Guía práctica · NiFi 2 / Kafka 4
dataflow.json
01 HTTP
02 NiFi
03 Kafka
ingestroutestream

01 · Modelo mental

Primero, el modelo mental correcto

NiFi no es una colección de scripts conectados: es un motor de flujo. Cada pieza de datos viaja como un FlowFile, con contenido y atributos, mientras los procesadores la reciben, transforman, enrutan o entregan.

Las conexiones funcionan como colas explícitas. Esa separación permite ver presión, errores y rendimiento en el lienzo, y desacopla la velocidad de quien produce de la velocidad de quien consume.

01

FlowFile

Contenido más metadatos que acompañan a una unidad de datos durante todo su recorrido.

02

Processor

Unidad de trabajo que ingiere, transforma, enruta o publica uno o varios FlowFiles.

03

Connection

Cola entre procesadores con prioridades, límites y back pressure configurables.

Diseña para observar, no solo para mover

Un flujo sano hace visibles sus colas, relaciones de error y puntos de reintento. Si solo modelas el camino feliz, la operación terminará ocurriendo fuera de NiFi.

02 · Primer arranque

Levanta NiFi y asegura el acceso

Después de extraer la distribución, usa el script del sistema operativo para iniciar NiFi. Esperar la inicialización evita interpretar un arranque todavía incompleto como una falla.

servicio · nifi
# Linux / macOS
bin/nifi.sh start --wait-for-init 120
bin/nifi.sh status

# Windows (PowerShell)
.\bin\nifi.cmd start
.\bin\nifi.cmd status

La instalación genera credenciales iniciales en el log. Para un entorno local controlado, puedes reemplazarlas explícitamente antes de abrir https://localhost:8443/nifi.

seguridad · credenciales
./bin/nifi.sh set-single-user-credentials nifi-admin 'use-a-strong-password'

Local no significa sin seguridad

Mantén HTTPS, usa una contraseña fuerte y nunca reutilices las credenciales del ejemplo. En producción, configura certificados confiables, autenticación y autorización antes de exponer la interfaz.

03 · Diseñar el flujo

Construye un flujo que explique su intención

Para un ingreso HTTP que termina en Kafka, mantén cada responsabilidad visible. Este recorrido mínimo separa recepción, validación, normalización y entrega.

  1. 1

    Ingiere

    Usa ListenHTTP o InvokeHTTP según NiFi reciba una solicitud o consulte una fuente externa.

  2. 2

    Valida

    Verifica esquema, tamaño y campos obligatorios; enruta lo inválido a una relación dedicada.

  3. 3

    Normaliza

    Trabaja con Record Readers y Writers para transformar JSON, CSV o Avro sin lógica accidental.

  4. 4

    Entrega

    Publica con PublishKafka y conserva una ruta de failure observable, limitada y recuperable.

NiFi Expression Language

${filename:matches(".*\.json"):and(${fileSize:lt(10485760)})}

Expression Language opera sobre atributos del FlowFile. Úsalo para decisiones pequeñas y legibles; para datos estructurados, prefiere RecordPath y procesadores orientados a records.

04 · Apache Kafka

Kafka como columna de eventos, NiFi como orquestador

Kafka almacena eventos en topics y desacopla productores de consumidores. NiFi aporta el borde visual: ingesta, transformación, enrutamiento, control de presión y trazabilidad antes o después del broker.

Para una prueba local, inicia el broker oficial y crea un topic. Después configura Kafka3ConnectionService y referencia ese servicio desde PublishKafka o ConsumeKafka.

docker · kafka
docker pull apache/kafka:4.3.1
docker run --name kafka-local -p 9092:9092 -d apache/kafka:4.3.1
kafka · topic
bin/kafka-topics.sh --create \
  --topic nifi-events \
  --bootstrap-server localhost:9092

bin/kafka-topics.sh --describe \
  --topic nifi-events \
  --bootstrap-server localhost:9092
PropiedadValor de ejemplo
Kafka Connection ServiceKafka3ConnectionService
Topicsnifi-events
Group IDnifi-consumers
Processing StrategyRECORD

Define la semántica de entrega

Alinea acks, commits de offsets, reintentos y rutas de failure con el nivel de duplicación o pérdida tolerable. Exactly-once no aparece por conectar dos cajas: exige una estrategia completa.

05 · Producción

Antes de llamarlo producción

La confiabilidad de un dataflow depende menos de cuántos procesadores tiene y más de qué ocurre cuando una dependencia se ralentiza, un registro no valida o un nodo se reinicia.

Back pressure consciente

Fija umbrales por objetos y tamaño para que una cola proteja al sistema sin ocultar saturación.

Provenance útil

Conserva la trazabilidad el tiempo necesario para diagnosticar, auditar y reconstruir el recorrido de un FlowFile.

Configuración por contexto

Extrae endpoints y valores operativos a Parameter Contexts; marca secretos como sensibles.

Fallos con destino

Enruta, limita y alerta los errores. No auto-termines relaciones que puedan representar pérdida de datos.

El mejor lienzo es el que se puede operar

Empieza con pocos procesadores, nombres que expliquen intención y relaciones de error visibles. Agrega Kafka cuando necesites desacoplamiento y retención de eventos, no para esconder un flujo que todavía no entiendes.

Fuentes de verdad

Profundiza en la documentación oficial

Estas referencias llevan directamente a Apache NiFi y Apache Kafka. Las versiones evolucionan; valida allí propiedades, requisitos y comportamiento antes de operar un entorno real.