Von ORDIX AG auf Donnerstag, 26. September 2019
Kategorie: Data Management

(PySpark) on YARN - Behind the Scenes (Teil 3)

In Teil 2 wurde gezeigt, welche Prozesse bei der Verwendung der PySpark Shell verwendet werden. Im dritten Teil geht Olaf Hein auf die Verwendung unterschiedlicher Python Versionen ein.

Verwendung unterschiedlicher Python Versionen 

Im letzten Beispiel wurde die Standard Python Installation des Betriebssystems verwendet. Wenn eine andere Python Version verwendet werden soll, dann muss diese auf den Worker und Edge Knoten des Clusters installiert werden. Für Data Science und Maschinelles Lernen wird oft die Anaconda Python Distribution verwendet. Anaconda wird aktuell für Python 2.7 oder 3.7 bereitgestellt. Für die folgenden Beispiele werden die beiden Anaconda Versionen auf allen Knoten in den folgenden Verzeichnissen installiert:

Alternativ kann Anaconda auch nur einmal installiert werden. Mit dem Paketmanager conda können dann unterschiedliche Umgebungen für unterschiedliche Python Versionen erstellt werden.

In Spark kann die verwendete Python Version in der Datei spark-env.sh mit den folgenden Variablen konfiguriert werden:

Im Cloudera Manager kann die Konfiguration über die Web Oberfläche erfolgen und im Cluster verteilt werden. Dabei ist darauf zu achten, dass die Konfiguration sowohl für die Worker als auch für die Edge Nodes durchgeführt wird. Im Clustermanager gibt es dafür unterschiedliche Konfigurationsparameter. Die verwendeten Python Versionen des Drivers und der Executoren müssen beim Ausführen eines Jobs identisch sein!

Nach der Anaconda Installation und dem Verteilen der Spark Konfiguration wird eine neue PySpark Shell gestartet: 

Während eine Python Task ausgeführt wird, laufen diese relevanten Prozesse im Betriebssystem:

Über die Parameter in der Datei spark-env.sh kann immer nur eine Python Version für alle Jobs im Cluster konfiguriert werden. Diese Version ist dann der Default für Jobs im Cluster.

Zusätzlich kann der Pfad zum Python Interpreter und damit zur Python Version je Spark Job über die folgenden Parameter angegeben werden:

Durch die Nutzung dieser Parameter ist es problemlos möglich, mehrere Python Installationen parallel in einem Cluster zu verwenden. Mit dem folgenden Aufruf wird die PySpark Shell mit Anaconda 3 und somit Python 3 gestartet. Die Parameter überschreiben die Standard Einstellungen in der Datei spark-env.sh.

Beim Ausführen einer Python Task, zeigt ps jetzt die Python Prozesse aus der Anaconda 3 Installation an:

Fortsetzung

Im letzten Teil dieses Beitrags führt Olaf Hein unter anderem aus, wie mehr Sicherheit mit dem YARN-Container Executor realisiert wird.

Kommentare hinterlassen