Einführung in Spark in EC2 und Verknüpfung von iPython Notebook

Einführung

Ich habe eine Spark-Umgebung auf der EMR erstellt und sie berührt, aber es ist teuer, sie immer zu starten und anzulegen. Es war schwierig, es zu löschen, wenn es nicht mehr verwendet wurde, und eine Umgebung zu erstellen, wenn es Zeit war, es zu verwenden. Ich habe eine Spark-Umgebung auf EC2 erstellt. Sie können den Server jederzeit starten und stoppen, um Spark kostengünstig zu überprüfen. Ich habe auch ein iPython-Notizbuch eingebaut, um die Analyse zu vereinfachen, damit ich dort auch mit Spark umgehen kann.

Vorbereitung der EC2-Instanz

Eine niedrige Spezifikation reicht aus, da sie nur den für Spark verwendeten Server startet, stoppt und löscht.

Dieses Mal habe ich das billigste t2.micro verwendet.

Laden Sie Spark herunter

Weil es den Befehl git verwendet Installieren Sie zuerst git und bringen Sie die erforderlichen Dateien mit.

sudo yum install -y git
git clone git://github.com/apache/spark.git -b branch-1.2

Ich habe 1.2 aufgenommen, das war der letzte Moment (Januar 2015).

【Referenz】 Spark Lightning-fast cluster computing

AWS-Einstellungen

Mit Blick auf spark / ec2 / spark_ec2.py Wenn AWS in .boto festgelegt ist, scheint es sich auf die Umgebungsvariablen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY usw. zu beziehen, wenn dies nicht der Fall ist. Dieses Mal habe ich den geheimen Zugriffsschlüssel in der Boto-Einstellungsdatei festgelegt.

~/.boto


[Credentials]
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>

Starten Sie den Spark-Cluster

~/spark/ec2/spark-ec2 --key-pair=<KEY_PAIR_NAME> --identity-file=<SSH_KEY_FILE_NAME> --region=ap-northeast-1 --spark-version=1.2.0 --copy-aws-credentials launch <CLUSTER_NAME>

[Bemerkungen] Der Start dauert einige Minuten. Diesmal dauerte es ungefähr 5 Minuten. Standardmäßig werden zwei m1.large-Instanzen verwendet. "--Copy-aws-credentials" Wenn dies hinzugefügt wird, werden die AWS-Einstellungen vererbt.

Detaillierte Einstellungen finden Sie weiter unten. Running Spark on EC2 http://spark.apache.org/docs/1.2.0/ec2-scripts.html

Über Sicherheitsgruppen

Wenn Sie einen Spark-Cluster starten, wird automatisch eine Sicherheitsgruppe erstellt. Im Standardzustand sind jedoch einige Ports vollständig geöffnet, sodass Sie sie bei Bedarf ändern müssen.

Außerdem verwendet das iPython Notebook die Ports 8888 und 9000. Fügen Sie sie daher hinzu, damit Sie darauf zugreifen können.

Melden Sie sich beim Server an

~/spark/ec2/spark-ec2 --key-pair=<KEY_PAIR_NAME> --identity-file=<SSH_KEY_FILE_NAME> --region=ap-northeast-1 login <CLUSTER_NAME>

Clusterausfall

~/spark/ec2/spark-ec2 --region=ap-northeast-1 stop <CLUSTER_NAME>

So starten Sie den Cluster

~/spark/ec2/spark-ec2 --key-pair=<KEY_PAIR_NAME> --identity-file=<SSH_KEY_FILE_NAME> --region=ap-northeast-1 start <CLUSTER_NAME>

Führen Sie pyspark aus

Nachdem Sie sich beim Master-Server angemeldet haben, können Sie ihn mit dem folgenden Befehl ausführen.

/root/spark/bin/pyspark

Scala

/root/spark/bin/spark-shell

iPython Notebook-Einstellungen

Profil erstellen

ipython profile create myserver

Konfigurationsdatei bearbeiten

~/.ipython/profile_myserver/ipython_notebook_config.py


c = get_config()
c.NotebookApp.ip = '*' #Oder die lokale IP des Masters
c.NotebooksApp.open_browser = False

~/.ipython/profile_myserver/startup/00-myserver-setup.py


import os
import sys

