Comment installer Spark sur RHEL 8

Comment installer Spark sur RHEL 8

Apache Spark est un système informatique distribué. Il se compose d'un maître et d'un ou plusieurs esclaves, où le maître distribue le travail entre les esclaves, donnant ainsi la possibilité d'utiliser nos nombreux ordinateurs pour travailler sur une tâche. On pourrait deviner qu'il s'agit en effet d'un outil puissant où les tâches ont besoin de calculs importants pour se terminer, mais peuvent être divisés en petits morceaux de pas qui peuvent être poussés vers les esclaves pour travailler sur. Une fois que notre cluster est opérationnel, nous pouvons écrire des programmes pour y exécuter dans Python, Java et Scala.

Dans ce didacticiel, nous travaillerons sur une seule machine exécutant Red Hat Enterprise Linux 8, et installerons le maître Spark et l'esclave sur la même machine, mais gardez à l'esprit que les étapes décrivant la configuration de l'esclave peuvent être appliquées à n'importe quel nombre d'ordinateurs, créant ainsi un vrai groupe qui peut traiter les charges de travail lourdes. Nous ajouterons également les fichiers unitaires nécessaires pour la gestion et exécuterons un exemple simple contre le cluster expédié avec le package distribué pour nous assurer que notre système est opérationnel.

Dans ce tutoriel, vous apprendrez:

  • Comment installer Spark Master and Slave
  • Comment ajouter des fichiers d'unité Systemd
  • Comment vérifier la connexion maître-esclave réussie
  • Comment exécuter un exemple simple sur le cluster
Coquille d'étincelle avec pyspark.

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Red Hat Enterprise Linux 8
Logiciel Apache Spark 2.4.0
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Comment installer Spark sur Redhat 8 instructions étape par étape

