BigData fait maison. Partie 1. Pratique Spark Streaming sur un cluster AWS

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/319237
data-flair.training/blogs/kafka-consumer
www.udemy.com/apache-spark-with-scala-hands-on-with-big-data

Source: https://habr.com/ru/post/fr443912/


All Articles