Comment installer Spark sur RHEL 8
- 1282
- 18
- Clara Nguyen
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
Exigences et conventions logicielles utilisées
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é.
- 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 commeracine
:# 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
- Nous déballerons le tarball:
# TAR -XVF Spark-2.4.0-bin-hadoop2.7.tgz
- 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
- 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 *
- Nous créons un
systemd
fichier unitaire/ etc / Systemd / System / Spark-Master.service
pour le service maître avec le contenu suivant:
Copie[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
Et aussi un pour le service d'esclaves qui sera
/ etc / Systemd / System / Spark-Slave.service.service
avec le contenu ci-dessous:
Copie[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
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ôterhel8lab.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 port7077
par défaut. - Avec les fichiers de service en place, nous devons demander
systemd
Pour les relire:# SystemCTL Daemon-Reload
- Nous pouvons commencer notre maître Spark avec
systemd
:# SystemCTL Start Spark-Master.service
- 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
Page d'état Master Spark sans travailleurs attachés.8080
, Nous devrions voir la page de statut du maître, sans travailleurs attachés pour le moment.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
- Notre maître court, nous y attacherons un esclave. Nous commençons le service d'esclaves:
# SystemCTL Start Spark-Slave.service
- 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.
- 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
:
Copieline1 word1 word2 word3 line2 word1 line3 word1 word2 word3 word4
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, nonracine
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