¿Cuál es mejor, Spark o Hadoop?
Cuando la ola de big data arrasó el mundo, Spark se hizo popular. En el extranjero, Yahoo !, Twitter, Intel, Amazon, Cloudera y otras empresas han tomado la iniciativa en la aplicación y promoción de la tecnología Spark. Empresas nacionales como Alibaba, Baidu, Taobao, Tencent, NetEase, Starlink y otras empresas se atreven a ser las primeras. están dispuestos a compartirlo. En el desarrollo posterior, IBM, Hortonworks, MicroStrategy y otras empresas integraron Spark en las soluciones existentes y se unieron al campo Spark. La aplicación de Spark en la industria de TI puede describirse como una chispa que ha provocado un incendio en la pradera.
La innovación se crea sobre los hombros de gigantes, y Spark no es una excepción en el campo del big data. Antes de la aparición de Spark, si deseaba completar varias tareas de análisis de big data, como procesamiento por lotes, aprendizaje automático, computación en tiempo real, computación gráfica y consultas SQL al mismo tiempo en una plataforma, tenía que lidiar con múltiples sistemas independientes. , lo que requirió Se realiza un costoso volcado de datos entre sistemas, pero esto sin duda aumentará la carga de operación y mantenimiento. Spark apuntó al rendimiento desde el principio e implementó la computación en memoria. Tema de discusión: 1. ¿Por qué Spark es tan popular? ¿Qué lenguaje de programación utiliza el marco Spark? ¿Es fácil empezar? 2. ¿Puede Spark convertirse en un reemplazo de Hadoop? ¿Por qué? ¿Cuáles son sus similitudes y diferencias? 3. Como marco informático iterativo en memoria, ¿qué escenarios utiliza Spark? 4. ¿Por qué Taobao eligió el marco informático Spark? 5. Mesos es una plataforma de gestión de clústeres que permite ejecutar múltiples aplicaciones y marcos distribuidos en el mismo clúster. Entonces, ¿cómo programa y ejecuta Spark? 6.¿Por qué Spark elige un conjunto de datos distribuidos elásticos (RDD) como núcleo de almacenamiento de datos? ¿En lugar de memoria compartida distribuida (Distributed Shared Memory) DSM? ¿Cuáles son sus diferencias? 7.¿Cuál es la diferencia entre Spark on YARN y Spark? 8. Algunas personas piensan que en la era del big data, las tecnologías de TI más esenciales son Hadoop, Yarn y Spark. ¿Cuál te gusta?
1. ¿Por qué Spark es tan popular? ¿Qué lenguaje de programación utiliza el marco Spark? ¿Es fácil empezar?
Spark es un marco de cálculo iterativo basado en memoria, adecuado para aplicaciones que requieren múltiples operaciones en conjuntos de datos específicos. Algoritmos como pageRank y K-Means son muy adecuados para cálculos iterativos en memoria. Todo el ecosistema Spark está mejorando gradualmente, incluidos GraphX, SparkSQL, SparkStreaming y MLlib. Cuando Spark tenga su propio almacén de datos, será completamente comparable al ecosistema Hadoop. El marco Spark utiliza el lenguaje de programación funcional Scala. Las características del modelo orientado a objetos, funcional y de alta concurrencia del lenguaje Scala le dan a Spark una mayor flexibilidad y rendimiento. Si ha estudiado Java, es posible que no esté familiarizado con algunos conceptos nuevos de Scala, como conversión implícita, coincidencia de patrones, clases complementarias, etc. Pero una vez que comience, sentirá la simplicidad y el poder del lenguaje Scala.
2. ¿Puede Spark convertirse en un reemplazo de Hadoop? ¿Por qué? ¿Cuáles son sus similitudes y diferencias?
Los dos tienen diferentes enfoques y diferentes escenarios de uso. Personalmente creo que no hay reemplazo. Spark es más adecuado para operaciones ML y DM con operaciones más iterativas. Porque en Spark existe el concepto de RDD. RDD se puede almacenar en caché en la memoria, por lo que los resultados de cada operación en el conjunto de datos RDD se pueden almacenar en la memoria y la siguiente operación se puede ingresar directamente desde la memoria, lo que elimina la necesidad de una gran cantidad de operaciones de E/S de disco en MapReduce. Sin embargo, también tenemos que ver la limitación de Spark: la memoria. Creo que aunque Hadoop requiere mucho tiempo, sigue siendo popular en escenarios de aplicaciones de datos a gran escala como OLAP.
Actualmente, Hadoop cubre varios campos, desde la recopilación de datos hasta el almacenamiento distribuido y la informática distribuida, y tiene sus propias ventajas únicas en cada campo.
3. Como marco informático iterativo en memoria, ¿para qué escenarios es adecuado Spark?
Adecuado para escenarios con un gran número de iteraciones. Algoritmos de aprendizaje automático con muchas iteraciones, etc. Como pageRank, K-Means, etc.
4. ¿Por qué Taobao eligió el marco informático Spark?
Esto se basa principalmente en los escenarios de aplicación del negocio Taobao, que implica procesamiento y análisis de datos a gran escala. Aplica principalmente el cálculo del gráfico GraphX de Spark para realizar el cálculo del gráfico del usuario: descubrimiento de la comunidad basado en el gráfico conectado máximo, medición de relaciones basada en el conteo de triángulos, propagación de atributos del usuario basada en el paseo aleatorio, etc.
5.Mesos es una plataforma de gestión de clústeres que permite ejecutar múltiples aplicaciones y marcos distribuidos en el mismo clúster. Entonces, ¿cómo programa y ejecuta Spark?
Actualmente, en el entorno Spark On Mesos, los usuarios pueden elegir uno de dos modos de programación para ejecutar sus propias aplicaciones. Modo de grano grueso: el entorno de ejecución de cada aplicación consta de un Dirver y varios Ejecutores. Cada Ejecutor ocupa una cierta cantidad de recursos y puede ejecutar múltiples Tareas (correspondientes a cuántas "ranuras") internamente. Antes de ejecutar oficialmente cada tarea de la aplicación, se deben solicitar todos los recursos en el entorno de ejecución, y estos recursos deben ocuparse durante el proceso de ejecución. Incluso si no se utilizan, estos recursos se reciclarán una vez finalizado el programa. correr. Por ejemplo, cuando envía una aplicación, especifica usar 5 ejecutores para ejecutar su aplicación. Cada ejecutor ocupa 5 GB de memoria y 5 CPU. Cada ejecutor tiene 5 ranuras configuradas en su interior. Mesos necesita asignar ranuras a los recursos de los ejecutores. e inícielos, luego comience a programar tareas. Además, durante la ejecución del programa, el maestro y el esclavo de Mesos no conocen el estado de ejecución de cada tarea dentro del ejecutor. El ejecutor informa directamente el estado de la tarea al controlador a través del mecanismo de comunicación interna. Se puede considerar que cada aplicación que utiliza Mesos creó un clúster virtual para mi propio uso. Modo de grano fino: dado que el modo de grano grueso provocará un gran desperdicio de recursos, Spark On Mesos también proporciona otro modo de programación: el modo de grano fino. Este modo es similar a la computación en la nube actual. distribuir bajo demanda. Al igual que el modo de grano grueso, cuando se inicia la aplicación, los ejecutores se iniciarán primero, pero los recursos ocupados por cada ejecutor son solo los recursos necesarios para su propia operación y no es necesario considerar las tareas que se ejecutarán en el En el futuro, Mesos asignará dinámicamente a cada ejecutor. Cada vez que se asignan recursos, se puede ejecutar una nueva tarea. Después de ejecutar una sola tarea, los recursos correspondientes se pueden liberar inmediatamente. Cada tarea informará el estado al esclavo Mesos y al maestro Mesos para facilitar una administración más detallada y una tolerancia a fallas. Este modo de programación es similar al modo de programación MapReduce. Cada tarea es completamente independiente. La ventaja es que facilita el control y el aislamiento de recursos. Pero las desventajas también son obvias: el retraso en los trabajos cortos es grande.
6. ¿Por qué Spark elige el conjunto de datos distribuidos elásticos (RDD) como núcleo de almacenamiento de datos? ¿En lugar de memoria compartida distribuida (Distributed Shared Memory) DSM? ¿Cuáles son sus diferencias?
RDD es la abstracción más básica de Spark. Es un uso abstracto de la memoria distribuida y realiza la implementación abstracta de operar conjuntos de datos distribuidos operando colecciones locales. RDD es el núcleo de Spark. Representa un conjunto de datos que ha sido particionado, inmutable y que puede operarse en paralelo. Diferentes formatos de conjuntos de datos corresponden a diferentes implementaciones de RDD.
RDD debe ser serializable. RDD se puede almacenar en caché en la memoria. Los resultados de cada operación en el conjunto de datos RDD se pueden almacenar en la memoria. La siguiente operación se puede ingresar directamente desde la memoria, lo que elimina la necesidad de realizar una gran cantidad de operaciones de E/S de disco en MapReduce. Esto puede mejorar en gran medida la eficiencia de los algoritmos de aprendizaje automático y la minería de datos interactiva, que son comunes en operaciones iterativas. RDD solo se puede generar a partir de almacenamiento persistente o mediante operaciones de transformación. En comparación con la memoria compartida distribuida (DSM), puede lograr una tolerancia a fallas de manera más eficiente para la parte perdida de la partición de datos, solo se puede recalcular en función de su linaje específico. Es necesario realizar un punto de control.
7. ¿Cuál es la diferencia entre Spark on YARN y Spark?
El mayor beneficio de permitir que Spark se ejecute en un sistema de administración de recursos general (como hilo) es reducir los costos de operación y mantenimiento y mejorar la utilización de los recursos (los recursos se asignan según demanda), la tolerancia parcial a fallas y la administración de recursos. Completado por un sistema unificado de gestión de recursos. Spark por sí solo no puede mejorar eficazmente la utilización de recursos.
8. Algunas personas piensan que en la era del big data, las tecnologías de TI más esenciales son Hadoop, Yarn y Spark. ¿Cuál te gusta?
¿No es Yarn el nuevo marco de Hadoop MapReduce? ¿Por qué aparece aquí por separado? Personalmente, creo que el ecosistema actual de Hadoop es bastante grande y la tecnología se está volviendo cada vez más madura, mientras que Spark aún necesita desarrollarse. Si algún día se agrega Hadoop al modelo de computación de memoria, ¿cuál será la situación de Spark entonces?