Welcome to Our Website

Portal de la Comunidad de desarrolladores de HPE

información de la publicación Original:

"authorDisplayName": "Carol McDonald","publish": "2018-10-17T08:00:00.000Z","tags": "spark"

en esta publicación de blog, daremos una introducción a Apache Spark y su historia y explorar algunas de las áreas en las que su conjunto particular de capacidades muestran la mayor promesa. Discutiremos la relación con otras tecnologías clave y proporcionaremos algunos consejos útiles.

con Spark 2.,0 y versiones posteriores, se implementaron grandes mejoras para hacer que Spark sea más fácil de programar y ejecutar más rápido.

¿Qué es Apache Spark?

Spark es un motor de procesamiento de datos distribuido de propósito general que es adecuado para su uso en una amplia gama de circunstancias. Además del motor de procesamiento de datos Spark core, hay bibliotecas para SQL, aprendizaje automático, computación de gráficos y procesamiento de secuencias, que se pueden usar juntas en una aplicación. Los lenguajes de programación soportados por Spark incluyen: Java, Python, Scala y R., Los desarrolladores de aplicaciones y los científicos de datos incorporan Spark en sus aplicaciones para consultar, analizar y transformar datos rápidamente a escala. Las tareas más frecuentemente asociadas con Spark incluyen trabajos por lotes ETL y SQL en grandes conjuntos de Datos, Procesamiento de datos de streaming desde sensores, IoT o sistemas financieros, y tareas de aprendizaje automático.

Historia

con el fin De entender la Chispa, que ayuda a comprender su historia., Antes de Spark, estaba MapReduce, un marco de procesamiento distribuido resistente, que permitía a Google indexar el volumen Explosivo de contenido en la web, a través de grandes clústeres de servidores de productos básicos.

había 3 conceptos básicos en la estrategia de Google:

  1. distribuir datos: cuando se carga un archivo de datos en el clúster, se divide en trozos, llamados bloques de datos, y se distribuye entre los nodos de datos y se replica en todo el clúster.,
  2. Distribute computation: los usuarios especifican una función map que procesa un par clave/valor para generar un conjunto de pares clave/valor intermedios y una función reduce que fusiona todos los valores intermedios asociados con la misma clave intermedia. Los programas escritos en este estilo funcional se paralelizan automáticamente y se ejecutan en un gran clúster de máquinas de productos básicos de la siguiente manera:

    • el proceso de asignación se ejecuta en cada nodo de datos asignado, trabajando solo en su bloque de datos de un archivo distribuido.,
    • los resultados de los procesos de asignación se envían a los reductores en un proceso llamado «shuffle and sort»: los pares clave/valor de los Mapeadores se ordenan por clave, se particionan por el número de reductores, y luego se envían a través de la red y se escriben en» archivos de secuencia » ordenados por clave en los nodos reductores.
    • el proceso reductor se ejecuta en su nodo asignado y solo funciona en su subconjunto de datos (su archivo de secuencia). La salida del proceso reductor se escribe en un archivo de salida.,
  3. tolera fallos: tanto los datos como el cálculo pueden tolerar fallos al pasar a otro nodo para los datos o el procesamiento.

MapReduce word count ejemplo de ejecución:

algunos algoritmos iterativos, como PageRank, que Google utiliza para clasificar sitios web en sus resultados de motores de búsqueda, requieren encadenar varios trabajos de MapReduce juntos, lo que provoca una gran cantidad de lectura y escritura en el disco., Cuando se encadenan varios trabajos de MapReduce, para cada trabajo de MapReduce, los datos se leen desde un bloque de archivos distribuido en un proceso de map, se escriben y se leen desde un archivo de secuencia intermedio, y luego se escriben en un archivo de salida desde un proceso reductor.

un año después de que Google publicara un white paper describiendo el framework MapReduce (2004), Doug Cutting y Mike Cafarella crearon Apache Hadoop™.,

Apache Spark™ comenzó su vida en 2009 como un proyecto dentro del AMPLab en la Universidad de California, Berkeley. Spark se convirtió en un proyecto incubado de la Apache Software Foundation en 2013, y fue promovido a principios de 2014 para convertirse en uno de los proyectos de primer nivel de la Fundación. Spark es actualmente uno de los proyectos más activos gestionados por la Fundación, y la comunidad que ha crecido en torno al proyecto incluye tanto contribuyentes individuales prolíficos como patrocinadores corporativos bien financiados, como Databricks, IBM y Huawei de China.,

