Академический Документы
Профессиональный Документы
Культура Документы
Docker
Apache Spark proporciona una interfaz para la programación de clusters completos con
paralelismos de Datos implicito y tolerancia a fallos. Tiene la base de su arquitectura en el
llamado RDD (Resilient Distributed Dataset, set de sólo lectura de datos distribuídos a lo largo de
un cluster de máquinas que se mantiene en un entorno tolerante a fallos).
Apache Spark proporciona una interfaz para la programación de clusters completos con
paralelismos de Datos implicito y tolerancia a fallos. Tiene la base de su arquitectura en el
llamado RDD (Resilient Distributed Dataset, set de sólo lectura de datos distribuídos a lo largo de
un cluster de máquinas que se mantiene en un entorno tolerante a fallos).
Page |1
Spark SQL ( para el procesamiento de datos estructurados basada en
SQL).
MLlib para implementar machine learning.
GraphX para el procesamirnto de grafos.
Spark Streaming.
cd docker-spark
Page |2
4 Archivo Dockerfile:
FROM debian:stretch
Page |3
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# http://blog.stuart.axelbrooke.com/python-3-on-spark-return-of-the-pythonhashseed
ENV PYTHONHASHSEED 0
ENV PYTHONIOENCODING UTF-8
ENV PIP_DISABLE_PIP_VERSION_CHECK 1
# JAVA
ARG JAVA_MAJOR_VERSION=8
ARG JAVA_UPDATE_VERSION=131
ARG JAVA_BUILD_NUMBER=11
ENV JAVA_HOME /usr/jdk1.${JAVA_MAJOR_VERSION}.0_${JAVA_UPDATE_VERSION}
ENV PATH $PATH:$JAVA_HOME/bin
RUN curl -sL --retry 3 --insecure \
--header "Cookie: oraclelicense=accept-securebackup-cookie;" \
"http://download.oracle.com/otn-
pub/java/jdk/${JAVA_MAJOR_VERSION}u${JAVA_UPDATE_VERSION}-
b${JAVA_BUILD_NUMBER}/d54c1d3a095b4ff2b6607d096fa80163/server-jre-
${JAVA_MAJOR_VERSION}u${JAVA_UPDATE_VERSION}-linux-x64.tar.gz" \
| gunzip \
| tar x -C /usr/ \
&& ln -s $JAVA_HOME /usr/java \
&& rm -rf $JAVA_HOME/man
# HADOOP
ENV HADOOP_VERSION 3.0.0
ENV HADOOP_HOME /usr/hadoop-$HADOOP_VERSION
ENV HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
ENV PATH $PATH:$HADOOP_HOME/bin
RUN curl -sL --retry 3 \
"http://archive.apache.org/dist/hadoop/common/hadoop-$HADOOP_VERSION/hadoop-
$HADOOP_VERSION.tar.gz" \
| gunzip \
| tar -x -C /usr/ \
&& rm -rf $HADOOP_HOME/share/doc \
&& chown -R root:root $HADOOP_HOME
# SPARK
ENV SPARK_VERSION 2.3.0
ENV SPARK_PACKAGE spark-${SPARK_VERSION}-bin-without-hadoop
ENV SPARK_HOME /usr/spark-${SPARK_VERSION}
ENV
SPARK_DIST_CLASSPATH="$HADOOP_HOME/etc/hadoop/*:$HADOOP_HOME/share/hadoop/com
mon/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADO
OP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/ha
doop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/mapreduce/lib
/*:$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/tools/lib/*"
ENV PATH $PATH:${SPARK_HOME}/bin
RUN curl -sL --retry 3 \
"https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=spark/spark-
${SPARK_VERSION}/${SPARK_PACKAGE}.tgz" \
| gunzip \
| tar x -C /usr/ \
&& mv /usr/$SPARK_PACKAGE $SPARK_HOME \
&& chown -R root:root $SPARK_HOME
WORKDIR $SPARK_HOME
CMD ["bin/spark-class", "org.apache.spark.deploy.master.Master"]
Page |4
5. El archivo docker-compose.yml:
master:
image: gettyimages/spark
hostname: master
environment:
MASTER: spark://master:7077
SPARK_CONF_DIR: /conf
SPARK_PUBLIC_DNS: localhost
expose:
- 7001
- 7002
- 7003
- 7004
- 7005
- 7006
- 7077
Page |5
- 6066
ports:
- 4040:4040
- 6066:6066
- 7077:7077
- 9080:8080
volumes:
- ./conf/master:/conf
- ./data:/tmp/data
worker:
image: gettyimages/spark
command: bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077
hostname: worker
environment:
SPARK_CONF_DIR: /conf
SPARK_WORKER_CORES: 2
SPARK_WORKER_MEMORY: 1g
SPARK_WORKER_PORT: 8881
SPARK_WORKER_WEBUI_PORT: 8081
SPARK_PUBLIC_DNS: localhost
links:
- master
expose:
- 7012
- 7013
- 7014
- 7015
- 7016
- 8881
ports:
- 8081:8081
volumes:
- ./conf/worker:/conf
- ./data:/tmp/data
Page |6
4. Se ejecuta docker-compose up:
docker-compose up
Page |7
5. Ver los procesos:
docker-compose ps
6. A continuación el resultado:
Page |8
e tiene dos contenedores ejecutandose, uno es el master, que tiene el puerto 8080 abierto, entre
otros puertos, y el otro contenedor es el worker.
Page |9
7. Se abre el navegador en http://localhost:8080, a continuación una captura del navegador:
bin/pyspark
Page
|10
8.2 Al abrir el navegador se tiene una aplicación corriendo en el spark:
Page
|11
9. Para terminar se ejecuta SparkPi desde el contenedor master:
bin/run-example SparkPi 10
Page
|12
Page
|13
Page
|14
Bibliografía
https://docs.docker.com/engine/userguide/intro/https://hub.d
ocker.com/r/brunswickheads/spark-1.5.2-
s390x/https://spark.apache.org/docs/latest/quick-start.html
Page
|15