Apache Spark ist ein Open-Source-Framework und ein Allzweck-Cluster-Computing-System. Spark bietet High-Level-APIs in Java, Scala, Python und R, die allgemeine Ausführungsgraphen unterstützen. Es wird mit integrierten Modulen geliefert, die für Streaming, SQL, maschinelles Lernen und Graphenverarbeitung verwendet werden. Es ist in der Lage, große Datenmengen zu analysieren und über den Cluster zu verteilen und die Daten parallel zu verarbeiten.
In diesem Tutorial erklären wir, wie Sie den Apache Spark-Cluster-Computing-Stack unter Ubuntu 20.04 installieren.
Voraussetzungen
- Ein Server, auf dem Ubuntu 20.04-Server ausgeführt wird.
- Ein Root-Passwort wird auf dem Server konfiguriert.
Erste Schritte
Zuerst müssen Sie Ihre Systempakete auf die neueste Version aktualisieren. Sie können alle mit dem folgenden Befehl aktualisieren:
apt-get update -y
Sobald alle Pakete aktualisiert sind, können Sie mit dem nächsten Schritt fortfahren.
Installieren Sie Java
Apache Spark ist eine Java-basierte Anwendung. Daher muss Java auf Ihrem System installiert sein. Sie können es mit dem folgenden Befehl installieren:
apt-get install default-jdk -y
Überprüfen Sie nach der Installation von Java die installierte Version von Java mit dem folgenden Befehl:
java --version
Sie sollten die folgende Ausgabe sehen:
openjdk 11.0.8 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
Scala installieren
Apache Spark wird mit Scala entwickelt. Sie müssen also Scala in Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:
apt-get install scala -y
Nach der Installation von Scala. Sie können die Scala-Version mit dem folgenden Befehl überprüfen:
scala -version
Sie sollten die folgende Ausgabe sehen:
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL
Verbinden Sie sich nun mit dem folgenden Befehl mit der Scala-Schnittstelle:
scala
Sie sollten die folgende Ausgabe erhalten:
Welcome to Scala 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8). Type in expressions for evaluation. Or try :help.
Testen Sie nun die Scala mit dem folgenden Befehl:
scala> println("Hitesh Jethva")
Sie sollten die folgende Ausgabe erhalten:
Hitesh Jethva
Installieren Sie Apache Spark
Zunächst müssen Sie die neueste Version von Apache Spark von der offiziellen Website herunterladen. Zum Zeitpunkt der Erstellung dieses Tutorials ist die neueste Version von Apache Spark 2.4.6. Sie können es mit dem folgenden Befehl in das /opt-Verzeichnis herunterladen:
cd /opt
wget https://archive.apache.org/dist/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz
Extrahieren Sie die heruntergeladene Datei nach dem Herunterladen mit dem folgenden Befehl:
tar -xvzf spark-2.4.6-bin-hadoop2.7.tgz
Als nächstes benennen Sie das extrahierte Verzeichnis wie unten gezeigt in Spark um:
mv spark-2.4.6-bin-hadoop2.7 spark
Als Nächstes müssen Sie die Spark-Umgebung konfigurieren, damit Sie Spark-Befehle einfach ausführen können. Sie können es konfigurieren, indem Sie die .bashrc-Datei bearbeiten:
nano ~/.bashrc
Fügen Sie am Ende der Datei die folgenden Zeilen hinzu:
export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
Speichern und schließen Sie die Datei und aktivieren Sie dann die Umgebung mit dem folgenden Befehl:
source ~/.bashrc
Spark-Masterserver starten
An diesem Punkt wird Apache Spark installiert und konfiguriert. Starten Sie nun den Spark-Masterserver mit dem folgenden Befehl:
start-master.sh
Sie sollten die folgende Ausgabe sehen:
starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-ubuntu2004.out
Standardmäßig überwacht Spark Port 8080. Sie können dies mit dem folgenden Befehl überprüfen:
ss -tpln | grep 8080
Sie sollten die folgende Ausgabe sehen:
LISTEN 0 1 *:8080 *:* users:(("java",pid=4930,fd=249))
Öffnen Sie nun Ihren Webbrowser und greifen Sie über die URL http://your-server-ip:8080 auf die Spark-Weboberfläche zu. Sie sollten den folgenden Bildschirm sehen:
Spark-Arbeitsprozess starten
Wie Sie sehen können, wird der Spark-Master-Dienst auf spark://your-server-ip:7077 ausgeführt. Sie können also diese Adresse verwenden, um den Spark-Arbeitsprozess mit dem folgenden Befehl zu starten:
start-slave.sh spark://your-server-ip:7077
Sie sollten die folgende Ausgabe sehen:
starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-ubuntu2004.out
Gehen Sie jetzt zum Spark-Dashboard und aktualisieren Sie den Bildschirm. Sie sollten den Spark-Arbeitsprozess auf dem folgenden Bildschirm sehen:
Arbeiten mit Spark Shell
Sie können den Spark-Server auch über die Befehlszeile verbinden. Sie können es mit dem Spark-Shell-Befehl wie unten gezeigt verbinden:
spark-shell
Sobald die Verbindung hergestellt ist, sollten Sie die folgende Ausgabe sehen:
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned() WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 20/08/29 14:35:07 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). Spark context Web UI available at http://ubuntu2004:4040 Spark context available as 'sc' (master = local[*], app id = local-1598711719335). Spark session available as 'spark'. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 2.4.6 /_/ Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8) Type in expressions to have them evaluated. Type :help for more information. scala>
Wenn Sie Python in Spark verwenden möchten. Sie können das Befehlszeilenprogramm pyspark verwenden.
Installieren Sie zuerst die Python-Version 2 mit dem folgenden Befehl:
apt-get install python -y
Nach der Installation können Sie den Spark mit dem folgenden Befehl verbinden:
pyspark
Sobald die Verbindung hergestellt ist, sollten Sie die folgende Ausgabe erhalten:
Python 2.7.18rc1 (default, Apr 7 2020, 12:05:55) [GCC 9.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned() WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 20/08/29 14:36:40 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.4.6 /_/ Using Python version 2.7.18rc1 (default, Apr 7 2020 12:05:55) SparkSession available as 'spark'. >>>
Wenn Sie Master- und Slave-Server stoppen möchten. Sie können dies mit dem folgenden Befehl tun:
stop-slave.sh
stop-master.sh
Schlussfolgerung
Herzliche Glückwünsche! Sie haben Apache Spark erfolgreich auf dem Ubuntu 20.04-Server installiert. Jetzt sollten Sie in der Lage sein, grundlegende Tests durchzuführen, bevor Sie mit der Konfiguration eines Spark-Clusters beginnen. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.