Bonjour
Dans cet article, nous allons installer Apache Kafka, Apache Spark, Zookeeper, Spark-shell sur la plateforme EC2 AWS (Amazon Web Services) Ă la maison et apprendre Ă tout utiliser.
Présentation d'Amazon Web Services
1.1. Vous devrez vous inscrire sur
aws.amazon.com/console . Saisissez un nom et mémorisez le mot de passe.
1.2. Configurez les instances de noeud pour les services Zookeeper et Kafka.
- Sélectionnez "Services-> EC2" dans le menu. Ensuite, sélectionnez la version du système d'exploitation de l'image de la machine virtuelle, sélectionnez Ubuntu Server 16.04 LTS (HVM), type de volume SSD, cliquez sur «Sélectionner». Nous procédons à la configuration de l'instance de serveur: tapez «t3.medium» avec les paramètres 2vCPU, 4 Go de mémoire, usage général Cliquez sur "Suivant: Configuration des détails de l'instance".
- Ajoutez le nombre d'instances 1, cliquez sur "Suivant: Ajouter du stockage"
- Nous acceptons la valeur par défaut pour la taille du disque de 8 Go et changeons le type en magnétique (dans les paramètres de production en fonction du volume de données et du SSD haute performance)
- Dans la section "Tag Instances" pour "Nom", entrez le nom de l'instance du nœud "Home1" (où 1 n'est qu'un numéro de série) et cliquez sur "Suivant: ..."
- Dans la section "Configurer les groupes de sécurité", sélectionnez l'option "Utiliser le groupe de sécurité existant" en sélectionnant le nom du groupe de sécurité ("Spark_Kafka_Zoo_Project") et définissez les règles pour le trafic entrant. Cliquez sur "Suivant: ..."
- Faites défiler l'écran Review pour vérifier vos entrées et lancer Launch.
- Pour vous connecter aux nœuds du cluster, vous devez créer (dans notre cas, utiliser l'existant) une paire de clés publiques pour l'identification et l'autorisation. Pour ce faire, sélectionnez le type d'opération «Utiliser la paire existante» dans la liste.
Création de clé
- Téléchargez Putty pour le client ou utilisez la connexion SSH depuis le terminal.
- Le fichier de clé .pem utilise l'ancien format pour plus de commodité, nous le convertissons au format ppk utilisé par Putty. Pour ce faire, exécutez l'utilitaire PuTTYgen, chargez la clé dans l'ancien format .pem dans l'utilitaire. Nous convertissons la clé et l'enregistrons (Enregistrer la clé privée) pour une utilisation ultérieure dans le dossier d'accueil avec l'extension .ppk.
Lancement du cluster
1.3. Pour plus de commodité, renommez les nœuds de cluster en notation Node01-04. Pour vous connecter aux nœuds de cluster à partir de l'ordinateur local via SSH, vous devez déterminer l'adresse IP du nœud et son nom DNS public / privé, sélectionner chacun des nœuds de cluster un par un, et pour l'instance sélectionnée, noter son nom DNS public / privé pour la connexion via SSH et pour l'installation Logiciel dans le fichier texte HadoopAdm01.txt.
Exemple: ec2-35-162-169-76.us-west-2.compute.amazonaws.com
Installer Apache Kafka en mode SingleNode sur un nœud de cluster AWS
2.1. Pour installer le logiciel, sélectionnez notre nœud (copiez son DNS public) pour vous connecter via SSH. Nous configurons la connexion via SSH. Nous utilisons le nom enregistré du premier nœud pour configurer la connexion via SSH en utilisant la paire de clés privée / publique «HadoopUser01.ppk» créée dans la clause 1.3. Nous allons à la section Connexion / Auth via le bouton Parcourir et recherchons le dossier où nous avons précédemment enregistré le fichier "HadoopUserXX.ppk".
Nous enregistrons la configuration de la connexion dans les paramètres.
2.2. Nous sommes connectés au nœud et utilisons login: ubuntu.
• En utilisant les privilèges root, nous mettons à jour les packages et installons les packages supplémentaires requis pour une installation et une configuration supplémentaires du cluster.
sudo apt-get update sudo apt-get -y install wget net-tools netcat tar
• Installez Java 8 jdk et vérifiez la version de Java.
sudo apt-get -y install openjdk-8-jdk
• Pour des performances normales de nœud de cluster, vous devez ajuster les paramètres d'échange de mémoire. Les swappines VM sont définis à 60% par défaut, ce qui signifie que lors de l'utilisation de la mémoire à 60%, le système échangera activement les données de la RAM vers le disque. Selon la version Linux, le paramètre swappines VM peut être défini sur 0 ou 1:
sudo sysctl vm.swappiness=1
• Pour enregistrer les paramètres lors du redémarrage, ajoutez une ligne au fichier de configuration.
echo 'vm.swappiness=1' | sudo tee --append /etc/sysctl.conf
• Modification des entrées dans le fichier / etc / hosts pour une résolution pratique des noms de nœuds de cluster kafka et zookeeper en adresses IP privées des nœuds de cluster affectés.
echo "172.31.26.162 host01" | sudo tee --append /etc/hosts
Nous vérifions la reconnaissance correcte des noms en utilisant la commande ping sur l'une des entrées.
• Téléchargez les dernières versions actuelles (http://kafka.apache.org/downloads) des distributions kafka et scala et préparez un répertoire avec les fichiers d'installation.
wget http://mirror.linux-ia64.org/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz tar -xvzf kafka_2.12-2.1.0.tgz ln -s kafka_2.12-2.1.0 kafka
• Supprimez le fichier d'archive tgz, nous n'en aurons plus besoin
• Essayons de démarrer le service Zookeeper, pour cela:
~/kafka/bin/zookeeper-server-start.sh -daemon ~/kafka/config/zookeeper.properties
Zookeeper démarre avec les options de démarrage par défaut. Vous pouvez consulter le journal:
tail -n 5 ~/kafka/logs/zookeeper.out
Pour garantir le démarrage du démon Zookeeper, après le redémarrage, nous devons démarrer Zookeper en tant que service d'arrière-plan:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
Pour vérifier le lancement de Zookepper, cochez
netcat -vz localhost 2181
2.3. Nous configurons le service Zookeeper et Kafka pour le travail. Initialement, modifiez / créez le fichier /etc/systemd/system/zookeeper.service (contenu du fichier ci-dessous).
[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.target
Ensuite, pour Kafka, éditez / créez le fichier /etc/systemd/system/kafka.service (contenu du fichier ci-dessous).
[Unit] Description=Apache Kafka server (broker) Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
• Activer les scripts systemd pour les services Kafka et Zookeeper.
sudo systemctl enable zookeeper sudo systemctl enable kafka
• Vérifiez le fonctionnement des scripts systemd.
sudo systemctl start zookeeper sudo systemctl start kafka sudo systemctl status zookeeper sudo systemctl status kafka sudo systemctl stop zookeeper sudo systemctl stop kafka
• Vérifiez le bon fonctionnement des services Kafka et Zookeeper.
netcat -vz localhost 2181 netcat -vz localhost 9092
• Vérifiez le fichier journal de zookeeper.
cat logs/zookeeper.out
Première joie
2.4. Nous créons notre premier sujet sur le serveur kafka assemblé.
- Il est important d'utiliser la connexion à "host01: 2181" comme vous l'avez indiqué dans le fichier de configuration server.properties.
- Nous écrivons quelques données dans le sujet.
kafka-console-producer.sh --broker-list host01:9092 --topic first_topic
Ctrl-C - quitte la console de rubrique.
• Essayez maintenant de lire les données du sujet.
kafka-console-consumer.sh --bootstrap-server host01:9092 --topic last_topic --from-beginning
• Afficher une liste de sujets kafka.
bin/kafka-topics.sh --zookeeper spark01:2181 --list
• Modification des paramètres du serveur kafka pour le réglage de la configuration d'un cluster unique
# vous devez changer le paramètre ISR à 1.
bin/kafka-topics.sh --zookeeper spark01:2181 --config min.insync.replicas=1 --topic __consumer_offsets --alter
• Redémarrez le serveur Kafka et essayez de reconnecter le consommateur ohm
• Voyons une liste de sujets.
bin/kafka-topics.sh --zookeeper host01:2181 --list
Configurer Apache Spark sur un cluster à nœud unique
Nous avons préparé une instance du nœud avec les services Zookeeper et Kafka installés sur AWS, vous devez maintenant installer Apache Spark, pour cela:
3.1. Téléchargez la dernière distribution Apache Spark.
wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz
• Décompressez la distribution et créez un lien symbolique pour spark et supprimez les fichiers d'archive inutiles.
tar -xvf spark-2.4.0-bin-hadoop2.6.tgz ln -s spark-2.4.0-bin-hadoop2.6 spark rm spark*.tgz
• Accédez au répertoire sbin et exécutez l'assistant spark.
./start-master.sh
• Connectez-vous à l'aide d'un navigateur Web au serveur Spark sur le port 8080.
• Exécuter des étincelles esclaves sur le même nœud
./start-slave.sh spark://host01:7077
• Exécutez l'étincelle avec le maître sur host01.
./spark-shell --master spark://host01:7077
• Si le lancement ne fonctionne pas, ajoutez le chemin d'accès à Spark dans bash.
vi ~/.bashrc # SPARK_HOME=/home/ubuntu/spark export PATH=$SPARK_HOME/bin:$PATH
source ~/.bashrc
• Exécutez à nouveau le shell spark avec le maître sur host01.
./spark-shell --master spark://host01:7077
3.2. Un cluster à nœud unique avec Kafka, Zookeeper et Spark fonctionne. Hourra!
Un peu de créativité
4.1. Téléchargez l'éditeur Scala-IDE (sur
scala-ide.org ). Nous commençons et commençons à écrire du code. Ici je ne me répéterai plus, car il y a un
bon article sur Habré .
4.2. Littérature et cours utiles pour aider:
courses.hadoopinrealworld.com/courses/enrolled/319237data-flair.training/blogs/kafka-consumerwww.udemy.com/apache-spark-with-scala-hands-on-with-big-data