Spark installeren op RHEL 8

  • Giles Benson
  • 0
  • 1586
  • 363
>

Apache Spark is een gedistribueerd computersysteem. Het bestaat uit een master en een of meer slaves, waarbij de master het werk onder de slaves verdeelt, waardoor we onze vele computers kunnen gebruiken om aan één taak te werken. Je zou kunnen raden dat dit inderdaad een krachtig hulpmiddel is waar taken grote berekeningen nodig hebben om te voltooien, maar het kan worden opgesplitst in kleinere stukjes stappen die naar de slaven kunnen worden geduwd om aan te werken. Als ons cluster eenmaal actief is, kunnen we programma's schrijven om erop te draaien in Python, Java en Scala.

In deze tutorial zullen we werken op een enkele machine met Red Hat Enterprise Linux 8, en de Spark-master en -slaaf op dezelfde machine installeren, maar onthoud dat de stappen die de slave-setup beschrijven op een willekeurig aantal computers kunnen worden toegepast, waardoor een echt cluster ontstaat dat zware werklasten kan verwerken. We zullen ook de benodigde eenheidsbestanden voor beheer toevoegen en een eenvoudig voorbeeld uitvoeren met het cluster dat bij het gedistribueerde pakket wordt geleverd om ervoor te zorgen dat ons systeem operationeel is.

In deze tutorial leer je:
  • Hoe Spark master en slave te installeren
  • Hoe systemd unit-bestanden toe te voegen
  • Hoe u een geslaagde master-slave-verbinding kunt verifiëren
  • Hoe u een eenvoudige voorbeeldtaak op het cluster uitvoert
Spark shell met pyspark.

Gebruikte softwarevereisten en -conventies

Softwarevereisten en Linux Command Line-conventies
Categorie Vereisten, conventies of gebruikte softwareversie
Systeem Red Hat Enterprise Linux 8
Software Apache Spark 2.4.0
Andere Bevoorrechte toegang tot uw Linux-systeem als root of via het sudo opdracht.
Conventies # - vereist dat gegeven linux-commando's worden uitgevoerd met root-privileges, hetzij direct als rootgebruiker, hetzij door gebruik van sudo opdracht
$ - vereist dat gegeven linux-commando's worden uitgevoerd als een gewone niet-geprivilegieerde gebruiker

Hoe Spark op Redhat 8 stap voor stap instructies te installeren