Apache Spark fonctionne sur JVM (Java Virtual Machine), donc une installation Java 8 fonctionnelle est requise pour que les applications s'exécutent. En plus de cela, il y a plusieurs coquilles expédiées dans le paquet, l'une d'elles est pyspark, une coque à base de python. Pour travailler avec cela, vous aurez également besoin de Python 2 installé et configuré.

  1. Pour obtenir l'URL du dernier package de Spark, nous devons visiter le site Spark Downloads. Nous devons choisir le miroir le plus proche de notre emplacement et copier l'URL fournie par le site de téléchargement. Cela signifie également que votre URL peut être différente de l'exemple ci-dessous. Nous allons installer le package sous /opter/, Nous entrons donc dans le répertoire comme racine:
    # CD / OPT

    Et nourrir l'URL acquise pour wget Pour obtenir le package:

    # wget https: // www-eu.apache.org / dist / Spark / Spark-2.4.0 / Spark-2.4.0-bin-hadoop2.7.tgz


  2. Nous déballerons le tarball:
    # TAR -XVF Spark-2.4.0-bin-hadoop2.7.tgz
  3. Et créer un lien symbolique pour rendre nos chemins plus faciles à retenir dans les étapes suivantes:
    # ln -s / opt / spark-2.4.0-bin-hadoop2.7 / Opt / Spark
  4. Nous créons un utilisateur non privilégié qui exécutera les deux applications, maître et esclave:
    # userAdd Spark

    Et le définir en tant que propriétaire de l'ensemble / Opt / Spark Répertoire, récursivement:

    # Chown -r Spark: Spark / Opt / Spark *
  5. Nous créons un systemd fichier unitaire / etc / Systemd / System / Spark-Master.service pour le service maître avec le contenu suivant:
    [Unité] Description = Apache Spark Master après = réseau.Target [Service] type = FORKING User = Spark Group = Spark ExecStart = / Opt / Spark / Sbin / Start-Master.sh execstop = / opt / spark / sbin / stop-master.sh [installer] recherché = multi-utilisateurs.cible
    Copie

    Et aussi un pour le service d'esclaves qui sera / etc / Systemd / System / Spark-Slave.service.service avec le contenu ci-dessous:

    [Unité] Description = Apache Spark Slave After = Network.Target [Service] type = FORKING User = Spark Group = Spark ExecStart = / Opt / Spark / Sbin / Start-Slave.sh Spark: // rhel8lab.linuxconfig.org: 7077 execstop = / opt / spark / sbin / stop-slave.sh [installer] recherché = multi-utilisateurs.cible
    Copie

    Notez l'URL de l'étincelle en surbrillance. Ceci est construit avec Spark: //: 7077, Dans ce cas, la machine de laboratoire qui exécutera le maître a le nom d'hôte rhel8lab.linuxconfig.org. Le nom de votre maître sera différent. Chaque esclaves doit être en mesure de résoudre ce nom d'hôte et d'atteindre le maître sur le port spécifié, qui est le port 7077 par défaut.

  6. Avec les fichiers de service en place, nous devons demander systemd Pour les relire:
    # SystemCTL Daemon-Reload
  7. Nous pouvons commencer notre maître Spark avec systemd:
    # SystemCTL Start Spark-Master.service
  8. Pour vérifier que notre maître est en cours d'exécution et fonctionnel, nous pouvons utiliser l'état SystemD:
    # SystemCTL Status Spark-Master.service Spark-Master.Service - Apache Spark Master chargé: chargé (/ etc / systemd / System / Spark-Master.service; désactivé; Vendor Preset: Disabled) Active: Active (Running) Depuis ven 2019-01-11 16:30:03 CET; Il y a 53min Processus: 3308 ExecStop = / Opt / Spark / Sbin / Stop-Master.SH (code = sortie, statut = 0 / succès) Processus: 3339 ExecStart = / Opt / Spark / Sbin / Start-Master.SH (code = sortie, statut = 0 / succès) Pid principal: 3359 (Java) Tâches: 27 (Limite: 12544) Mémoire: 219.3m CGroup: / Système.Slice / Spark-Master.service 3359 / usr / lib / jvm / java-1.8.0-openjdk-1.8.0.181.B13-9.EL8.x86_64 / jre / bin / java -cp / opt / spark / conf /: / opt / spark / jars / * -xmx1g org.apache.étincelle.déployer.maître.Maître - Host […] 11 janvier 16:30:00 RHEL8LAB.linuxconfig.Org Systemd [1]: Démarrage du maître d'Apache Spark… 11 janvier 16:30:00 RHEL8LAB.linuxconfig.Org Start-Master.sh [3339]: Org de départ.apache.étincelle.déployer.maître.Master, enregistrer / opt / spark / logs / spark-worg-org.apache.étincelle.déployer.maître.Master-1 […]


    La dernière ligne indique également le fichier de journal principal du maître, qui se trouve dans le bûches Répertoire sous le répertoire de base Spark, / Opt / Spark dans notre cas. En examinant ce fichier, nous devrions voir une ligne à la fin similaire à l'exemple ci-dessous:

    2019-01-11 14:45:28 Info Master: 54 - J'ai été élu leader! Nouvel État: vivant

    Nous devrions également trouver une ligne qui nous indique où l'interface maître écoute:

    2019-01-11 16:30:03 Info Utils: 54 - Démarrage avec succès du service 'MasterUi' sur le port 8080

    Si nous dirigeons un navigateur vers le port de la machine hôte 8080, Nous devrions voir la page de statut du maître, sans travailleurs attachés pour le moment.

    Page d'état Master Spark sans travailleurs attachés.

    Notez la ligne URL sur la page d'état du maître de Spark. C'est la même URL que nous devons utiliser pour chaque fichier unitaire de chaque esclave dans lequel nous avons créé Étape 5.
    Si nous recevons un message d'erreur «Connexion refusée» dans le navigateur, nous devons probablement ouvrir le port sur le pare-feu:

    # Firewall-CMD --zone = public --add-port = 8080 / TCP - Permanent Succès # Firewall-CMD - Reload Succès
  9. Notre maître court, nous y attacherons un esclave. Nous commençons le service d'esclaves:
    # SystemCTL Start Spark-Slave.service
  10. Nous pouvons vérifier que notre esclave fonctionne avec Systemd:
    # SystemCTL Status Spark-Slave.Service Spark-Slave.Service - Apache Spark Slave chargé: chargé (/ etc / systemd / system / spark-slave.service; désactivé; Vendor Preset: Disabled) Active: Active (Running) Depuis ven 2019-01-11 16:31:41 CET; 1h 3 minutes Processus: 3515 execstop = / opt / spark / sbin / stop-slave.SH (code = sortie, statut = 0 / succès) Processus: 3537 execstart = / opt / spark / sbin / start-slave.sh Spark: // rhel8lab.linuxconfig.org: 7077 (code = sortant, statut = 0 / succès) Pid principal: 3554 (java) Tâches: 26 (limite: 12544) Mémoire: 176.1M CGroup: / Système.Slice / Spark-Slave.service 3554 / usr / lib / jvm / java-1.8.0-openjdk-1.8.0.181.B13-9.EL8.x86_64 / jre / bin / java -cp / opt / spark / conf /: / opt / spark / jars / * -xmx1g org.apache.étincelle.déployer.ouvrier.Travailleur […] 11 janvier 16:31:39 RHEL8LAB.linuxconfig.org systemd [1]: Démarrage de l'esclave Apache Spark… 11 janvier 16:31:39 Rhel8Lab.linuxconfig.Org Start-Slave.SH [3537]: Org de départ.apache.étincelle.déployer.ouvrier.Travailleur, connexion vers / opt / spark / logs / spark-spar […]

    Cette sortie fournit également le chemin vers le fichier de journal de l'esclave (ou travailleur), qui sera dans le même répertoire, avec «travailleur» dans son nom. En vérifiant ce fichier, nous devrions voir quelque chose de similaire à la sortie ci-dessous:

    2019-01-11 14:52:23 Info Worker: 54 - Connexion à Master Rhel8Lab.linuxconfig.org: 7077… 2019-01-11 14:52:23 Info Contexthandler: 781 - Démarré o.s.J.s.ServletContexthandler @ 62059f4a / metrics / json, null, disponible, @ spark 2019-01-11 14:52:23 Info TransportClientFactory: 267 - Connexion avec succès à Rhel8Lab.linuxconfig.org / 10.0.2.15: 7077 après 58 ms (0 ms dépensé en bootstraps) 2019-01-11 14:52:24 Info Worker: 54 - Enregistré avec succès avec Master Spark: // Rhel8Lab.linuxconfig.org: 7077

    Cela indique que le travailleur est connecté avec succès au maître. Dans ce même fichier de journaux, nous trouverons une ligne qui nous indique que l'URL que le travailleur écoute:

    2019-01-11 14:52:23 Info Workerwebui: 54 - Workerwebui lié à 0.0.0.0, et a commencé à http: // rhel8lab.linuxconfig.org: 8081

    Nous pouvons pointer notre navigateur vers la page de statut du travailleur, où son maître est répertorié.

    Page d'état du travailleur Spark, connecté à Master.

    Au fichier de journaux du maître, une ligne de vérification doit apparaître:

    2019-01-11 14:52:24 Info Master: 54 - Enregistrement du travailleur 10.0.2.15: 40815 avec 2 cœurs, 1024.0 MB RAM

    Si nous rechargeons maintenant la page de statut du maître, le travailleur devrait également y apparaître, avec un lien vers sa page de statut.

    Page de statut maître Spark avec un seul travailleur joint.

    Ces sources vérifient que notre cluster est attaché et prêt à travailler.

  11. Pour exécuter une tâche simple sur le cluster, nous exécutons l'un des exemples expédiés avec le package que nous avons téléchargé. Considérez le fichier de texte simple suivant / Opt / Spark / Test.déposer:
    line1 word1 word2 word3 line2 word1 line3 word1 word2 word3 word4
    Copie

    Nous allons exécuter le comptage de mots.py Exemple qui comptera l'occurrence de chaque mot dans le fichier. Nous pouvons utiliser le étincelle utilisateur, non racine privilèges nécessaires.

    $ / opt / spark / bin / spark-submit / opt / spark / exemples / src / main / python / wordCount.py / opt / spark / test.Fichier 2019-01-11 15:56:57 Info SparkContext: 54 - Application soumise: PythonWordCount 2019-01-11 15:56:57 Info SecurityManager: 54 - Changer la vue ACLS vers: Spark 2019-01-11 15:56: 57 Info SecurityManager: 54 - Modification de modification des ACL vers: Spark […]

    Au fil de la tâche, une longue sortie est fournie. Près de la fin de la sortie, le résultat est affiché, le cluster calcule les informations nécessaires:

    2019-01-11 15:57:05 Info dagscheduler: 54 - Job 0 terminé: Collectez AT / OPT / Spark / Exemples / Src / Main / Python / WordCount.Py: 40, a pris 1.619928 S Ligne3: 1 Ligne2: 1 ligne1: 1 Word4: 1 Word1: 3 Word3: 2 Word2: 2 […]

    Avec cela, nous avons vu notre étincelle Apache en action. Des nœuds d'esclaves supplémentaires peuvent être installés et attachés à l'échelle de la puissance de calcul de notre cluster.

Tutoriels Linux connexes:

  • Comment créer un cluster Kubernetes
  • Installation d'Oracle Java sur Ubuntu 20.04 Focal Fossa Linux
  • Choses à installer sur Ubuntu 20.04
  • Comment installer Java sur Manjaro Linux
  • Linux: installer Java
  • Comment installer Kubernetes sur Ubuntu 20.04 Focal Fossa Linux
  • Comment installer Kubernetes sur Ubuntu 22.04 Jammy Jellyfish…
  • Ubuntu 20.04 Hadoop
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Ubuntu 20.04 WordPress avec installation Apache