089

089

martes, 17 de noviembre de 2015

Tecnologia Apache Spark

Apache Spark


 Actualmente en muchos casos estas grandes cantidades de datos se suelen procesar gracias Hadoop, un framework de procesamiento de Big Data, pero Apache Spark quiere hacerle frente y asegura tener 100 veces mayor rapidez en cálculos en memoria y 10 veces más en disco.

Las nuevas tecnologías continúan emergiendo permitiendo más rápido procesamiento de datos y análisis avanzados. La plataforma Hadoop fue un gran avance en este espacio, ya que resuelve muchos de almacenamiento y recuperación de los desafíos para los conjuntos de datos muy grandes y variadas dividiendo y procesamiento a través de múltiples máquinas. Esto fue más rápido, más rentable, y menos propenso a fallos que los sistemas RDBMS tradicionales. Aunque Hadoop fue un gran paso adelante y hace que sea más fácil de almacenar, procesar y recuperar datos en un entorno schemaless que ya tiene 10 años y no es capaz de cálculos múltiples pasadas. Al utilizar Hadoop los datos de salida de un puesto de trabajo tiene que ser almacenado después de cada paso frenar las cosas debido a la replicación y almacenamiento. Apache Spark resuelve este problema mediante el apoyo de datos de tuberías de varios pasos y permite que los trabajos que se ejecutan en memoria.  
Se calcula que Apache chispa puede ejecutar programas de hasta 100 veces más rápido en la memoria y 10 veces más rápido en el disco en comparación con solo Hadoop. Al igual que con muchos proyectos de Apache que se enorgullece de su sencillez y compatibilidad. Proporciona código simplificado para los desarrolladores y es compatible con Java, Scala y Python idiomas. Spark también no se limita a ser arrollado justo encima Hadoop; puede integrarse con otras plataformas como mesos, EC2 e incluso ser ejecutado como una plataforma independiente.
Apache chispa tiene algunas características que synergises muy bien con su "computación en clúster relámpago-rápido". Estas bibliotecas de alto nivel en la actualidad incluyen: SQL Spark, Spark Streaming, MLlib y GraphX. Spark SQL permite a los usuarios de ETL sus datos en formatos como JSON o parqué y consultar sus datos a través de SQL o HIVE. Spark Streaming utiliza la velocidad del Spark y permite a los usuarios procesar datos en tiempo real. Se utiliza una corriente de datos distribuidos elásticos (DDR) para procesar los datos. MLlib es una biblioteca de aprendizaje automático que utiliza diversos algoritmos para procesar los datos de una manera significativa, que luego se puede utilizar con GraphX ​​para visualizar los resultados.
Con todo, Apache Spark es uno de los motores más rápidos grandes de análisis de datos en el mercado que es ampliamente compatible, fácil de usar y reúne una gran cantidad de características en una solución.

Hadoop y Spark

Hadoop como una gran tecnología de procesamiento de datos ha sido de alrededor de 10 años y ha demostrado ser la solución de elección para el procesamiento de grandes conjuntos de datos. MapReduce es una gran solución para los cálculos de un solo paso, pero no es muy eficaz para los casos de uso que requieren cálculos de múltiples pasadas y algoritmos. Cada paso en el flujo de trabajo de procesamiento de datos tiene una fase Mapa y uno Reducir fase y tendrás que convertir cualquier caso de uso en modelo MapReduce para aprovechar esta solución.
Los datos de salida de trabajo entre cada paso tiene que ser almacenado en el sistema de archivos distribuido antes de comenzar el siguiente paso. Por lo tanto, este enfoque tiende a ser lenta debido a la replicación y de almacenamiento en disco. Además, las soluciones Hadoop típicamente incluyen grupos que son difíciles de configurar y administrar. También se requiere la integración de varias herramientas para diferentes casos de uso de datos grandes (como Mahout de aprendizaje automático y la tormenta para el streaming de procesamiento de datos).
Si querías hacer algo complicado, usted tendría que encadenar una serie de trabajos de MapReduce y ejecutarlos en secuencia. Cada uno de esos trabajos fue de alta latencia, y ninguno podía comenzar hasta que el trabajo anterior había terminado por completo.
Spark permite a los programadores desarrollar tuberías de datos complejos, de varios pasos utilizando grafo acíclico (dirigida DAG) patrón. También es compatible con el intercambio de datos en memoria a través de los DAG, por lo que los diferentes puestos de trabajo pueden trabajar con los mismos datos.
Spark se ejecuta sobre Hadoop Sistema de archivos distribuido (existentes HDFS) infraestructura para proporcionar una funcionalidad mejorada y adicional. Proporciona soporte para la implementación de aplicaciones de chispa en un clúster Hadoop v1 existente (con Simr - Spark-Inside-MapReduce) o Hadoop v2 clúster HILO o incluso Apache mesos.
Debemos mirar a Spark como alternativa a Hadoop MapReduce en vez de un reemplazo para Hadoop. No es la intención de reemplazar Hadoop sino proporcionar una solución integral y unificada para administrar diferentes casos y requisitos de uso de datos grandes.
apache1-hadoop