os.environ['SPARK_HOME'] = '/root/spark/'
CLUSTER_URL = open('/root/spark-ec2/cluster-url').read().strip()
spark_home = os.environ.get('SPARK_HOME', None)
if not spark_home:
    raise ValueError('SPARK_HOME environment variable is not set')
sys.path.insert(0, os.path.join(spark_home, 'python'))
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-src.zip'))
execfile(os.path.join(spark_home, 'python/pyspark/shell.py'))
execfile(os.path.join(spark_home, 'conf/spark-env.sh'))

【Referenz】 How-to: Use IPython Notebook with Apache Spark

Starten Sie das iPython Notebook

ipython notebook --pylab inline --profile=myserver

Sie können durch Zugriff auf <Spark Master Server Domain: 8888> verwendet werden.

Datei lesen

[Aus S3 lesen und als RDD behandeln]

s3_file = sc.textFile("s3n://<BUCKET>/<DIR>")
s3_file = sc.textFile("s3n://<BUCKET>/<DIR>/<FILE>")

Der zu beachtende Punkt ist das Schreiben von "s3n: //". Konnte nicht mit "s3: //" lesen. Sie können sowohl auf Ordner als auch auf einzelne Dateien verweisen.

[Lokale Datei lesen]

local_file = sc.textFile("file://" + "Lokaler Dateipfad")

Bei der Angabe des Dateinamens wird standardmäßig auf HDFS verwiesen.

Ich möchte die Dateien mit HDFS verwalten, Wenn Sie auf eine lokale Datei verweisen möchten, müssen Sie dem Pfad "file: //" voranstellen.

Wenn Sie auf eine lokale Datei aus iPython Notebook verweisen Es werden 9000 Ports verwendet, daher müssen Sie Sicherheitsgruppen nach Bedarf öffnen.

[Aus S3 lesen und als DataFrame behandeln]

Spark hat damit nichts zu tun, aber ich werde es vorerst schreiben. Wenn Sie S3-Dateien mit Pandas verarbeiten möchten, müssen Sie boto festlegen.

~/.boto


[Credentials]
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
df = pd.read_csv("s3://<BUCKET>/<DIR>/<FILE>")

Schreiben Sie im Gegensatz zu RDD "s3: //" anstelle von "s3n: //", und Sie können den Ordner nicht auswählen.

Informationen zur Serverüberwachung

Spark-Web-Benutzeroberfläche mit <Spark Master Server Domain: 8080> Sie können auf Ganglien mit <Spark Master Server Domain: 5080 / Ganglien> zugreifen.

19.02.2015 Nachtrag

Zunächst wird die EC2-Instanz vorbereitet. Wenn Sie dies jedoch einzeln tun, können Sie die Github-Quelle auf Ihren PC übertragen. Dieses Mal habe ich eine Instanz eingerichtet, da davon ausgegangen wird, dass mehrere Personen den Spark-Cluster verwalten.

Recommended Posts

Einführung in Spark in EC2 und Verknüpfung von iPython Notebook
[IPython] Freigeben eines IPython-Notizbuchs
Verwendung von IPython Notebook
[Maschinelles Lernen] Starten Sie Spark mit iPython Notebook und probieren Sie MLlib aus
Installieren Sie Anaconda auf Ihrem Mac und laden Sie Ihr Jupyter (IPython) -Notebook in die Anaconda Cloud hoch
Verwenden von Apache Spark mit Jupyter Notebook (IPython Notebook)
Verwenden Sie Jupyter Lab und Jupyter Notebook mit EC2
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
So beleben Sie Zellen in iPython Notebook wieder
So debuggen Sie mit Jupyter oder iPython Notebook
Einführung des Sinatra-Frameworks und dessen Verwendung
Starten und verwenden Sie das IPython-Notebook im Netzwerk
Jupyter Notebook-Einstellungen - Verwendung (EC2 Amazon Linux 2)
Einführung in Jupyter Notebook
ipython notebook Installation
EC2-Bereitstellung mit Vagrant + Jupyter (IPython Notebook) auf Docker
[Windows] [Python3] Installieren Sie Python3 und Jupyter Notebook (ehemals Ipython Notebook) unter Windows
[Spark] Ich bin süchtig nach "", null und [] in DataFrame
So (erzwingen) Sie die Folien eines IPython-Notizbuchs als PDF