Un dimensionamiento preciso de los recursos antes de crear el clúster evita tanto la asignación insuficiente (que provoca degradación del rendimiento bajo carga) como la sobreasignación (que genera costos innecesarios). Este tema proporciona fórmulas de dimensionamiento y especificaciones recomendadas para cada grupo de nodos en un clúster de E-MapReduce (EMR) que ejecuta Kafka. Tras la estimación inicial, valide con kafka-producer-perf-test y kafka-consumer-perf-test, y luego utilice la función de escalado horizontal para ajustar las configuraciones según cambie su carga de trabajo.
El dimensionamiento de un clúster de Kafka depende del tráfico máximo de mensajes, el tamaño promedio de mensaje, la cantidad de particiones, los factores de replicación y la cantidad de clientes. Recopile métricas reales de negocio antes de aplicar las fórmulas a continuación.
Descripción general de grupos de nodos
La siguiente tabla resume las especificaciones recomendadas para cada grupo de nodos. En las secciones posteriores encontrará guías detalladas de dimensionamiento y fórmulas.
|
Grupo de nodos |
Función |
Nodos |
CPU |
Memoria |
Disco del sistema |
Disco de datos |
|
Master |
ZooKeeper + componentes del ecosistema |
3 |
4 núcleos |
8 GiB |
80 GiB |
Disco en la nube de 120 GiB |
|
Core |
Broker de Kafka |
Consulte Number of brokers |
16 núcleos |
64 GiB |
80 GiB |
4 discos en la nube (el tamaño varía) |
|
Task (opcional) |
Kafka Connect |
>2 |
>8 núcleos |
Según el conector |
— |
Disco en la nube de >80 GiB |
Grupo de nodos Master (ZooKeeper)
El grupo de nodos master ejecuta ZooKeeper y los componentes del ecosistema de Kafka: Kafka Manager, Schema Registry y REST Proxy.
Configure tres nodos master con las siguientes especificaciones:
|
Recurso |
Valor recomendado |
|
Nodos |
3 |
|
CPU |
4 núcleos |
|
Memoria |
8 GiB |
|
Relación CPU-memoria |
1:2 |
|
Disco del sistema |
80 GiB |
|
Disco de datos |
Disco en la nube de 120 GiB |
Grupo de nodos Core (broker de Kafka)
Parámetros de negocio
Recopile los siguientes parámetros de negocio antes de calcular la cantidad de brokers y el tamaño del disco:
|
Parámetro |
Descripción |
Predeterminado |
|
Factor de distribución |
Cantidad de veces que los nodos descendientes consumen datos de negocio, excluida la replicación dentro del clúster |
— |
|
Tráfico entrante máximo |
Rendimiento máximo de datos de negocio (MB/s) |
— |
|
Tráfico entrante promedio |
Rendimiento promedio de datos de negocio (MB/s) |
— |
|
Período de retención de datos |
Tiempo durante el cual se conservan los datos (días) |
7 días |
|
Factor de replicación de particiones |
Cantidad de réplicas por partición |
3 |
El tráfico máximo suele ser un orden de magnitud superior al tráfico promedio. Establezca el valor de tráfico entrante máximo en consecuencia y mantenga suficiente capacidad redundante para que el clúster pueda sostener el servicio bajo cargas extremas.
Utilice estos parámetros para obtener las siguientes métricas del clúster:
|
Métrica |
Fórmula |
|
Tráfico total máximo de escritura |
|
|
Tráfico total máximo de lectura |
|
|
Capacidad total de almacenamiento |
|
Especificaciones recomendadas para los nodos
Configure los nodos core con las siguientes especificaciones:
|
Recurso |
Valor recomendado |
|
CPU |
16 núcleos |
|
Memoria |
64 GiB |
|
Relación CPU-memoria |
1:4 |
|
Disco del sistema |
80 GiB |
|
Discos de datos |
4 discos en la nube (tamaño calculado a continuación) |
Tipo de disco. Utilice discos en la nube como discos de datos para evitar la carga operativa y de mantenimiento (O&M) que generan las fallas de discos físicos. Esto mejora la disponibilidad del servicio y reduce los costos laborales de O&M.
Después de seleccionar el tipo y la cantidad de discos, calcule el rendimiento total de E/S de disco del nodo. Seleccione una tarjeta de interfaz de red (NIC) con un ancho de banda mayor o igual al rendimiento total de E/S de disco.
Cantidad de brokers
En condiciones ideales, el límite de rendimiento de un broker de Kafka está determinado por su rendimiento de E/S de disco o por el ancho de banda de la NIC. Siga estos pasos para calcular la cantidad necesaria de brokers.
Paso 1: Calcular el rendimiento de disco por nodo.
Disk throughput per node = Throughput per disk x Number of data disks
Como referencia: el rendimiento máximo de un SSD empresarial PL1 (ESSD) es de 350 MB/s. Para discos locales, utilice la mitad del valor teórico como rendimiento efectivo, generalmente 50 MB/s.
Para consultar valores detallados de rendimiento de discos, consulte Block storage performance.
Paso 2: Calcular la cantidad de brokers según el tráfico.
Con un factor de replicación de 3, utilice como mínimo 4 brokers para que sea posible crear una partición con 3 réplicas incluso si un broker no está disponible temporalmente. Mantenga un 50 % de capacidad redundante:
Number of brokers = Max(4, (Total peak read traffic + Total peak write traffic) / Disk throughput per node / 50%)
Paso 3: Verificar los límites de réplicas de particiones.
Si la cantidad total de réplicas de particiones es elevada, realice una verificación cruzada mediante la fórmula basada en particiones:
Number of brokers = Max(4, Total number of partitions x Partition replication factor / 2,000)
Límites de réplicas de particiones:
|
Límite |
Valor |
|
Máximo recomendado de réplicas por broker |
2,000 |
|
Máximo absoluto de réplicas por broker |
4,000 |
|
Máximo absoluto de réplicas por clúster |
200,000 |
Paso 4: Calcular el tamaño de disco por broker.
Disk size per broker = Total storage capacity / Number of brokers / Number of data disks per node / 50%
Escalado posterior a la creación del clúster
La reserva de redundancia del 50 % incluida en las fórmulas de dimensionamiento mantiene al clúster por debajo del umbral de carga where comienza la limitación. Después de crear el clúster, supervise la utilización de recursos y utilice la función de escalado horizontal para ajustar las configuraciones según el uso real de recursos.
Grupo de nodos Task (Kafka Connect) (opcional)
El grupo de nodos task es opcional y ejecuta Kafka Connect. Se puede redimensionar en cualquier momento después de la creación del clúster según el uso real de recursos.
Configure los nodos task con las siguientes especificaciones:
|
Recurso |
Valor recomendado |
|
Nodos |
>2 (para alta disponibilidad) |
|
CPU |
>8 núcleos por nodo; aumente según la utilización de CPU del conector |
|
Memoria |
Según el tipo de conector y el uso de memoria |
|
Relación CPU-memoria |
1:2 o 1:4 |
|
Disco de datos |
Disco en la nube de >80 GiB |