Apache Spark - Shomira/Proyecto-PAvanzada GitHub Wiki
Es un motor de análisis unificado para el procesamiento de datos a gran escala**, introducido a por la empresa Apache Software Foundation. Esta basado en Hadoop MapReduce tomando en cuenta que se considera la velocidad como clave en el Big Data con Apache Spark permite dividir un trabajo para poder paralelizar los procesos del mismo, es por eso que cuando se procesa una gran cantidad de datos se lo divide y una maquina trabaje cada una de las partes luego se podrá unir. Spark está programado para ofrecer API amigables en Scala, Java, Python y SQL, de esta forma se puede decir que Spark tiene la capacidad de hacer una integración entre los distintos modelos de procesamiento de datos y de esta manera crear aplicaciones mucho mas eficientes en todos los ámbitos. Cuenta con una filosofía de diseño basado en cuatro características: De acuerdo a los costos en tecnología que permite el almacenamiento, a Spark no le es difícil ya que es esencial contar con un servidor eficiente. Para complementar esta característica Spark construye sus cálculos de consulta como un Grafico Acíclico Dirigido (DAG) que actúa como planificador y junto con Catalyst construyen un gráfico que puede ejecutarse por lo general descomprime las tareas y las ejecuta de forma paralela Permite la abstracción de datos estructurados considerados de nivel superior como por ejemplo DataFrames y Dataset.Fácil uso.- permite la abstracción de datos estructurados considerados de nivel superior como por ejemplo DataFrames y Dataset. Divide un programa en módulos pequeños que puedan ejecutarse por separado pero que se combinan entre sí. Es muy flexible al leer archivos de datos.
El framework de Apache Spark cuenta con 5 principales componentes:
Es la base o conjunto de librerías donde se apoya el resto de módulos. Es el núcleo del framework. Es el módulo para el procesamiento de datos estructurados y semi-estructurados. Con este módulo vamos a poder transformar y realizar operaciones sobre los RDD o los dataframes. Está pensado exclusivamente para el tratamiento de los datos. Es el que permite la ingesta de datos en tiempo real. Si tenemos una fuente, por ejemplo Kafka o Twitter, con este módulo podemos ingestar los datos de esa fuente y volcarlos a un destino. Entre la ingesta de datos y su volcado posterior, podemos tener una serie de transformaciones. Es una librería muy completa que contiene numerosos algoritmos de Machine Learning, tanto de clusterización, clasificación, regresión, etc. Nos permite, de una forma amigable, poder utilizar algoritmos de Machine Learning. Permite el procesamiento de grafos (DAG). No permite pintar grafos, sino que permite crear operaciones con grafos, con sus nodos y aristas, e ir realizando operaciones.