Spark Características

Spark toma MapReduce al siguiente nivel con la baraja menos caros en el procesamiento de datos. Con capacidades como el almacenamiento de datos en memoria y cerca procesamiento en tiempo real, el rendimiento puede ser varias veces más rápido que otras tecnologías de datos grandes.
Spark también apoya la evaluación perezosa de consultas de datos grandes, que ayuda con la optimización de los pasos en los flujos de trabajo de procesamiento de datos. Proporciona una API de alto nivel para mejorar la productividad de los desarrolladores y un modelo arquitecto consistente para soluciones de datos grandes.
Spark tiene resultados intermedios en la memoria en lugar de escribirlos en el disco que es muy útil sobre todo cuando es necesario trabajar en los mismos conjuntos de datos varias veces.Está diseñado para ser un motor de ejecución que funciona tanto en la memoria y en el disco.Operadores Spark realizar operaciones externas cuando los datos no caben en la memoria.Spark se puede utilizar para el procesamiento de conjuntos de datos que mayor que la memoria agregada en un clúster.
Spark intentará almacenar tanto como datos en la memoria y luego se derramará en el disco.Es capaz de almacenar parte de un conjunto de datos en la memoria y los datos restantes en el disco. Usted tiene que mirar los datos y casos de uso para evaluar los requisitos de memoria.Con este almacenamiento de datos en memoria, Spark viene con ventaja de rendimiento.
Otras características Spark incluyen:
  • Soporta más que un mapa y reducir funciones.
  • Optimiza gráficos operador arbitrarias.
  • La evaluación perezosa de consultas de datos grandes que ayuda con la optimización del flujo de trabajo global de procesamiento de datos.
  • Proporciona APIs concisas y consistentes en Scala, Java y Python.
  • Ofrece shell interactivo para la Scala y Python. Esto aún no está disponible en Java.
Spark está escrito en Scala Programming Language y se ejecuta en Java Virtual Machine (JVM) medio ambiente. Actualmente soporta los siguientes idiomas para el desarrollo de aplicaciones utilizando Spark:
  • Scala
  • Java
  • Python
  • Clojure
  • R

Ecosistema Spark

