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

Bonjour

Il existe de nombreux services sur Internet qui fournissent des services cloud. Avec leur aide, vous pouvez apprendre la technologie de BigData.

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.

image


Présentation d'Amazon Web Services


Vous devrez vous inscrire sur aws.amazon.com/console . Saisissez un nom et mémorisez le mot de passe.

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 (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 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


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électionnez chacun des nœuds de cluster un par un et pour l'instance sélectionnée, notez 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


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.

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 de 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 du cluster kafka et
    zookeeper à des adresses IP privées aux 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 le 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 

    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 

  • Nous activons 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 

  • Nous vĂ©rifierons la fonctionnalitĂ© 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


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 

  • Regardons la liste des 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 

  • Nous redĂ©marrons le serveur Kafka et essayons Ă  nouveau de connecter le consommateur ohm

  • Regardons la liste des 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:

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 

  • Nous nous connectons Ă  l'aide d'un navigateur Web au serveur Spark sur le port 8080.

  • ExĂ©cutez 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 l'Ă©tincelle avec le maĂ®tre sur host01.

     ./spark-shell --master spark://host01:7077 

    Un cluster à nœud unique avec Kafka, Zookeeper et Spark fonctionne. Hourra!

Un peu de créativité


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é .

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/fr452752/


All Articles