el objetivo del proyecto Spark era mantener los beneficios del marco de procesamiento escalable, distribuido y tolerante a errores de MapReduce, al tiempo que lo hacía más eficiente y fácil de usar. Las ventajas de Spark sobre MapReduce son:

  • Spark se ejecuta mucho más rápido mediante el almacenamiento en caché de datos en memoria a través de múltiples operaciones paralelas, mientras que MapReduce implica más Lectura y escritura desde el disco.
  • Spark ejecuta tareas multihilo dentro de procesos JVM, mientras que MapReduce ejecuta procesos JVM de mayor peso., Esto le da a Spark un inicio más rápido, un mejor paralelismo y una mejor utilización de la CPU.
  • Spark proporciona un modelo de programación funcional más rico que MapReduce.
  • Spark es especialmente útil para el procesamiento paralelo de datos distribuidos con algoritmos iterativos.

cómo se ejecuta una aplicación de Spark en un clúster

el siguiente diagrama muestra una aplicación de Spark ejecutándose en un clúster.,

  • una aplicación Spark se ejecuta como procesos independientes, coordinados por el objeto SparkSession en el programa driver.
  • el administrador de recursos o clúster Asigna tareas a los trabajadores, una tarea por partición.
  • una tarea aplica su unidad de trabajo al conjunto de datos de su partición y genera un nuevo conjunto de datos de partición. Debido a que los algoritmos iterativos aplican operaciones repetidamente a los datos, se benefician del almacenamiento en caché de conjuntos de datos entre iteraciones.,
  • los resultados se envían de vuelta a la aplicación del controlador o se pueden guardar en el disco.,anager incluido con Spark
  • Apache Mesos – un administrador de clúster general que también puede ejecutar aplicaciones Hadoop
  • Apache Hadoop YARN – el administrador de recursos en Hadoop 2
  • Kubernetes – un sistema de código abierto para automatizar la implementación, escalado y administración de aplicaciones en contenedores

Spark también tiene un modo local, donde el controlador y los ejecutores se ejecutan como subprocesos en su computadora en lugar de un clúster, lo que es útil para desarrollar sus aplicaciones desde una computadora personal.,

¿Qué hace Spark?

Spark es capaz de manejar varios petabytes de datos a la vez, distribuidos en un clúster de miles de servidores físicos o virtuales cooperantes. Tiene un amplio conjunto de bibliotecas de desarrolladores y API y admite lenguajes como Java, Python, R y Scala; su flexibilidad lo hace adecuado para una amplia gama de casos de uso., Spark se utiliza a menudo con almacenes de datos distribuidos como HPE Ezmeral Data Fabric, Hadoop HDFS y Amazon S3, con bases de datos NoSQL populares como HPE Ezmeral Data Fabric, Apache HBase, Apache Cassandra y MongoDB, y con almacenes de mensajería distribuidos como HPE Ezmeral Data Fabric y Apache Kafka.

los casos de uso típicos incluyen:

procesamiento de secuencias: desde archivos de registro hasta datos de sensores, los desarrolladores de aplicaciones tienen que hacer frente cada vez más a «secuencias» de datos., Estos datos llegan en un flujo constante, a menudo de múltiples fuentes simultáneamente. Si bien es ciertamente factible almacenar estos flujos de datos en el disco y analizarlos retrospectivamente, a veces puede ser sensible o importante procesar y actuar sobre los datos a medida que llegan. Los flujos de datos relacionados con transacciones financieras, por ejemplo, pueden procesarse en tiempo real para identificar– y rechazar– transacciones potencialmente fraudulentas.

aprendizaje automático: a medida que crecen los volúmenes de datos, los enfoques de aprendizaje automático se vuelven más factibles y cada vez más precisos., El Software puede ser entrenado para identificar y actuar sobre disparadores dentro de conjuntos de datos bien conocidos antes de aplicar las mismas soluciones a datos nuevos y desconocidos. La capacidad de Spark para almacenar datos en memoria y ejecutar consultas repetidas rápidamente lo convierte en una buena opción para entrenar algoritmos de aprendizaje automático. Ejecutar consultas ampliamente similares una y otra vez, a escala, reduce significativamente el tiempo necesario para pasar por un conjunto de posibles soluciones con el fin de encontrar los algoritmos más eficientes.,

análisis interactivo: en lugar de ejecutar consultas predefinidas para crear paneles estáticos de ventas o productividad de la línea de producción o precios de acciones, los analistas de negocios y científicos de datos desean explorar sus datos haciendo una pregunta, viendo el resultado y luego alterando ligeramente la pregunta inicial o profundizando en los resultados. Este proceso de consulta interactiva requiere sistemas como Spark que sean capaces de responder y adaptarse rápidamente.,

integración de datos: los datos producidos por diferentes sistemas en una empresa rara vez son lo suficientemente limpios o consistentes como para combinarse simple y fácilmente para generar informes o Análisis. Los procesos de extracción, transformación y carga (ETL) se utilizan a menudo para extraer datos de diferentes sistemas, limpiarlos y estandarizarlos, y luego cargarlos en un sistema separado para su análisis. Spark (y Hadoop) se utilizan cada vez más para reducir el costo y el tiempo necesarios para este proceso ETL.

¿Quién usa Spark?,

