La Red de Conocimientos Pedagógicos - Currículum vitae - Historial de versiones de Hadoop

Historial de versiones de Hadoop

Cuando se trata de procesamiento de big data, creo que lo primero que mucha gente piensa es en Hadoop MapReduce. Sí, Hadoop MapReduce sentó las bases para la tecnología de procesamiento de big data. En los últimos años, con el desarrollo de Spark, cada vez más voces han mencionado Spark. ¿Cuáles son las ventajas de Spark en comparación con Hadoop MapReduce?

Spark y Hadoop MapReduce Hay dos opiniones en la industria: primero, Spark reemplazará a Hadoop MapReduce y se convertirá en la dirección de desarrollo futuro del procesamiento de big data; segundo, Spark se combinará con Hadoop para formar un ecosistema más grande; . De hecho, las aplicaciones clave de Spark y Hadoop MapReduce son diferentes. En comparación con Hadoop MapReduce, Spark se siente un poco "ligero". Spark está desarrollado en el modelo Hadoop MapReduce y podemos ver claramente la sombra de MapReduce en él. Todas las chispas no están innovando desde cero, sino que están sobre los hombros del gigante "MapReduce". Dejemos de lado la controversia por el momento y veamos las ventajas de Spark en comparación con Hadoop MapReduce.

1. Velocidad de computación rápida

Lo primero que persigue el procesamiento de big data es la velocidad. ¿Qué tan rápido es Spark? En palabras oficiales, "Spark permite que las aplicaciones en clústeres de Hadoop se ejecuten 100 veces más rápido en la memoria y 10 veces más rápido incluso en el disco". Algunos lectores pueden quedar impresionados por esto. De hecho, en el campo de la computación iterativa, la velocidad de cálculo de Spark es mucho más rápida que la de MapReduce. Cuantas más iteraciones, más obvias son las ventajas de Spark. Esto se debe a que Spark aprovecha la creciente memoria de los servidores actuales y mejora el rendimiento al reducir la E/S del disco. Almacenan todos los datos de procesamiento intermedio en la memoria y solo los procesan cuando es necesario. Los lectores pueden preguntar: si la aplicación es particularmente grande, ¿cuántos GB se pueden instalar en la memoria? Respuesta: ¿Qué? GB? Actualmente, la memoria de los servidores IBM se ha ampliado a varios terabytes.

2. La aplicación es flexible y fácil de usar.

¿Sabes por qué Lester de AMPLab abandonó MapReduce? Porque necesita concentrar mucha energía en los modelos de programación Map y Reduce, lo cual es extremadamente inconveniente. Además de las operaciones simples de asignación y reducción, Spark también admite consultas SQL, consultas de transmisión y consultas complejas, como algoritmos de aprendizaje automático listos para usar. Al mismo tiempo, los usuarios pueden combinar estas capacidades sin problemas en el mismo flujo de trabajo, lo que hace que la aplicación sea muy flexible.

El código central de Spark son 63 archivos Scala, lo cual es muy liviano. También permite a los desarrolladores de Java, Scala y Python trabajar en su entorno de lenguaje familiar y facilita el uso en todos los ámbitos de la vida al establecer Java, Scala, Python y SQL (procesamiento de consultas interactivas), y también incluye una gran cantidad de máquinas. que se puede utilizar de inmediato. Viene con más de 80 operadores avanzados que permiten consultas interactivas en el shell. Incluso un principiante puede utilizar esta aplicación fácilmente.

3. Compatible con la competencia

Spark puede funcionar de forma independiente. Además de la gestión actual del clúster YARN, puede leer cualquier dato de Hadoop existente. Puede ejecutarse en cualquier fuente de datos de Hadoop, como HBase, HDFS, etc. Con esta característica, será mucho más conveniente para los usuarios que quieran migrar de aplicaciones Hadoop a Spark. Spark está preparado para ser compatible con sus competidores, entonces, ¿por qué preocuparse por cosas importantes?

4. Extraordinario rendimiento de procesamiento en tiempo real.

MapReduce es más adecuado para procesar datos fuera de línea (por supuesto, Hadoop también puede usar otras herramientas después de YARN para la computación de flujo). Spark admite muy bien la computación de flujos en tiempo real y se basa en los flujos de Spark para procesar datos en tiempo real.

Spark Streaming tiene una potente API que permite a los usuarios desarrollar rápidamente aplicaciones de streaming. A diferencia de otras soluciones de transmisión como Storm, Spark Streaming realiza gran parte del trabajo de recuperación y entrega sin código ni configuración adicionales.

5. La comunidad ha hecho enormes contribuciones.

