modo de funcionamiento de la serie Spark (1) configuración del modo local (detallado)

chispa ---- modo local

1. Comprender el contenido
1. Dirección del sitio web oficial de Spark
http://spark.apache.org/
2. Dirección de visualización de documentos
https://spark.apache.org/docs/2.4.0/
3. Dirección de descarga
https://spark.apache.org/downloads.html

2. Función importante
2.1 Controlador
El controlador de Spark es el proceso de ejecución del método principal en el programa de desarrollo. Es responsable de la ejecución del código escrito por los desarrolladores para crear SparkContext, crear RDD y realizar operaciones de conversión de RDD y operaciones de acción. Si está utilizando el shell de Spark, cuando inicie el shell de Spark, se inicia automáticamente un programa controlador de Spark en el fondo del sistema, que es un objeto SparkContext llamado sc precargado en el shell de Spark. Si se termina el programa del controlador, también se termina la aplicación Spark. Principalmente responsable de:
1) Convertir programas de usuario en trabajos (JOB)
2) Hacer un seguimiento del estado de ejecución del Ejecutor
3) Programar tareas para los nodos ejecutores
4) Mostrar la interfaz de usuario del estado de ejecución de la aplicación
2.2 Ejecutor
Spark Executor es un proceso de trabajo, responsable Ejecute tareas en trabajos de Spark y las tareas son independientes entre sí. Cuando se inicia la aplicación Spark, el nodo Ejecutor se inicia al mismo tiempo y siempre existe con el ciclo de vida de toda la aplicación Spark. Si un nodo Ejecutor falla o se bloquea, la aplicación Spark puede continuar ejecutándose y la tarea en el nodo de error se programará para que otros nodos Ejecutores continúen ejecutándose. Principalmente responsable de:
1) Responsable de ejecutar las tareas que componen la aplicación Spark y devolver los resultados al proceso del controlador;
2) Proporcionar almacenamiento de memoria para RDDs que requieren almacenamiento en caché en programas de usuario a través de su propio administrador de bloques (Block Manager). RDD se almacena en caché directamente en el proceso Executor, por lo que las tareas pueden hacer un uso completo de los datos almacenados en caché para acelerar los cálculos durante el tiempo de ejecución.

3. Instalación y uso

El modo local es un modo que se ejecuta en una computadora, generalmente se usa para entrenar y probar en esta máquina.

3.1. Cargue y descomprima el paquete de instalación de Spark y cámbiele el nombre a Spark-local

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz 
mv spark-2.4.0-bin-hadoop2.7 spark-local

3.2, por ejemplo, la solicitud oficial de PI

(1)基本语法
bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
(2)参数说明:
--master 指定Master的地址,默认为Local
--class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
--deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*
--conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value” 
application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
application-arguments: 传给main()方法的参数
--executor-memory 1G 指定每个executor可用内存为1G
--total-executor-cores 2 指定每个executor使用的cup核数为2个
例子:
[root@node1 spark-local]# bin/spark-submit \
> --master local[2] \
> --class org.apache.spark.examples.SparkPi \
> ./examples/jars/spark-examples_2.11-2.4.0.jar 100

3.3, ejecute el recuento de palabras en modo de shell local

(1) Prepare archivos:
primero cree un directorio de entrada en spark-local, luego cree un archivo test1, ingrese algo al azar y luego cópielo
(2) inicie spark-shell

bin/spark-shell --master local[2]

Inserte la descripción de la imagen aquí
Acceso web 192.168.223.100:4040

Inserte la descripción de la imagen aquí
Escriba lo siguiente en el caparazón:

scala> sc.textFile("./input")
res0: org.apache.spark.rdd.RDD[String] = ./input MapPartitionsRDD[1] at textFile at <console>:25

scala> sc.textFile("./input").flatMap(_.split(""))
res1: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[4] at flatMap at <console>:25

scala> sc.textFile("./input").flatMap(_.split("")).map((_,1))
res2: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[8] at map at <console>:25
                                                        
scala> sc.textFile("./input").flatMap(_.split("")).map((_,1)).reduceByKey(_ + _)
res4: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[13] at reduceByKey at <console>:25

scala> sc.textFile("./input").flatMap(_.split("")).map((_,1)).reduceByKey(_ + _).collect 
res5: Array[(String, Int)] = Array((d,2), (p,2), (h,6), (" ",4), ("",2), (r,4), (l,14), (w,2), (s,2), (e,6), (a,2), (k,2), (o,8))

scala> :quit
#退出

¡Puedes ver los resultados estadísticos!
3.4. Análisis del flujo de datos:
textFile ("entrada"): lee los datos de la carpeta de entrada del archivo local;
flatMap ( .split ("")): operación de aplanar, mapea una fila de datos en palabras de acuerdo con el separador de espacios;
mapa ((
, 1)): opera en cada elemento y
mapea palabras en tuplas; reduceByKey ( + ): agrega y agrega valores según la clave;
recopila: recopila datos en el lado del conductor para mostrarlos.

Supongo que te gusta

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