
Exploit para Apache Flink CVE-2020-17519 dirigido a la vulnerabilidad de recorrido de directorios en las versiones 1.11.2 y anteriores, que permite la lectura no autorizada de archivos en el servidor.
Apache Flink es un marco de procesamiento de flujos (stream processing) de código abierto con potentes capacidades de procesamiento por flujos y por lotes.
Aprende más sobre Flink en https://flink.apache.org/
Un runtime centrado en el streaming que admite tanto programas de procesamiento por lotes como de flujos de datos
API elegantes y fluidas en Java y Scala
Un runtime que admite muy alto rendimiento y baja latencia de eventos al mismo tiempo
Soporte para event time (tiempo de evento) y procesamiento fuera de orden en la API DataStream, basado en el Dataflow Model
Ventanas flexibles (tiempo, conteo, sesiones, disparadores personalizados) en diferentes semánticas de tiempo (event time, processing time)
Tolerancia a fallos con garantías de procesamiento exactamente una vez (exactly-once)
Contrapresión (back-pressure) natural en programas de streaming
Librerías para procesamiento de grafos (por lotes), aprendizaje automático (por lotes) y procesamiento complejo de eventos (streaming)
Soporte integrado para programas iterativos (BSP) en la API DataSet (por lotes)
Gestión de memoria personalizada para un cambio eficiente y robusto entre algoritmos de procesamiento de datos en memoria y fuera de núcleo (out-of-core)
Capas de compatibilidad para Apache Hadoop MapReduce
Integración con YARN, HDFS, HBase y otros componentes del ecosistema Apache Hadoop
case class WordWithCount(word: String, count: Long)
val text = env.socketTextStream(host, port, '\n')
val windowCounts = text.flatMap { w => w.split("\\s") }
.map { w => WordWithCount(w, 1) }
.keyBy("word")
.timeWindow(Time.seconds(5))
.sum("count")
windowCounts.print()
case class WordWithCount(word: String, count: Long)
val text = env.readTextFile(path)
val counts = text.flatMap { w => w.split("\\s") }
.map { w => WordWithCount(w, 1) }
.groupBy("word")
.sum("count")
counts.writeAsCsv(outputPath)
Requisitos previos para compilar Flink:
git clone https://github.com/apache/flink.git
cd flink
mvn clean package -DskipTests # this will take up to 10 minutes
Flink ahora está instalado en build-target.
NOTA: Maven 3.3.x puede compilar Flink, pero no sombreará (shade) correctamente ciertas dependencias. Maven 3.1.1 crea las librerías correctamente. Para compilar las pruebas unitarias con Java 8, usa Java 8u51 o superior para evitar fallos en las pruebas unitarias que utilizan el runner PowerMock.
Los committers de Flink usan IntelliJ IDEA para desarrollar el código base de Flink. Recomendamos IntelliJ IDEA para desarrollar proyectos que involucren código Scala.
Los requisitos mínimos para un IDE son:
El IDE IntelliJ soporta Maven de serie y ofrece un plugin para el desarrollo en Scala.
Consulta nuestra guía Configuración de IntelliJ para más detalles.
NOTA: Por nuestra experiencia, esta configuración no funciona con Flink debido a deficiencias de la versión antigua de Eclipse incluida con Scala IDE 3.0.3 o debido a incompatibilidades de versión con la versión de Scala incluida en Scala IDE 4.4.1.
Recomendamos usar IntelliJ en su lugar (ver arriba)
¡No dudes en preguntar!
Contacta a los desarrolladores y a la comunidad en las listas de correo si necesitas ayuda.
Abre un issue si encontraste un bug en Flink.
La documentación de Apache Flink se encuentra en el sitio web: https://flink.apache.org
o en el directorio docs/ del código fuente.
Este es un proyecto de código abierto activo. Siempre estamos abiertos a personas que quieran usar el sistema o contribuir a él. Contáctanos si buscas tareas de implementación que se ajusten a tus habilidades. Este artículo describe cómo contribuir a Apache Flink.
Apache Flink es un proyecto de código abierto de The Apache Software Foundation (ASF). El proyecto Apache Flink se originó a partir del proyecto de investigación Stratosphere.