A juzgar por la evolución de la versión de Spark, basta para ilustrar la vigorosa vitalidad de esta plataforma y la actividad de la comunidad. Especialmente desde 2013, Spark ha entrado en un período de rápido desarrollo, con envíos de bases de código y actividad de la comunidad aumentando significativamente. En términos de actividad, Spark se encuentra entre los tres primeros entre todos los proyectos de código abierto de la Fundación Apache. En comparación con otras plataformas o marcos de big data, la base de código de Spark es la más activa.

Spark concede gran importancia a las actividades comunitarias y la organización está extremadamente estandarizada. Las reuniones relacionadas con Spark se llevan a cabo de forma regular o irregular. Hay dos tipos de conferencias: una es la Spark Summit, que es muy influyente y se puede decir que es una cumbre para el personal técnico de Spark más importante del mundo. Se han celebrado tres cumbres consecutivas en San Francisco, desde 2013 hasta 2065 438 05; la otra es un pequeño evento Meetup celebrado por la comunidad Spark de vez en cuando en todo el mundo. Spark Meetup también se lleva a cabo regularmente en algunas ciudades importantes de China, como Beijing, Shanghai, Guangzhou, Shenzhen, Xi'an y otros lugares. Los lectores pueden seguir la cuenta oficial local de WeChat para participar.

Escenarios aplicables de Spark

Desde la perspectiva de los requisitos de procesamiento de big data, los servicios de big data se pueden dividir aproximadamente en las siguientes tres categorías:

(1) Complejo lotes El procesamiento de datos suele durar entre decenas de minutos y varias horas.

(2)La consulta interactiva basada en datos históricos suele tardar entre decenas de segundos y varios minutos.

(3) El procesamiento de datos basado en el flujo de datos en tiempo real suele tardar entre cientos de milisegundos y varios segundos.

Actualmente existen muchos software comerciales y de código abierto relativamente maduros para manejar los tres escenarios anteriores: la primera empresa puede usar MapReduce para procesar datos por lotes; la segunda empresa puede usar Impala para consultas interactivas; Para el procesamiento de datos de transmisiones, podemos pensar en Storm, una herramienta profesional de procesamiento de datos de transmisiones. Sin embargo, aquí hay un problema muy importante: para la mayoría de las empresas de Internet, los tres escenarios anteriores suelen encontrarse al mismo tiempo. Si se utilizan diferentes tecnologías de procesamiento para enfrentar estos tres escenarios, los datos de entrada y salida de estos tres escenarios no se pueden compartir sin problemas, es posible que se requiera conversión de formato entre sí y cada software de código abierto requiere un equipo de desarrollo y mantenimiento. . Otro inconveniente es la dificultad para coordinar la asignación de recursos para cada sistema en el mismo grupo.

Entonces, ¿existe algún software que pueda manejar los tres escenarios anteriores al mismo tiempo? Spark puede hacerlo, o tiene el potencial de hacerlo. Spark admite procesamiento por lotes complejo, interoperabilidad y computación de flujo, es compatible con sistemas de archivos distribuidos como HDFS y Amazon S3, y puede implementarse en administradores de recursos de clúster populares como YARN y Mesos.

Basado en el concepto de diseño de Spark (marco de computación iterativa basado en memoria), es más adecuado para aplicaciones que tienen operaciones iterativas o requieren múltiples operaciones en conjuntos de datos específicos. Además, cuanto mayor es el número de iteraciones, mayor es la cantidad de datos leídos y más obvio es el efecto de aplicación de Spark. Por lo tanto, para aplicaciones "iterativas" como el aprendizaje automático, se puede decir que Spark es un buen espectáculo, decenas de veces más rápido que Hadoop MapReduce. Además, debido a que Spark Streaming tiene la característica de almacenar datos intermedios en la memoria, la velocidad de procesamiento es muy rápida y también se puede aplicar a situaciones donde es necesario procesar grandes datos en tiempo real.

Por supuesto, también hay algunas situaciones en las que Spark no es aplicable. Para aplicaciones que actualizan el estado de forma asíncrona en niveles detallados, como servicios web o rastreadores web incrementales y almacenamiento de índices, el modelo de aplicación no es adecuado para modificaciones incrementales. Spark tampoco es adecuado para procesar cantidades de datos extremadamente grandes. Lo "extra grande" mencionado aquí es relativo a la capacidad de memoria de este clúster, porque Spark necesita almacenar datos en la memoria. En términos generales, los datos superiores a 10 TB (análisis único) pueden considerarse datos "extremadamente grandes".

En términos generales, para los centros de datos de pequeñas y medianas empresas, Spark es una buena opción cuando la cantidad de datos calculados a la vez no es grande. Además, Spark no es adecuado para plataformas de computación en la nube híbrida, porque la transmisión de red en las plataformas de computación en la nube híbrida es un gran problema. Incluso si existe una banda ancha dedicada para transmitir datos entre grupos de nubes y grupos locales, la velocidad de lectura de la memoria aún no es suficiente. .