Apache Kafka C8
Apache Kafka C8
Apache Kafka C8
Hay una serie de herramientas o utilidades proporcionadas por Kafka 0.8 para administrar
características como la replicación y la creación de temas. Echemos un vistazo a estas
herramientas.
Por defecto, Kafka crea el topic con un número de particiones y un factor de replicación por
defecto (el valor por defecto es 1 para ambos). Pero en los escenarios de la vida real, podemos
necesitar definir el número de particiones y los factores de replicación más de una vez.
Kafka también proporciona la utilidad para encontrar la lista de temas dentro del servidor
Kafka. La herramienta List Topic proporciona el listado de temas y la información sobre sus
particiones, réplicas o líderes consultando a ZooKeeper.
Al ejecutar el comando anterior, deberías obtener una salida como la que se muestra en la
siguiente captura de pantalla:
La salida de la consola anterior muestra que podemos obtener la información sobre el tema y
las particiones que tienen datos replicados. La salida de la captura de pantalla anterior se
puede explicar como sigue:
Nótese que kafkatopic tiene dos particiones (particiones 0 y 1) con tres réplicas, mientras que
othertopic sólo tiene una partición con dos réplicas.
Para una mejor gestión de las funciones de replicación, Kafka proporciona herramientas para
seleccionar un líder de réplica y controlar el cierre de los corredores.
Como hemos aprendido del diseño de Kafka, en la replicación, múltiples particiones pueden
tener datos replicados, y de estas múltiples réplicas, una réplica actúa como líder, y el resto de
las réplicas actúan como seguidores sincronizados de la réplica líder. En caso de que una
réplica principal no esté disponible, tal vez debido al cierre del broker, es necesario seleccionar
una nueva réplica principal.
En escenarios como el cierre del broker de Kafka por actividad de mantenimiento, la elección
del nuevo líder se realiza de forma secuencial, y esto provoca importantes operaciones de
lectura y escritura en ZooKeeper. En cualquier clúster grande con muchas topicspartitions, la
elección secuencial de las réplicas líderes provoca un retraso en la disponibilidad.
Para garantizar una alta disponibilidad, Kafka proporciona herramientas para un cierre
controlado de los brokers de Kafka. Si el broker tiene la partición principal apagada, esta
herramienta transfiere el liderazgo de forma proactiva a otras réplicas en sincronía en otro
broker. Si no hay ninguna réplica sincronizada disponible, la herramienta no cerrará el broker
para garantizar que no se pierdan datos.
El host de ZooKeeper y el ID del broker que hay que apagar son parámetros obligatorios.
También podemos especificar el número de reintentos (--num.retries, valor por defecto 0) y el
intervalo de reintentos en milisegundos (--retry.interval.ms, valor por defecto 1000) con una
herramienta de apagado controlado.
A continuación, en cualquier clúster Kafka grande con muchos brokers y temas, Kafka se
asegura de que las réplicas principales para las particiones se distribuyan equitativamente
entre los brokers. Sin embargo, en caso de apagado (también controlado) o de fallo del broker,
esta distribución equitativa de las réplicas principales puede desequilibrarse dentro del clúster.
Kafka proporciona una herramienta que se utiliza para mantener la distribución equilibrada de
las réplicas principales dentro del cluster de Kafka entre los brokers disponibles.
El siguiente es el formato para utilizar esta herramienta:
[root@localhost kafka-0.8]# bin/kafka-preferred-replica-election.sh
--zookeeper <zookeeper_host:port/namespace>
Esta herramienta recupera todas las particiones de temas para el clúster desde ZooKeeper.
También podemos proporcionar la lista de particiones de temas en formato de archivo JSON.
Funciona de forma asíncrona para actualizar la ruta de ZooKeeper para mover el líder de las
particiones y crear una distribución equilibrada.
Para obtener una explicación detallada sobre las herramientas de Kafka y su uso, consulte
https:/cwiki.apache.orgconfluencedisplay KAFKAReplication+tools.
Camus (https:/github.comlinkedincamus) es otro arte del trabajo realizado por LinkedIn, que
proporciona una tubería de Kafka a HDFS. Bajo este proyecto, un solo trabajo MapReduce
realiza los siguientes pasos para cargar los datos a HDFS de forma distribuida:
1. Como primer paso, descubre los últimos temas y offsets de partición desde ZooKeeper.
2. Cada tarea en el trabajo MapReduce obtiene los eventos del broker Kafka y consigna los
datos extraídos junto con el recuento de auditoría en las carpetas de salida.
3. Después de la finalización del trabajo, las compensaciones finales se escriben en HDFS, que
pueden ser consumidas por trabajos MapReduce posteriores.
Para obtener una lista detallada de las herramientas del ecosistema Kafka, consulte
https:/cwiki.apache.orgconfluencedisplay KAFKAEcosystem.
Se proporcionan algunos scripts más para extraer las estadísticas del servidor Kafka y de
ZooKeeper en formato CSV. Una vez producidos los archivos CSV, se puede crear el script de R
para producir las imágenes de los gráficos.
Para obtener información detallada sobre cómo realizar las pruebas de rendimiento de Kafka,
consulte https:/cwiki.apache.orgconfluence displayKAFKAPerformance+testing.
Resumen
En este capítulo, hemos añadido algo más de información sobre Kafka, como sus herramientas
de administrador, su integración y los clientes Kafka no-Java.
Durante este completo viaje por Apache Kafka, hemos tocado muchos datos importantes
sobre Kafka. Hemos aprendido la razón por la que se desarrolló Kafka, su instalación, y su
soporte para diferentes tipos de clusters. También hemos explorado el enfoque de diseño de
Kafka, y hemos escrito algunos productores y consumidores básicos.