Modo de funcionamiento de la serie Spark (dos) modo independiente y su servicio histórico, configuración HA (detallada)

modo independiente

00_ premisa:

Se ha instalado Java (java1.8.0_241)

Se ha instalado Hadoop (hadoop2.10.0)

01_Introducción

Queremos construir un clúster de Spark compuesto por Master + Slave, y Spark se ejecuta en el clúster.

Inserte la descripción de la imagen aquí

02_configuración de inicio independiente

2.1 Copie Spark y asígnele el nombre Spark-Standalone

cp -r spark-2.4.0-bin-hadoop2.7 spark-startalone

2.2 Ingrese conf, configure spark-env.sh, determine master

cd conf
for i in .template; do mv ${i} ${i%.}; done
vi spark-env.sh
SPARK_MASTER_HOST=node1
SPARK_MASTER_PORT=7077

2.3 Modificar el archivo de esclavos y determinar el trabajador

vi slaves
node1
node2
node3

2.4 Agregue JAVA_HOME bajo el archivo sbin / spark-config.sh

export JAVA_HOME=/usr/java/jdk1.8.0_241

2.5 configurar variables de entorno

vi /etc/profile
export SPARK_HOME=/usr/hadoop/spark-standalone
export PATH=$PATH:$SPARK_HOME/sbin:$SPARK_HOME/bin
source /etc/profile

2.6 Distribuir Spark de forma independiente a los nodos del clúster

scp -r spark-standalone / node2:/usr/hadoop/
scp -r spark-standalone / node3:/usr/hadoop/

2.7 Inicie el clúster en Spark independiente

sbin/start-all.sh

2.8 Se completa la configuración básica del clúster independiente de Spark

Puerto 8080 para acceder a masterUI

Puerto 8081 para acceder a workeUI

Controlador de puerto 4040UI, se puede ver antes de la ejecución, si necesita verlo en cualquier momento, debe configurar el servicio de historial.

2.9 Ejemplo 1: cálculo de Pi

[root@node1 spark-standalone]# bin/spark-submit \
> --master spark://node1:7077 \
> --class org.apache.spark.examples.SparkPi \
> ./examples/jars/spark-examples_2.11-2.4.0.jar 100

2.10 Ejemplo de recuento de 2 palabras en el shell

[root@node1 spark-standalone]# bin/spark-shell --master spark://node1:7077

Cree un directorio de entrada, escriba un archivo, escriba algunas palabras en él y luego lea, divida, mezcle y cuente en el shell. Es casi lo mismo que el local anterior.

03_Servicio de historial de configuración (general, los parámetros individuales se pueden modificar según los propios)

3.1 Modificar el archivo spark-default.conf

vi spark-defaults.conf
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://node1:8020/spark-logs

3.2 Después de ingresar al directorio de instalación de hadoop, ejecute el comando:

bin/hadoop fs -mkdir /spark-logs

Si no le preocupa si el comando se ejecuta correctamente, puede iniciar hadoop y visitar la interfaz correspondiente al puerto 50070 para comprobar si se genera el directorio.

 http://192.168.223.100:50070/

3.3 Modifique el archivo spark-env.sh y agregue la siguiente configuración

vi spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://node1:8020/spark-logs"

(1) Spark.history.ui.port

El número de puerto de la WebUI del servidor de historial, el predeterminado es 18080, o puede configurarlo usted mismo.

(2) Spark.history.retainedApplications

Establezca la cantidad de registros del historial de la aplicación almacenados en la Caché, el valor predeterminado es 50, si supera este valor, los antiguos se eliminarán de la memoria. Pero no se eliminará de HDFS.

Nota: La cantidad de archivos de caché no significa la cantidad total de archivos que se muestran realmente. Simplemente significa que los archivos que no están en la caché pueden necesitar leerse desde el disco duro, con una ligera diferencia en la velocidad.

(3) Spark.history.fs.logDirectory

Indique a Spark History Server (Spark History Service) qué directorio registra la información del registro de tareas. Si esta opción está configurada en el archivo en este momento, no es necesario que especifique un directorio específico al iniciar Spark History Server más adelante. El directorio puede ser cualquier sistema de archivos compatible con las API de Hadoop.

3.4 Distribuir el archivo modificado a otras máquinas virtuales

scp spark-defaults.conf node2:/usr/hadoop/spark-standalone/conf/
scp spark-defaults.conf node3:/usr/hadoop/spark-standalone/conf/

