Post on 06-Aug-2020
Acelerando la innovación
con Apache Spark
Ricardo Barranco Fragoso
IBM Big Data & Analytics Specialist
rbarran@mx1.ibm.com IBM México
Big Data y la Ciencia de Big Data y la Ciencia de
Datos
¿Es realmente un concepto nuevo?
¿El término “ciencia de datos” tiene sentido?
¿Es tan sólo una moda? ¿Exagerado?
¿Porqué el término se volvió popular desde hace un par de
años atrás?
Entonces, la Ciencia de Datos es...?
IBM Spark
años atrás?
¿Hacia dónde va?
¿ Realmente las empresas deberían invertir en perfiles de
científicos de datos?
¿Es realmente un concepto nuevo? No en realidad
¿El término “ciencia de datos” tiene sentido? Sí, transformar
ideas complejas para tomar mejores decisiones.
¿Es tan sólo una moda? ¿Exagerado? No, a veces
Entonces, la Ciencia de Datos es...?
IBM Spark
¿Porqué el término se volvió popular desde hace un par de años atrás?
Big Data, aunque puedes hacer ciencia de datos sin Big Data
¿Hacia dónde va? ¿¿¿???
¿Realmente las empresas deberían invertir en perfiles de científicos de
datos? Sí y es una buena opción
���������� �� � ������� �����
����� �� ������������� ����� �� �� ���������� ����������
����� ��������� � !�"
#� ���� ��� �� #� ���� ��� �������� ��$����� ��
%������������� ������ ����&'( )���� #�� *�������'(���+� ���
Ciencia de Datos en la Historia
IBM Spark
%������������� ������ ����&'( )���� #�� *�������'(���+� ���
���� ������)�'(
����� �� �������������(�,!�-����� !�
)�!���.
�!�/��!�+����������,���0��
����� �,���.�-1���� �������
2���� �����������+�����������������
���.�2������.�3+������.
������� � � �����+1��� ����4���
�� �,�� ����# 1��������������.
Hadoop es muy eficiente en procesos
batch de gran tamaño, pero tiene límites…
IBM Spark
…y por más que Hadoop intente “volar”,
su desempeño se verá afectado.
IBM Spark
Apache SparkApache Spark
El proceso Analítico y de desarrollo hoy …. con Spark
¿Qué es Spark?
IBM Spark
complejo | disperso | limitado flexible | unificado | ilimitado
• No es un repositorio de datos – Spark se integra con otros repositorios de
datos pero no proporciona uno propio.
• No es sólo para Hadoop – Spark puede ejecutarse junto con Hadoop
(especialmente HDFS), pero Spark es un sistema independiente, standalone.
Lo que NO es Spark...
IBM Spark
• No es sólo para machine learning – Spark incluye machine learning y lo hace
muy bien, pero puede manejar tareas mucho más amplias de igual forma.
• No es un reemplazo de IBM InfoSphere Streams – Spark Streaming es micro-
batching, no “real streaming”, y no puede manejar procesamiento de eventos
complejos en tiempo real (microsegundos) como lo hace IBM InfoSphere
Streams
• 2002 – MapReduce @ Google
• 2004 – MapReduce paper
• 2006 – Hadoop @ Yahoo
• 2008 – Hadoop Summit
• 2010 – Spark paper (UC Berkeley)
• 2014 – Apache Spark top-level
• 2014 – 1.2.0 release in December
Breve Historia de Spark
Activity for 6 months in 2014
(from Matei Zaharia – 2014 Spark Summit)
IBM Spark
• 2015 – 1.3.0 release in March
• MapReduce comenzó como un paradigma de procesamiento general por lotes
• 2 limitantes en Hadoop
–Dificultad para programar en MapReduce
–Procesamiento en Batch no adecuado para varios casos de uso
• Spark is HOT!!!
• Es el proyecto más activo en el ecosistema de Hadoop
• Uno de los 3 proyectos más activos en Apache
Apache Spark es una plataforma computacional open source de
propósito general, rápida y fácil de usar para análisis y procesos
avanzados a gran escala
•Rápido
– Procesamiento en memoria
– Más rápido que MapReduce – 100x
¿Qué es Apache Spark?
IBM Spark
•Próposito General
–Diversas cargas de trabajo
–SQL, Streaming y analíticos complejos
•Flexible y más fácil de usar que MapReduce–Escrito en Scala, (Orientado a Objetos y Funcional).
–Scala, Python y Java
–Soporte en Hadoop, YARN, Mesos, standalone o cloud
Logistic regression in Hadoop and Spark
from http://spark.apache.org
Capacidades Spark: provee varios métodos
analíticos para procesar datos de diversas
fuentes
Motor de procesamiento, maneja tareas
������������������������
����� �
������
����� �
�����
������ �
��� � ��
�����
������ �
��� � ��
������
�������
������
�������
Ejecutarsentencias
SQL
Realizaranalíticos en streaming en
micro-batches
Algoritmosestadísticos
y de machine learning
Framework de grafos para
procesamientodistribuido
IBM Spark
������������������
maneja tareasdistribuidas y
funciones básicasde I/O
Gran variedad de
Fuentes de datosy formatos que
son soportados,
tanto on-premise ocloud
BigInsights
(HDFS)
Cloudant
dashDB
Object
Storage
SQL
DB
…muchosotros más
IBM CLOUD OTHER CLOUD CLOUD APPS ON-PREMISE
Abstracción de Programación de Spark
Resilient – si una partición de datos en memoria se pierden, se
tiene suficiente información para que sean recreados. Esto
elimina la necesidad de replicación para lograr tolerancia a fallos.
Distributed - Colección de objetos que pueden ser almacenados
Resilient Distributed Datasets (RDD)
IBM Spark
Distributed - Colección de objetos que pueden ser almacenados
en memoria o en disco a través de un clúster.
Dataset – datos iniciales que pueden provenir de un archivo,
repositorios o ser creados programáticamente.
RDDs son la unidad fundamental de datos en Spark.
// Create RDD
val quotes = sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val ibmQuotes = quotes.filter(_.startsWith(“IBM"))
val ibmSpark = ibmQuotes.map(_.split(" ")).map(x => x(1))
// Caching
ibmSpark.cache()
����������������������������� ���������
Ejecución del código en Spark (1)
IBM Spark
ibmSpark.cache()
// Action
ibmSpark.filter(_.contains("Spark")).count()
IBM Spark es cool
ROOT Spark es divertido
ROOT Spark es genial
IBM Scala es elegante
ROOT Scala es flexible
File: sparkQuotes.txt
// Create RDD
val quotes = sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val ibmQuotes = quotes.filter(_.startsWith(“IBM"))
val ibmSpark = ibmQuotes.map(_.split(" ")).map(x => x(1))
// Caching
Ejecución del Código en Spark(2)
IBM Spark
ibmSpark.cache()
// Action
ibmSpark.filter(_.contains("Spark")).count()
IBM Spark es cool
ROOT Spark es divertido
ROOT Spark es genial
IBM Scala es elegante
ROOT Scala es flexible
File: sparkQuotes.txt RDD: quotes
// Create RDD
val quotes = sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val ibmQuotes = quotes.filter(_.startsWith(“IBM"))
val ibmSpark = ibmQuotes.map(_.split(" ")).map(x => x(1))
// Caching
Ejecución del Código en Spark (3)
IBM Spark
ibmSpark.cache()
// Action
ibmSpark.filter(_.contains("Spark")).count()
IBM Spark es cool
ROOT Spark es divertido
ROOT Spark es genial
IBM Scala es elegante
ROOT Scala es flexible
File: sparkQuotes.txt RDD: quotes RDD: ibmQuotes
// Create RDD
val quotes = sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val ibmQuotes = quotes.filter(_.startsWith(“IBM"))
val ibmSpark = ibmQuotes.map(_.split(" ")).map(x => x(1))
// Caching
Ejecución del Código en Spark (4)
IBM Spark
ibmSpark.cache()
// Action
ibmSpark.filter(_.contains("Spark")).count()
IBM Spark es cool
ROOT Spark es divertido
ROOT Spark es genial
IBM Scala es elegante
ROOT Scala es flexible
File: sparkQuotes.txt RDD: quotes RDD: ibmQuotes RDD: ibmSpark
// Create RDD
val quotes = sc.textFile("hdfs:/sparkdata/sparkQuotes.txt")
// Transformations
val ibmQuotes = quotes.filter(_.startsWith(“IBM"))
val ibmSpark = ibmQuotes.map(_.split(" ")).map(x => x(1))
// Caching
Ejecución del Código en Spark (5)
IBM Spark
ibmSpark.cache()
// Action
ibmSpark.filter(_.contains("Spark")).count()
IBM Spark es cool
ROOT Spark es divertido
ROOT Spark es genial
IBM Scala es elegante
ROOT Scala es flexible
File: sparkQuotes.txt
IBM Spark es cool
ROOT Spark es divertido
ROOT Spark es genial
IBM Scala es elegante
ROOT Scala es flexible
RDD: quotes
IBM Spark es cool
IBM Scala es elegante
RDD: ibmQuotes
Spark
Scala
RDD: ibmSpark
1
Spark toma el concepto de Map Reduce
en un siguiente nivel
• API de más alto nivel = desarrollo ágil y
sencillo
• Baja Latencia = procesamiento en casi tiempo
real
• Almacenamiento en memoria = hasta 100x de
mejora en desempeño
Spark vs Hadoop MapReduce
IBM Spark
mejora en desempeño
� �!"��"�� ��������#���#�$�� ��%�
��������� &������� #� ���'�� �%�
�!"(��
� )���*���� � ����#��������� �
#�#��� �#�"�#� ���� � %����� ����
¿Cómo es Spark SIMILAR a
Hadoop?
¿Cómo es Spark DIFERENTEde Hadoop?
� �!"��"�� + �����$���,�*������#�
�-�#���.��� ��&���� ������#�# #�
���� /00�
� ��$��������#�# ���� ����� #�"�� #�
� %����� ������
Spark vs Hadoop
IBM Spark 1/
� )"# ������� �� ����� �
��� � #�-�#��� $�"���'��
����� � ���� -23�
� 4� ���"����� �" �� �� �����
��� ������" �#�#
� ��#�� #�����������5 �%� �����.��
�� ����� 6��� �� �7 �� #��5#���
� �"������� �"�&� ������#�� ��,��5��
8�������9#"� �-�#���
� �������� �������'�#�� ����� �
��� � �
Acelerando la Innovación Acelerando la Innovación
con Spark
¿Quién usa Spark y para qué?Data Engineer Application developer
'������3 ���������
Decisiones más rápidas:- Identificar procesos
lentos y corregirlos
Decisiones más rápidas en Mejores decisiones para
IBM Spark
Business Analyst Data Scientist
������+�� ���%��
����+� �
Decisiones más rápidas en tiempo real:- Detección de fraude
- Ataques DDoS
Mejores decisiones para procesos sofisticados:- Detección de anomalías
- Análisis de tendencias
- Sistemas de recomendación
- Más de 100,000 conductores.- Cálculo de tarifa dinámica.
- Posición óptima de autos para
- Desacoplamiento entre la ingesta de datos (raw data) y el modelo de DW
relacional.
IBM Spark
- Posición óptima de autos para
maximizar ganancias.
- Problemas de escalabilidad (más ciudades, más choferes, más
usuarios).
- Datos del viaje contienen cientos de
miles de trayectos diarios --> Crítico
para pagar/cobrar con exactitud al chofer/usuario.
relacional.
- Almacenamiento en HDFS primero y
después procesamiento a gran escala con Spark.
- Kafka logs (datos del viaje)
almacenados en el cluster de Hadoop
y después con SparkSQL los datos JSON son convertidos en archivos
Parquet para analizarlos con Hive.
Recursos AdicionalesRecursos Adicionales
Spark on IBM Bluemix
IBM Spark
• The Learning Spark O’Reilly book
• bigdatauniversity.com
• spark-summit.org
Recursos
IBM Spark
IBM | SPARKPower of data. Simplicity of design. Speed of innovation.
Ricardo Barranco Fragoso
rbarran@mx1.ibm.com IBM México