Skip to content

Ejercicios

Pablo Recabal edited this page Oct 28, 2016 · 25 revisions

##1. Operaciones Básicas

###1.1. Puesta en marcha del sistema

  • Inicio de Zookeeper (editar configuración en config/zookeeper.properties y luego iniciar con bin/zookeeper-server-start.sh config/zookeeper.properties)
  • Inicio de Broker Kafka (editar configuración en config/server.properties y luego iniciar con bin/kafka-server-start.sh config/server.properties)

###1.2. Producir y consumir mensajes

  • Crear tópico X (usar kafka-topics.sh con la opción --create --topic <nombre-topico> --zookeeper <zookeeper-url:zkport> --replication-factor 1 --partitions 1)
  • Producir mensajes a X (usar kafka-console-producer.sh --broker-list <broker1:port, broker2:port ... > --topic <topic-name>)
  • Consumir mensajes desde X (usar kafka-console-consumer.sh --zookeeper <zookeeper-url:zkport> --topic <topic-name>)
  • Consumir desde el comienzo de X (--from-beginning)
  • Producir mensajes a tópico Y (sin crearlo anteriormente) ¿Qué ocurre?
  • Inspeccionar tópicos (usar kafka-topics.sh con la opción --describe o --list)
  • Configurar auto.create.topics.enable=false en las propiedades del broker
  • Producir mensajes a tópico Z (sin crearlo anteriormente). ¿Qué ocurre?

###1.3. Replicación de tópicos

  • Crear topico replicado y con dos particiones (--replication-factor 2 --partitions 2)
  • Inspeccionar liderazgo (kafka-topics.sh --zookeeper <zkurl:port> --describe --topic <topic-name>)
  • Bajar al lider (kill -9 <process number>)
  • Re-inspeccionar liderazgo
  • Reiniciar broker bajado en paso anterior
  • Rebalancear liderazgo (./kafka-preferred-replica-election.sh --zookeeper <zkurl:port>)

##2. Administración

###2.1 Eliminación de tópicos

  • Borrar tópicos (usar kafka-topics.sh con la opción --delete)
  • Inspeccionar tópicos
  • Borrado manual (borrar en zookeeper usando zookeeper-shell.sh, y luego borrar los directorios donde se guardaban los logs de Kafka para dicho topico)
  • Configuración para permitir borrado automático (delete.topic.enable=true)
  • Crear y borrar tópico, y ver qué pasa.

###2.2 Modificación de tópicos (override al servidor)

  • modificar particiones: bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic <topic_name> --partitions 10

  • consultar propiedades bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-name <topic-name> --entity-type topics

  • modificar propiedades bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic <topic_name> --config x=y o bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-name <topic-name> --entity-type topics --add-config retention.ms=120000

  • eliminar propiedades bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic <topic_name> --delete-config x

###2.3 Políticas de retención

  • Crear y configurar tópico A con retention.bytes=150
  • Crear y configurar tópico B con retention.ms=120000
  • Crear y configurar tópico C con ambas opciones
  • Configurar además log.retention.check.interval.ms=30000 (para todos los tópicos, puede ser a nivel del broker)
  • Reiniciar broker con nueva configuración
  • Producir y consumir mensajes a los tres tópicos. En paralelo, inspeccionar log de cada tópico (en /tmp/kafka-logs/ y ver qué ocurre)

###2.4 Balanceo del liderazgo

  • Crear 5 brokers (tmux)
  • Crear 2 tópicos, con 10 particiones c/u, factor de replicación 4.
  • Inspeccionar el liderazgo
  • Bajar un broker e Inspeccionar el liderazgo
  • Levantar el broker bajado e inspeccionar el liderazgo
  • Ejecutar kafka-preferred-replica-election.sh e inspeccionar el liderazgo ¿Qué conclusiones pueden sacar?
  • Repetir el ejercicio configurando 'auto.leader.rebalance.enable' en la configuración del broker.

###2.5 Modificar cluster

  • Aumento de particiones

###2.6 Monitoreo

  • alt A. Scripts incluidos en kafka.

    Consultar grupos activos: bin/kafka-consumer-groups.sh --list --zookeeper localhost:2181

    Consultar posición del consumidor: bin/kafka-consumer-groups.sh --describe --group <group_id> --zookeeper localhost:2181

  • alt B. [Kafka Manager] (https://github.com/yahoo/kafka-manager).

    git clone https://github.com/yahoo/kafka-manager.git

    cd kafka-manager

    git fetch origin pull/282/head:0.10.0

    git checkout 0.10.0

    modificar archivo kafka-manager/conf/application.conf de modo que diga:

    kafka-manager.zkhosts="localhost:2181"

    compilar:

    sbt clean dist

    cd /home/ubuntu/kafka-manager/target/universal/

    sudo mv kafka-manager-1.3.1.8.zip /usr/local/

    (instalar zip si el sistema no lo tiene:)

    sudo apt-get install zip

    unzip /usr/local/kafka-manager-1.3.1.8.zip -d .

    sudo mv ./kafka-manager-* /usr/local/kafka-manager

    nano ~/.profile

    Agregar la siguiente linea abajo:

    …

    …

    export KAFKA_MANAGER_HOME=/usr/local/kafka-manager

    finalmente, ejecutar los siguientes comandos:

    source ~/.profile

    $KAFKA_MANAGER_HOME/bin/kafka-manager -Dhttp.port=9001

  • alt C. Kafka Offset Monitor.

##3. API de Productor ###3.1. Productor Basico

  • Ejecutar productor fire-and-forget y kakfa-console-consumer.sh
  • Ejecutar con broker abajo
  • Repetir prueba con productor síncrono.
  • Repetir prueba con configración de acks=0 y acks=all

###3.2. Productores Avanzados

  • Ejecutar productor con multiples particiones (tmux)
  • Prueba con skew de datos
  • Prueba con serialización

##4. API de Consumidor ###4.1. Consumidor Básico

  • Ejecutar consumidor automatico
  • Configurar enable.auto.commit=false y ejecutar consumidor con commitSync()
  • Repetir prueba con commitAsync( callback() )

###4.1. Consumidores Avanzados

  • Crear grupos de consumidores en threads
  • Prueba con deserialización

Clone this wiki locally