Aparte de Spark Core API, hay bibliotecas adicionales que son parte del ecosistema Spark y proporcionan capacidades adicionales en la analítica Big Data y áreas de aprendizaje automático.
Estas bibliotecas incluyen:
  • Spark Streaming:
    • Spark Streaming se puede utilizar para procesar los datos de streaming en tiempo real.Esto se basa en el estilo por lotes micro de la informática y de procesamiento. Utiliza la DSTREAM que es básicamente una serie de DDR, para procesar los datos en tiempo real.
  • Spark SQL:
    • Spark SQL proporciona la capacidad para exponer las bases de datos de chispa más de API JDBC y permitirá ejecutar el SQL como consultas sobre datos Spark utilizando herramientas de BI y visualización tradicionales. Spark SQL permite a los usuarios ETL sus datos de diferentes formatos Es actualmente (como JSON, parqué, una base de datos), lo transforman y lo exponen a ad-hoc de consulta.
  • Spark MLlib:
    • MLlib es la biblioteca de aprendizaje automático escalable de chispa que consiste en algoritmos y utilidades de aprendizaje en común, incluidas la clasificación, regresión, clustering, filtrado colaborativo, la reducción de dimensionalidad, así como primitivas de optimización subyacentes.
  • Spark GraphX:
    • GraphX ​​es el nuevo (alfa) Spark API para gráficos y computación-gráfico paralelo. En un nivel alto, GraphX ​​extiende la Chispa RDD introduciendo el Resilient Distribuido Gráfico propiedad: un multi-grafo dirigido con propiedades asociadas a cada vértice y el borde. Para apoyar gráfico de computación, GraphX ​​expone un conjunto de operadores fundamentales (por ejemplo, subgrafo, joinVertices, y aggregateMessages), así como una variante optimizada de la API Pregel. Además, GraphX ​​incluye una creciente colección de algoritmos de grafos y constructores para simplificar las tareas de análisis gráfico.
Fuera de estas bibliotecas, hay otros como BlinkDB y Tachyon.
BlinkDB es un motor de búsqueda aproximada y se puede utilizar para ejecutar consultas SQL interactivas en grandes volúmenes de datos. Permite a los usuarios disyuntiva exactitud de consulta para el tiempo de respuesta. Funciona en grandes conjuntos de datos mediante la ejecución de consultas sobre muestras de datos y la presentación de los resultados anotados con barras de error significativos.
Tachyon es un sistema de archivos distribuido memoria céntrica que permite el intercambio de archivos fiable en memoria de velocidad a través de los marcos de racimo, como Spark y MapReduce. Se almacena en caché los archivos de trabajo conjunto en la memoria, evitando así ir al disco para cargar conjuntos de datos que se leen con frecuencia. Esto permite a los diferentes trabajos / consultas y marcos para acceder a los archivos almacenados en caché a la velocidad de la memoria.
Y también hay adaptadores de integración con otros productos como Cassandra (SparkCassandra conector) y R (SparkR). Con Cassandra conector, puede utilizar Spark acceder a los datos almacenados en una base de datos Cassandra y realizar análisis de datos en esos datos.

¿Por qué Spark en lugar de Hadoop?

Desarrollado en Scala, Spark es una plataforma de computación de código abierto para análisis y procesos avanzados, que tiene muchas ventajas sobre Hadoop. Desde el principio, Spark fue diseñado para soportar en memoria algoritmos iterativos que se pudiesen desarrollar sin escribir un conjunto de resultados cada vez que se procesaba un dato. Esta habilidad para mantener todo en memoria es una técnica de computación de alto rendimiento aplicado al análisis avanzado, la cual permite que Spark tenga unas velocidades de procesamiento que sean 100 veces más rápidas que las conseguidas utilizando MapReduce.
Spark tiene un framework integrado para implementar análisis avanzados que incluye la librería MLlib, el motor gráfico GraphXSpark Streaming, y la herramienta de consulta Shark. Esta plataforma asegura a los usuarios la consistencia en los resultados a través de distintos tipos de análisis.
Una de las cosas realmente buenas de Spark es que lo puedes descargar y ejecutar en tu ordenador personal. Para aquellos nuevos en Spark, esto es una excelente oportunidad para familiarizarse con esta nueva tecnología. Si estáis interesados en aprender más sobre Apache Spark, aquí os dejo un tutorial.
¿Quién apoya Spark comecialmente? Cloudera, Hortonworks y DataBricks son un ejemplo. Para ponernos al día y ver cómo se está uitilizando Spark en los negocios, la última conferencia de O’Reilly Strata 2014 en Santa Clara tiene una gran presentación de la mano de Matei Zaharia.
procesamiento


No hay comentarios.:

Publicar un comentario