una amplia gama de proveedores de tecnología han apoyado rápidamente a Spark, reconociendo la oportunidad de extender sus productos de big data existentes a áreas donde Spark ofrece un valor real, como consultas interactivas y aprendizaje automático. Compañías conocidas como IBM y Huawei han invertido sumas significativas en la tecnología, y un número creciente de nuevas empresas están construyendo negocios que dependen en su totalidad o en parte de Spark., Por ejemplo, en 2013 el equipo de Berkeley responsable de crear Spark fundó Databricks, que proporciona una plataforma de datos alojada de extremo a extremo con tecnología de Spark. La compañía está bien financiada, habiendo recibido 2 247 millones en cuatro rondas de inversión en 2013, 2014, 2016 y 2017, y los empleados de Databricks continúan desempeñando un papel destacado en la mejora y ampliación del código fuente abierto del proyecto Apache Spark.,

los principales proveedores de Hadoop, incluidos MapR, Cloudera y Hortonworks, se han movido para admitir Spark basado en YARN junto con sus productos existentes, y cada proveedor está trabajando para agregar valor a sus clientes. En otros lugares, IBM, Huawei y otros han realizado inversiones significativas en Apache Spark, integrándolo en sus propios productos y contribuyendo con mejoras y extensiones al proyecto Apache., Las empresas basadas en la Web, como el motor de búsqueda chino Baidu, la operación de comercio electrónico Taobao y la compañía de redes sociales Tencent, todas ejecutan operaciones basadas en Spark a escala, con los 800 millones de usuarios activos de Tencent que generan más de 700 TB de datos por día para el procesamiento en un clúster de más de 8,000 nodos de cómputo.

además de esos gigantes basados en la web, la compañía farmacéutica Novartis depende de Spark para reducir el tiempo requerido para obtener datos de modelado en manos de los investigadores, al tiempo que garantiza que se mantengan las salvaguardias éticas y contractuales.,

¿Qué diferencia a Spark?

hay muchas razones para elegir Spark, pero las siguientes tres son clave:

simplicidad: las capacidades de Spark son accesibles a través de un conjunto de API ricas, todas diseñadas específicamente para interactuar rápida y fácilmente con datos a escala. Estas API están bien documentadas y estructuradas de manera que sea sencillo para los científicos de datos y los desarrolladores de aplicaciones poner a Spark a trabajar rápidamente.

velocidad: Spark está diseñado para la velocidad, operando tanto en memoria como en disco., Usando Spark, un equipo de Databricks empató en el primer lugar con un equipo de la Universidad de California, San Diego, en el Daytona GraySort benchmarking challenge 2014 (https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html). El desafío consiste en procesar un conjunto de datos estáticos; el equipo de Databricks fue capaz de procesar 100 terabytes de datos almacenados en unidades de estado sólido en solo 23 minutos, y el ganador anterior tardó 72 minutos utilizando Hadoop y una configuración de clúster diferente. Spark puede funcionar aún mejor cuando admite consultas interactivas de datos almacenados en memoria., En esas situaciones, hay afirmaciones de que Spark puede ser 100 veces más rápido que MapReduce de Hadoop.

soporte: Spark admite una amplia gama de lenguajes de programación, incluidos Java, Python, R y Scala. Spark incluye soporte para una estrecha integración con una serie de soluciones de almacenamiento líderes en el ecosistema Hadoop y más allá, incluidos HPE Ezmeral Data Fabric (sistema de archivos, base de datos y tienda de eventos), Apache Hadoop (HDFS), Apache HBase y Apache Cassandra. Además, la comunidad de Apache Spark es grande, activa e internacional., Un conjunto creciente de proveedores comerciales, incluidos Databricks, IBM y todos los principales proveedores de Hadoop, ofrecen soporte integral para soluciones basadas en Spark.

El Poder de las tuberías de datos

gran parte del poder de Spark radica en su capacidad de combinar técnicas y procesos muy diferentes en un todo único y coherente. Fuera de Spark, las tareas discretas de seleccionar datos, transformar esos datos de varias maneras y analizar los resultados transformados podrían requerir fácilmente una serie de marcos de procesamiento separados, como Apache Oozie., Spark, por otro lado, ofrece la capacidad de combinarlos, cruzando los límites entre los flujos de trabajo por lotes, de transmisión y interactivos de maneras que hacen que el usuario sea más productivo.

los trabajos Spark realizan varias operaciones consecutivas, en memoria, y solo se derraman al disco cuando lo requieren las limitaciones de memoria. Spark simplifica la gestión de estos procesos dispares, ofreciendo una canalización de datos integral integrada que es más fácil de configurar, ejecutar y mantener., En casos de uso como ETL, estas tuberías pueden volverse extremadamente ricas y complejas, combinando un gran número de entradas y una amplia gama de pasos de procesamiento en un todo unificado que entrega consistentemente el resultado deseado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *