Translate

Mostrando las entradas con la etiqueta Apache Flink. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Apache Flink. Mostrar todas las entradas

sábado, 10 de agosto de 2019

Unificando el modelo de programación de motores mapreduce con Apache Beam


Supongamos te tenemos que hacer una aplicación que tiene que utilizar un motor map-reduce y bueno, como sabemos spark, trabajamos con nuestros RDDs y el contexto de spark y tenemos un éxito absoluto.

Ahora bien en un momento nos enteramos que nuestra aplicación funcionaria mejor con Apache Flink o por un tema comercial queremos migrar a Cloud Dataflow de google, no sé la realidad cambia y nosotro no vamos a poder cambiar tan fácil de tecnología, porque estamos atrapados en nuestros RDDs y en el contexto de Spark.

Por esta razón se invento Apache Beam, la idea es unificar el modelo de programación de frameworks map-reduce, streams o big data en general para poder migrar fácilmente de framework a framework.

Apache Beam es un modelo unificado de código abierto para definir tuberías de procesamiento paralelo de datos por lotes y de transmisión. Usando el SDK de Beam, creamos un programa que define tuberías que es ejecutada por uno de los back-end de procesamiento distribuido compatibles con Apache Apex, Apache Flink, Apache Spark y Google Cloud Dataflow. Además Apache Beam SDK es de código abierto.

Beam es particularmente útil para tareas paralelas de procesamiento de datos, en las que el problema se puede descomponer en muchos paquetes más pequeños de datos que se pueden procesar de forma independiente y en paralelo. También puede usar Beam para tareas de Extracción, Transformación y Carga (ETL) e integración de datos puros. Estas tareas son útiles para mover datos entre diferentes medios de almacenamiento y fuentes de datos, transformar datos en un formato más deseable o cargar datos de un sistema.

Los SDK de Beam proporcionan un modelo de programación unificado que puede representar y transformar conjuntos de datos de cualquier tamaño, ya sea que la entrada sea un conjunto de datos finito de una fuente de datos por lotes o un conjunto de datos infinito de una fuente de datos de transmisión  (streams). Los SDK de Beam utilizan las mismas clases para representar datos acotados y no acotados, y las mismas transformaciones funcionan para esos datos.

Beam actualmente admite los siguientes lenguajes:
  • Java Java logo
  • Python Python logo
  • Go 
  • Scala por medio de la librería Scio.

Algo importante es que tenemos un sdk por lenguaje, y es medio obvio dado que esto no corre solo sobre la jdk. Esto me suena tramposo porque no es que para todos los lenguajes tenes todos los frameworks. Sino que para algunos lenguajes tenes algunos frameworks de esa tecnología. 

Los Beam Pipeline Runners traducen la tubería de procesamiento de datos al framework back-end que deseemos. Cuando ejecute su programa Beam, deberá especificar un corredor apropiado para el back-end.

Beam actualmente admite Runners que funcionan con los siguientes back-end de procesamiento distribuido:

  • Apache Apex  
  • Apache Flink 
  • Apache Gearpump (incubating) 
  • Apache Samza
  • Apache Spark 
  • Google Cloud Dataflow 
  • Hazelcast Jet 

Dejo link: https://beam.apache.org/

domingo, 3 de septiembre de 2017

Que es Apache Kafka?

Apache Kafka se ha vuelto cada vez más popular, pero porque utilizar kafka?

Apache Kafka es generalmente utilizado en arquitecturas real-time que utilizan Stream de datos, para proporcionar análisis en tiempo real. Kafka es un sistema de mensajería publicación-suscripción rápido, escalable, duradero y tolerante a fallos.

Kafka se usa en casos de uso donde JMS, RabbitMQ y AMQP no pueden ni siquiera ser considerados debido al volumen y a la capacidad de respuesta. Kafka tiene mayor rendimiento, fiabilidad y características de replicación, lo que hace que sea aplicable para cosas como el seguimiento de las llamadas de servicio (rastrea cada llamada) o el seguimiento de los datos de sensores IoT donde una MOM tradicional puede no ser considerada.

Kafka puede trabajar con Flume / Flafka, Spark Streaming, Storm, HBase, Flink y Spark para la consumo, análisis y procesamiento en tiempo real de los datos de transmisión. Kafka es un flujo de datos utilizado para alimentar bases que utiliza Hadoop para análisis BigData. Además, Kafka Streaming (un subproyecto) se puede utilizar para análisis en tiempo real.

Kafka se utiliza para procesamiento de secuencias, seguimiento de actividades de sitios web, recopilación y monitoreo de métricas, agregación de registros, análisis en tiempo real, CEP, carga de datos en Spark, administración de datos en Hadoop, CQRS, computación en memoria (microservicios).

Kafka es una plataforma de streaming distribuida que se utiliza para sistemas stream publicar-suscribirse. Kafka se utiliza para el almacenamiento tolerante a fallos. Kafka replica particiones de registro de temas en varios servidores. Kafka está diseñado para permitir que tus aplicaciones procesen registros a medida que ocurren. Kafka es rápido y utiliza IO de forma eficiente mediante el batching y la compresión de registros. Kafka se utiliza para desacoplar flujos de datos. Kafka se utiliza para transmitir datos en lagos de datos, aplicaciones y sistemas de análisis de flujo en tiempo real.

Y para colmo es compatible para varios lenguajes como C#, Java, C, Python, Ruby (entre otros)...

Kafka permite construir en tiempo real de flujo de tuberías de datos. Kafka habilita micro-servicios en memoria (es decir actores, Akka, Baratine.io, QBit, reactores, reactivos, Vert.x, RxJava, Spring Reactor). Kafka le permite crear aplicaciones de streaming en tiempo real que reaccionan a los flujos para hacer análisis de datos en tiempo real, transformar, reaccionar, agregar, unir flujos de datos en tiempo real y realizar procesamiento de eventos complejos (CEP).

Puede utilizar Kafka para ayudar en la recopilación de métricas / KPIs, agregando estadísticas de muchas fuentes e implementando la generación de eventos. Puede utilizarlo con microservices (en memoria) y sistemas de actor para implementar servicios en memoria (log de confirmación externa para sistemas distribuidos).

Puede utilizar Kafka para replicar datos entre nodos, volver a sincronizar para nodos y restaurar estado. Aunque Kafka se utiliza principalmente para el análisis de datos en tiempo real y el procesamiento de secuencias, también puede utilizarse para la agregación de registros, mensajería, seguimiento de clics, pistas de auditoría y mucho más.

En un mundo donde la ciencia de los datos y el análisis es cada vez mas utilizado, la captura de datos para alimentar las bases de datos y sistemas de análisis en tiempo real también es un gran problema. Y aqu{i es donde Kafka se vuelve muy relevante.

Dejo link: https://dzone.com/articles/what-is-kafka?edition=316422&utm_source=Zone%20Newsletter&utm_medium=email&utm_campaign=big%20data%202017-08-17
https://kafka.apache.org/

martes, 21 de julio de 2015

Apache Flink


Apache Flink es una plataforma Open Source para el procesamiento de datos, de forma catch o por medio de stream.

Flink’s core es un streaming dataflow engine o un motor de flujo de datos para streaming, que además ofrece distribución de datos, comunicación y tolerancia a fallos.

Flink incluye diferentes APIs:

  • DataSet API: Para datos estáticos, 
  • DataStream API: para los flujos dinámicos de datos. 
  • Tabla API: es un lenguaje de expresión similar a SQL incorporado en Java y Scala.
A la vez trae librerías para Machine Learning library y para hacer gráficos. 

Dejo link: