Anleitung: PySpark und Jupyter Notebook Installation via Docker

Stefan Preusler
3 min readJun 19, 2019

--

Die Installation von Spark und direkte Anwendung über ein Notebook kann sehr aufwendig sein: In der Entwicklungsumgebung muss Java installiert werden, Systemumgebungsvariablen sind zwingend korrekt zu setzen und die Anbindung von Spark an Jupyter Notebook sorgfältig erfolgen.

Apache software foundation [Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)]

In dieser Anleitung werde ich in wenigen Schritten ein Jupyter Notebook mit PySpark mittels Docker auf einer EC2-Instanz von AWS installieren.

Erzeugen einer EC2 Instanz

Wir erzeugen eine EC2 Instanz in der Management Console: Zuerst klicken auf “Launch Instance”. Amazon Linux hat in der Vergangenheit bei der Installation von Data Science Bibliotheken zu Problemen geführt. Als Betriebssystem wählen wir daher eine Ubuntu Distribution aus und nehmen im Anschluss ein “t2.small” Modell.

2 Gigabyte Arbeitsspeicher sind aus meiner Erfahrung heraus ein Minimum für dieses Setup. Falls wir Geld einsparen wollen, können wir die Instanz jederzeit pausieren. Allerdings gehen dabei auch die Daten auf dem Server verloren. Der Download von späteren Notebooks bietet sich daher an.

Wir springen in der Navigationsbar zu “ 6. Configure Security Group” und fügen mit “Add Rule” eine HTTP Regel für Port 80 aus. Über diesen Port machen wir unser Jupyter Notebook erreichbar. Als Quell-IP Range (Source) können wir unsere eigene, aktuelle IP angeben. Damit haben nur wir mit unserer IP Zugriff auf den Server via HTTP. Zuletzt können wir einen neuen Key generieren, um per SSH Zugriff auf den Server zu erlangen. Alternativ verwenden wir einen bereits existierenden Schlüssel verwenden.

SSH Login

Nach dem Start ist die Instanz in der Konsolenübersicht auswählbar. Mit einem Rechtsklick auf den Server und auswählen von “Connect” erhalten wir die Zugangsdaten für den SSH Zugang.

Wir öffnen den Terminal unseres Computers und machen den Key lesbar:

chmod 400 dein-key.pem

Im Anschluss verbinden wir uns mit der Instanz. Die Platzhalter x der IP müssen entsprechend angepasst werden:

ssh -i "dein-key.pem" ubuntu@ecx-xx-xxx-xxx-xxx.compute-1.amazonaws.com

Docker Installation

Nach erfolgreichem Login müssen wir Docker installieren. Bei Ubuntu können wir das über folgenden Befehl ausführen:

sudo snap install docker

Optional können wir uns auch einloggen, um die Installation zu überprüfen:

sudo docker login

Docker Pull und Run

Mit folgendem Befehl können wir den Docker Container mit PySpark und Jupyter herunterladen:

sudo docker pull jupyter/pyspark-notebook

Danach können wir auch schon den Container starten und an den Port 80 binden:

sudo docker run -it — rm -p 80:8888 jupyter/pyspark-notebook

Mithilfe des Parameters -it sehen wir in der Konsole die Ausgabe von Jupyter. Hiervon benötigen wir den Token in der URL, damit wir uns im Anschluss im Browser einloggen können:

Jupyter Login

Unter der URL ecx-xx-xxx-xxx-xxx.compute-1.amazonaws.com ist nun Jupyter Notebook erreichbar. Das System verlangt den Token, den wir vorher im Terminal beim Start des Containers gesehen haben.

Damit läuft unsere PySpark und Jupyter Notebook Instanz innerhalb von wenigen Minuten und ohne viel Aufwand beim Aufbau der Abhängigkeiten.

Optional: Weitere Bibliotheken

Falls noch weitere Python Bibliotheken benötigt werden, können diese einfach über ein Notebook installiert werden. Dazu fügen wir folgenden Codeabschnitt ein und führen das Snippet aus:

!pip install gewünschtes-paket

--

--

Stefan Preusler

Data Science | Python | Qlik Sense | Kaffee | Frankfurt | Kontakt: stefan-preusler.de