Apache Spark: Un poco de historia

Apache Spark: Un poco de historia

Apache Spark nació en 2009 en la Universidad de Berkeley, y actualmente se encuentra en la versión 2.3.0.

Aquí podemos ver su timeline:

Imagen 0 en Qué es Apache Spark
  •  Nació prácticamente de un paper de Google y a partir de ahí fue evolucionando, pasando por los procesos mapreduce.
  •  En 2008, aproximadamente, apareció Hive y HBase, que son dos herramientas del ecosistema de Hadoop.
  •  A partir de 2009-2010 comenzó la primera versión alfa de Apache Spark.
  •  Apache Spark se sitúa dentro del ecosistema de Apache Haddop , por lo cual se considera como “hija” del mismo.

Características principales

Sus principales características son las siguientes:

  •  Está integrado con Apache Hadoop.
  •  Trabaja en memoria, con lo que se consigue mucha mayor velocidad de procesamiento .
  •  También permite trabajar en disco. De esta manera si por ejemplo tenemos un fichero muy grande o una cantidad de información que no cabe en memoria, la herramienta permite almacenar parte en disco , lo que hace perder velocidad. Esto hace que tengamos que intentar encontrar el equilibrio entre lo que se almacena en memoria y lo que se almacena en disco, para tener una buena velocidad y para que el coste no sea demasiado elevado, ya que la memoria siempre es bastante más cara que el disco.
  •  Nos proporciona API para Java, Scala, Python y R.
  •  Permite el procesamiento en tiempo real , con un módulo llamado Spark Streaming, que combinado con Spark SQL nos va a permitir el procesamiento en tiempo real de los datos. Conforme vayamos inyectando los datos podemos ir transformándolos y volcándolos a un resultado final.
  •  Resilient Distributed Dataset (RDD): Usa la evaluación perezosa, lo que significa es que todas las transformaciones que vamos realizando sobre los RDD, no se resuelven, si no que se van almacenando en un grafo acíclico dirigido (DAG) , y cuando ejecutamos una acción, es decir, cuando la herramienta no tenga más opción que ejecutar todas las transformaciones, será cuando se ejecuten. Esto es un arma de doble filo, ya que tiene una ventaja y un inconveniente. La ventaja es que se gana velocidad al no ir realizando las transformaciones continuamente, sino solo cuando es necesario. El inconveniente es que si alguna transformación eleva algún tipo de excepción, la misma no se va a detectar hasta que no se ejecute la acción, por lo que es más difícil de debuggear o programar.

Componentes

Los componentes principales que conforman el framework son estos:

  •  Spark Core : Es la base o conjunto de librerías donde se apoya el resto de módulos. Es el núcleo del framework.
  •  Spark SQ L: 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.
  •  Spark Streaming : 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.
  •  Spark MLLib : 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.
  •  Spark Graph : 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.

Related Posts

Deja un comentario

Your email address will not be published. Required fields are marked.*

× ¿Cómo puedo ayudarte?