La mejor respuesta
En lo que respecta al marco en su conjunto: en este momento Apache Spark está un paso por delante de sus competidores , debido a algunas características como la implementación (e integración) de herramientas diferentes y muy útiles (Spark SQL y MLlib solo por nombrar dos) y la capacidad de almacenar datos intermedios en los RDD. Debido a este motivo, muchos desarrolladores se están concentrando en ello, y supongo que hasta que surja un nuevo avance en la tecnología subyacente, cualquier competidor será insignificante.
De manera diferente, si considera las implementaciones individuales en Apache Spark, puede identificar algunos competidores: H2O es un retador de Spark MLlib, Storm (ha señalado por Joe) es una alternativa a la transmisión de Spark, y hay varios motores similares a SQL que se pueden comparar con Spark SQL .
Respuesta
Aquí hay algunos JARGONS de Apache Spark que usaré.
Trabajo: – Un fragmento de código que lee alguna entrada de HDFS o local, realiza algunos cálculos sobre los datos y escribe algunos datos de salida.
Etapas: -Las tareas se dividen en etapas . Las etapas se clasifican como un mapa o etapas reducidas (es más fácil de entender si ha trabajado en Hadoop y desea correlacionar). Las etapas se dividen según los límites computacionales, todos los cálculos (operadores) no se pueden actualizar en una sola etapa. Ocurre en muchas etapas.
Tareas: – Cada etapa tiene algunas tareas, una tarea por partición. Una tarea se ejecuta en una partición de datos en un ejecutor (máquina).
DAG – DAG significa Gráfico Acíclico Dirigido, en el contexto actual es un DAG de operadores.
Ejecutor – El proceso responsable de ejecutar una tarea.
Driver – El programa / proceso responsable de ejecutar el trabajo sobre Spark Engine
Master – La máquina en la que se ejecuta el programa Driver
Esclavo: la máquina en la que se ejecuta el programa Ejecutor
Todos los trabajos en Spark comprenden una serie de operadores y se ejecutan en un conjunto de datos. Todos los operadores de un trabajo se utilizan para construir un DAG (gráfico acíclico dirigido). El DAG se optimiza reorganizando y combinando operadores siempre que sea posible. Por ejemplo, supongamos que debe enviar un trabajo de Spark que contiene una operación de mapa seguida de una operación de filtro. El optimizador Spark DAG reorganizaría el orden de estos operadores, ya que el filtrado reduciría el número de registros que se someterán a la operación del mapa.
Spark tiene una base de código pequeña y el sistema está dividido en varias capas. Cada capa tiene algunas responsabilidades. Las capas son independientes entre sí.
- La primera capa es intérprete , Spark usa un intérprete de Scala, con algunas modificaciones.
- A medida que ingresa su código en la consola de Spark (creando RDD «sy aplicando operadores ), Spark crea un gráfico de operador.
- Cuando el usuario ejecuta una acción (como recopilar), el gráfico se envía a un programador DAG. El programador DAG divide el gráfico del operador en (mapear y reducir) etapas.
- Una etapa se compone de tareas basadas en particiones de los datos de entrada. El programador DAG agrupa a los operadores para optimizar el gráfico. Por ejemplo, Many Los operadores de mapas se pueden programar en una sola etapa. Esta optimización es clave para el rendimiento de Sparks. El resultado final de un programador DAG es un conjunto de etapas.
- Las etapas se pasan al Programador de tareas . El programador de tareas inicia tareas a través de administrador de clústeres . (Spark Standalone / Yarn / Mesos). El programador de tareas no conoce las dependencias entre etapas.
- El Worker ejecuta las tareas en el esclavo. Se inicia una nueva JVM por TRABAJO. El trabajador solo conoce el código que se le pasa.
Spark almacena en caché los datos que se procesarán, lo que me permite 100 veces más rápido que hadoop. Spark usa Akka para Multithreading, Administrar el estado del ejecutor, programar tareas. Utiliza Jetty para compartir archivos (Jars y otros archivos), Http Broadcast, ejecutar Spark Web UI. Spark es altamente configurable y es capaz de utilizar los componentes existentes ya existentes en el Eco-System Hadoop. Esto ha permitido que Spark crezca exponencialmente y, en poco tiempo, muchas organizaciones ya lo están utilizando en producción.
Puede consultar
para comprender las cosas con más detalle.