scp spark-env.sh node2:/usr/hadoop/spark-standalone/conf/
scp spark-env.sh node3:/usr/hadoop/spark-standalone/conf/

3.5 Iniciar y ver el servicio de historial de Spark

start-dfs.sh
sbin/start-all.sh
sbin/start-history-server.sh 
jps
http://192.168.223.100:18080/

3.6 Realizar una pequeña tarea

bin/spark-submit \
--master spark://node1:7077 \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
./examples/jars/spark-examples_2.11-2.4.0.jar 10000

04_master-HA

4.1 Principio de alta disponibilidad

El clúster independiente tiene solo un maestro. Si el maestro falla, la aplicación no se puede enviar, lo que significa que hay un solo punto de falla. El maestro debe configurarse para una alta disponibilidad, y la alta disponibilidad del maestro puede usar fileSystem (sistema de archivos) y zookeeper (servicio de coordinación distribuida).

(1) Recuperación de un solo punto basada en el sistema de archivos: solo se usa en el entorno de desarrollo o prueba

El fileSystem solo tiene la función de almacenamiento y puede almacenar la información de metadatos del Master. El Master construido con el fileSystem está altamente disponible. Cuando el Master falla, necesitamos iniciar manualmente otro Master en espera. Este método no se recomienda.

(2) Standby Masters basado en zookeeper: se puede utilizar en un entorno de producción

Zookeeper tiene funciones de elección y almacenamiento, que pueden almacenar la información de datos de elementos del Master. El Master construido con zookeeper es altamente disponible. Cuando el Master cuelga, el Master en espera cambiará automáticamente. Se recomienda utilizar este método para construir el HA del Master. Para hacer la elección sin disputa, se requiere un número impar de nodos.

4.2 Configurar HA

La solución HA es muy simple de usar. Primero inicie un clúster de ZooKeeper y luego inicie el Master en diferentes nodos. Tenga en cuenta que estos nodos deben tener la misma configuración de zookeeper.

4.2.1 Modificar el archivo spark-env.sh

vi spark-env.sh
#SPARK_MASTER_HOST=node1
#SPARK_MASTER_PORT=7077

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://node1:8020/spark-logs"

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-nodes"

Spark.deploy.recoveryMode: modo de recuperación
spark.deploy.zookeeper.url: Dirección del servidor de ZooKeeper.
Spark.deploy.zookeeper.dir: archivos y directorios que guardan información de metadatos del clúster. Incluye información sobre el trabajador, el conductor y la aplicación.

4.2.2 Distribuir el archivo de configuración anterior

scp spark-env.sh node2:/usr/hadoop/spark-standalone/conf/
scp spark-env.sh node3:/usr/hadoop/spark-standalone/conf/

4.2.3 Iniciar servicio de chispa

start-dfs.sh
start-yarn.sh
sbin/start-all.sh
sbin/start-history-server.sh
zkServer.sh start
sbin/start-master.sh	 

4.3 Ver servicio

El acceso a la interfaz de gestión de chispas del maestro está activo, mientras que el otro maestro está pendiente.Si el primero se cae, el guardián del zoológico organiza el segundo para que se haga cargo.

http://192.168.223.100:8080/
http://192.168.223.101:8080/

4.4 Prueba HA

Pruebe el interruptor principal / de espera

  1. Use jps en el primer maestro para ver la identificación del proceso maestro
  2. Utilice el número de identificación kill -9 para forzar el final del proceso
  3. Después de un tiempo, actualice la interfaz web del segundo maestro y descubra que el segundo maestro está vivo

4.5 Realizar pequeñas tareas

4.5.1 Estadísticas de frecuencia de palabras

bin/spark-shell --master spark://node1:7077,node2:7077,node3:7077

Lo siguiente es similar al de local, en caso de duda, consulte otra serie de chispas: modo de funcionamiento 1: configuración del modo local

4.5.2 Ejemplo de cálculo

bin/spark-submit \
> --master spark://node1:7077,node2:7077,node3:7077 \
> --deploy-mode client \
> --class org.apache.spark.examples.SparkPi \
> ./examples/jars/spark-examples_2.11-2.4.0.jar 100

4.5.3 Ejemplo de cálculo

bin/run-example --master spark://node1:7077,node2:7077,node3:7077 SparkPi

Nota: los ejemplos están incluidos

Supongo que te gusta

Origin blog.csdn.net/qq_46009608/article/details/108910867
Recomendado
Clasificación