Voici quelques fonctions rapides que j'utilise lorsque j'écris des scripts bash pour charger des données Kafka dans des environnements de démonstration. Dans cet exemple, j'utilise HDP sans sécurité, mais il est facilement modifiable pour d'autres environnements et est destiné à être rapide et fonctionnel plutôt que particulièrement robuste.
La première récupère l'adresse du premier noeud ZooKeeper dans la configuration :
ZKS1=$(cat /usr/hdp/current/zookeeper-client/conf/zoo.cfg | grep server.1)
[[ ${ZKS1} =~ server.1=(.*?):[0-9]*:[0-9]* ]]
export ZKADDR=${BASH_REMATCH[1]}:2181
echo "using ZooKeeper Server $ZKADDR"
Le second récupère les identifiants des courtiers auprès de ZooKeeper :
echo "Fetching list of Kafka Brokers"
export BROKERIDS=$(/usr/hdp/current/kafka-broker/bin/zookeeper-shell.sh ${ZKADDR} <<< 'ls /brokers/ids' | tail -1)
export BROKERIDS=${BROKERIDS//[!0-9 ]/}
echo "Found Kafka Broker IDS: $BROKERIDS"
Le troisième analyse à nouveau ZooKeeper pour récupérer la liste des courtiers Kafka Host:port prêts à être utilisés dans le client en ligne de commande :
unset BROKERS
for i in $BROKERIDS
do
DETAIL=$(/usr/hdp/current/kafka-broker/bin/zookeeper-shell.sh ${ZKADDR} <<< "get /brokers/ids/$i")
[[ $DETAIL =~ PLAINTEXT:\/\/(.*?)\"\] ]]
if [ -z ${BROKERS+x} ]; then BROKERS=${BASH_REMATCH[1]}; else
BROKERS="${BROKERS},${BASH_REMATCH[1]}"; fi
done
echo "Found Brokerlist: $BROKERS"
1 votes
Je sais qu'à l'intérieur du zookeper-shell script dans le dossier bin de Kafka, vous pouvez appeler
ls /brokers/ids
pour obtenir les identifiants des courtiers actuellement en activité. Je ne sais pas comment passer cela en paramètre au script cependant...