Apache Spark draait op JVM (Java Virtual Machine), dus een werkende Java 8-installatie is vereist om de applicaties te laten draaien. Afgezien daarvan worden er meerdere shells in het pakket verzonden, waarvan er één is pyspark, een op python gebaseerde shell. Om daarmee te werken, moet je ook python 2 installeren en instellen.

  1. Om de URL van het nieuwste pakket van Spark te krijgen, moeten we de Spark-downloadsite bezoeken. We moeten de spiegel kiezen die het dichtst bij onze locatie ligt en de URL kopiëren die door de downloadsite wordt verstrekt. Dit betekent ook dat uw URL kan verschillen van het onderstaande voorbeeld. We installeren het pakket onder / opt /, dus voeren we de directory in als wortel:
    # cd / opt
    En voer de verkregen URL in wget om het pakket te krijgen:
    # wget https://www-eu.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
  2. We pakken de tarball uit:
    # tar -xvf spark-2.4.0-bin-hadoop2.7.tgz
  3. En maak een symlink om onze paden gemakkelijker te onthouden in de volgende stappen:
    # ln -s /opt/spark-2.4.0-bin-hadoop2.7 / opt / spark
  4. We creëren een niet-geprivilegieerde gebruiker die beide applicaties zal draaien, master en slave:
    # useradd vonk
    En stel het in als eigenaar van het geheel / opt / vonk directory, recursief:
    # chown -R vonk: vonk / opt / vonk *
  5. We creëren een systemd unit-bestand /etc/systemd/system/spark-master.service voor de master service met de volgende inhoud:
    [Eenheid] Beschrijving = Apache Spark Master After = network.target [Service] Type = forking Gebruiker = spark Groep = spark ExecStart = / opt / spark / sbin / start-master.sh ExecStop = / opt / spark / sbin / stop- master.sh [Install] WantedBy = multi-user.target
    En ook een voor de slavendienst die zal zijn /etc/systemd/system/spark-slave.service.service met de onderstaande inhoud:
    [Eenheid] Beschrijving = Apache Spark Slave After = network.target [Service] Type = forking Gebruiker = spark Groep = spark ExecStart = / opt / spark / sbin / start-slave.sh vonk: //rhel8lab.linuxconfig.org: 7077 ExecStop = / opt / spark / sbin / stop-slave.sh [Installeren] WantedBy = multi-user.target
    Let op de gemarkeerde spark-URL. Dit is geconstrueerd met vonk://: 7077, in dit geval heeft de labmachine die de master zal draaien de hostnaam rhel8lab.linuxconfig.org. De naam van je meester zal anders zijn. Elke slaaf moet deze hostnaam kunnen omzetten en de master bereiken op de opgegeven poort, dat is poort 7077 standaard.
  6. Nu de servicebestanden aanwezig zijn, moeten we het vragen systemd om ze opnieuw te lezen:
    # systemctl daemon-reload
  7. We kunnen onze Spark-master starten met systemd:
    # systemctl start spark-master.service
  8. Om te controleren of onze master actief en functioneel is, kunnen we systemd status gebruiken:
    # systemctl status spark-master.service spark-master.service - Apache Spark Master geladen: geladen (/etc/systemd/system/spark-master.service; uitgeschakeld; vooraf ingestelde leverancier: uitgeschakeld) Actief: actief (actief) sinds vr 2019 -01-11 16:30:03 CET; 53 minuten geleden Proces: 3308 ExecStop = / opt / spark / sbin / stop-master.sh (code = verlaten, status = 0 / SUCCES) Proces: 3339 ExecStart = / opt / spark / sbin / start-master.sh (code = verlaten, status = 0 / SUCCES) Hoofd-PID: 3359 (java) Taken: 27 (limiet: 12544) Geheugen: 219,3 M CGroup: /system.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.spark.deploy. master.Master --host […] 11 jan 16:30:00 rhel8lab.linuxconfig.org systemd [1]: Apache Spark Master starten… 11 jan 16:30:00 rhel8lab.linuxconfig.org start-master.sh [3339 ]: org.apache.spark.deploy.master.Master starten, inloggen op /opt/spark/logs/spark-spark-org.apache.spark.deploy.master.Master-1[…]


    De laatste regel geeft ook het hoofdlogbestand van de master aan, dat zich in het logboeken directory onder de Spark-basismap, / opt / vonk in ons geval. Door dit bestand te bekijken, zouden we aan het einde een regel moeten zien die lijkt op het onderstaande voorbeeld:
    2019-01-11 14:45:28 INFO Master: 54 - Ik ben gekozen tot leider! Nieuwe staat: ALIVE
    We zouden ook een regel moeten vinden die ons vertelt waar de Master-interface naar luistert:
    2019-01-11 16:30:03 INFO Utils: 54 - Service 'MasterUI' succesvol gestart op poort 8080
    Als we een browser naar de poort van de hostcomputer wijzen 8080, we zouden de statuspagina van de master moeten zien, zonder op dit moment aangesloten arbeiders. Spark-hoofdstatuspagina zonder bijgevoegde werknemers. Let op de URL-regel op de statuspagina van de Spark-master. Dit is dezelfde URL die we moeten gebruiken voor het eenheidsbestand van elke slaaf waarin we hebben aangemaakt stap 5. Als we een foutbericht 'Verbinding geweigerd' in de browser ontvangen, moeten we waarschijnlijk de poort op de firewall openen:
    # firewall-cmd --zone = public --add-port = 8080 / tcp --permanent success # firewall-cmd --reload success
  9. Onze meester rent, we zullen er een slaaf aan vastmaken. We starten de slavendienst:
    # systemctl start spark-slave.service
  10. We kunnen verifiëren dat onze slaaf met systemd werkt:
    # systemctl status spark-slave.service spark-slave.service - Apache Spark Slave geladen: geladen (/etc/systemd/system/spark-slave.service; uitgeschakeld; vooraf ingestelde leverancier: uitgeschakeld) Actief: actief (actief) sinds vr 2019 -01-11 16:31:41 CET; 1h 3min geleden Proces: 3515 ExecStop = / opt / spark / sbin / stop-slave.sh (code = verlaten, status = 0 / SUCCES) Proces: 3537 ExecStart = / opt / spark / sbin / start-slave.sh spark: //rhel8lab.linuxconfig.org:7077 (code = verlaten, status = 0 / SUCCES) Hoofd-PID: 3554 (java) Taken: 26 (limiet: 12544) Geheugen: 176,1M CGroup: /system.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.spark.deploy.worker.Worker […] 11 januari 16:31:39 rhel8lab.linuxconfig.org systemd [1]: Apache Spark Slave starten… 11 januari 16:31:39 rhel8lab.linuxconfig .org start-slave.sh [3537]: org.apache.spark.deploy.worker.Worker starten, loggen naar / opt / spark / logs / spark-spar […]
    Deze uitvoer geeft ook het pad naar het logbestand van de slaaf (of werker), dat zich in dezelfde map zal bevinden, met "werker" in de naam. Door dit bestand te controleren, zouden we iets moeten zien dat lijkt op de onderstaande uitvoer:
    2019-01-11 14:52:23 INFO Worker: 54 - Verbinding maken met master rhel8lab.linuxconfig.org:7077… 2019-01-11 14:52:23 INFO ContextHandler: 781 - Gestart osjsServletContextHandler @ 62059f4a / metrics / json, null, BESCHIKBAAR, @ Spark 2019-01-11 14:52:23 INFO TransportClientFactory: 267 - Succesvolle verbinding gemaakt met rhel8lab.linuxconfig.org/10.0.2.15:7077 na 58 ms (0 ms besteed in bootstraps) 2019 -01-11 14:52:24 INFO Werknemer: 54 - Succesvol geregistreerd bij master spark: //rhel8lab.linuxconfig.org: 7077
    Dit geeft aan dat de werknemer met succes is verbonden met de master. In hetzelfde logbestand vinden we een regel die ons de URL vertelt waarnaar de werknemer luistert:
    2019-01-11 14:52:23 INFO WorkerWebUI: 54 - WorkerWebUI gebonden aan 0.0.0.0, en gestart op http://rhel8lab.linuxconfig.org:8081
    We kunnen onze browser naar de statuspagina van de werknemer verwijzen, waar de master wordt vermeld. Spark-werkerstatuspagina, verbonden met master.

    Bij het logfile van de master zou een controleregel moeten verschijnen:
    2019-01-11 14:52:24 INFO Master: 54 - Aanmelden werknemer 10.0.2.15:40815 met 2 cores, 1024.0 MB RAM
    Als we de statuspagina van de master nu opnieuw laden, zou de werknemer daar ook moeten verschijnen, met een link naar zijn statuspagina. Spark-hoofdstatuspagina met één gekoppelde werknemer. Deze bronnen verifiëren dat ons cluster is aangesloten en klaar om te werken.
  11. Om een ​​eenvoudige taak op het cluster uit te voeren, voeren we een van de voorbeelden uit die zijn meegeleverd met het pakket dat we hebben gedownload. Beschouw het volgende eenvoudige tekstbestand /opt/spark/test.file:
    regel1 woord1 woord2 woord3 regel2 woord1 regel3 woord1 woord2 woord3 woord4
    We zullen het wordcount.py voorbeeld erop dat het voorkomen van elk woord in het bestand zal tellen. We kunnen de vonk gebruiker, nee wortel privileges nodig.
    $ / opt / spark / bin / spark-submit /opt/spark/examples/src/main/python/wordcount.py /opt/spark/test.file 2019-01-11 15:56:57 INFO SparkContext: 54 - Ingediende aanvraag: PythonWordCount 2019-01-11 15:56:57 INFO SecurityManager: 54 - Weergave acls wijzigen in: spark 2019-01-11 15:56:57 INFO SecurityManager: 54 - Acls wijzigen in: spark […]
    Terwijl de taak wordt uitgevoerd, wordt een lange uitvoer geleverd. Tegen het einde van de output wordt het resultaat getoond, het cluster berekent de benodigde informatie:
    2019-01-11 15:57:05 INFO DAGScheduler: 54 - Job 0 voltooid: verzamel op /opt/spark/examples/src/main/python/wordcount.py:40, duurde 1.619928 s regel3: 1 regel2: 1 regel1: 1 woord4: 1 woord1: 3 woord3: 2 woord2: 2 […]
    Hiermee hebben we onze Apache Spark in actie gezien. Er kunnen extra slave-knooppunten worden geïnstalleerd en aangesloten om de rekenkracht van ons cluster te vergroten.



Niemand heeft nog op dit artikel gereageerd.

Een verzameling nuttige informatie over het Linux-besturingssysteem en nieuwe technologieën
Nieuwe artikelen, praktische tips, gedetailleerde recensies en handleidingen. Voel je thuis in de wereld van het Linux-besturingssysteem