freeCodeCamp/guide/portuguese/data-science-tools/flink/index.md

68 lines
4.5 KiB
Markdown
Raw Normal View History

---
title: Flink
localeTitle: Flink
---
## Flink
O Apache Flink é uma estrutura de processamento de fluxo de código aberto com recursos poderosos de processamento em fluxo e em lote.
O núcleo do Apache Flink é um mecanismo de fluxo de dados de fluxo contínuo distribuído em Java e Scala. O Flink executa programas de fluxo de dados arbitrários de maneira paralela aos dados e pipeline. O sistema de tempo de execução pipeline do Flink permite a execução de programas de processamento em massa / lote e fluxo. Além disso, o tempo de execução do Flink suporta a execução de algoritmos iterativos nativamente. O Flink fornece um mecanismo de streaming de alta produtividade e baixa latência, além de suporte para processamento em tempo de evento e gerenciamento de estado. Os aplicativos Flink são tolerantes a falhas no caso de falha da máquina e suportam semânticas exatamente uma vez. Os programas podem ser escritos em Java, Scala, Python e SQL e são automaticamente compilados e otimizados em programas de fluxo de dados que são executados em um ambiente de cluster ou de nuvem.
O Flink não fornece seu próprio sistema de armazenamento de dados e fornece conectores de fontes e coletores de dados para sistemas como o Amazon Kinesis, o Apache Kafka, o HDFS, o Apache Cassandra e o ElasticSearch.
![Fluxo de trabalho do Flink](https://flink.apache.org/img/flink-home-graphic-update.svg)
**O que há de novo no Apache Flink?**
* O Flink implementa o processamento de streaming real e não o imita com o processamento de micro-lotes. No streaming do Spark, há um caso especial de envio em lote, enquanto no batching do Flink é um caso especial de streaming (fluxo de um tamanho finito)
* O Flink tem melhor suporte para processamento cíclico e iterativo
* Flink tem menor latência e maior taxa de transferência
* Flink tem operadores de janelas mais poderosos
* O Flink implementa snapshots distribuídos leves, com baixa sobrecarga e processamento de apenas uma vez, garantindo o processamento de fluxo, sem usar micro-lotes, pois o Spark não
* Flink suporta estado mutável no processamento de fluxo
### Características
* Um tempo de execução de fluxo inicial que suporta programas de processamento em lote e de fluxo de dados
* APIs elegantes e fluentes em Java e Scala
* Um tempo de execução que suporta alta taxa de transferência e baixa latência de eventos ao mesmo tempo
* Suporte para o _tempo do evento_ e processamento _fora de ordem_ na API do DataStream, com base no _modelo do Dataflow_
* Janelas flexíveis (tempo, contagem, sessões, gatilhos personalizados) em diferentes semânticas de tempo (hora do evento, tempo de processamento)
* Tolerância a falhas com garantias de processamento _exatamente uma vez_
* Contrapressão natural em programas de streaming
* Bibliotecas para processamento de gráficos (lote), Aprendizado de Máquina (lote) e Processamento de Eventos Complexos (fluxo)
* Suporte embutido para programas iterativos (BSP) na API DataSet (batch)
* Gerenciamento de memória personalizado para comutação eficiente e robusta entre algoritmos de processamento de dados in-memory e out-of-core
* Camadas de compatibilidade para Apache Hadoop MapReduce e Apache Storm
* Integração com YARN, HDFS, HBase e outros componentes do ecossistema Apache Hadoop
### Uso Flink
Pré-requisitos para a construção do Flink:
* Ambiente semelhante ao Unix (Usamos Linux, Mac OS X, Cygwin)
* git
* Maven (recomendamos a versão 3.0.4)
* Java 7 ou 8
```
git clone https://github.com/apache/flink.git
cd flink
mvn clean package -DskipTests # this will take up to 10 minutes
```
## Desenvolvendo o Flink
Os commiters do Flink usam o IntelliJ IDEA para desenvolver a base de código do Flink. Recomendamos o IntelliJ IDEA para desenvolver projetos que envolvam o código Scala.
Requisitos mínimos para um IDE são:
* Suporte para Java e Scala (também projetos mistos)
* Suporte para Maven com Java e Scala
#### Mais Informações:
* Site do Flink: [Apache Flink](https://flink.apache.org/)
* Documentação do Flink: [flinkdocs](https://ci.apache.org/projects/flink/flink-docs-release-1.3/)
* Tutorial de Quick Flink: [Início Rápido](https://www.linkedin.com/pulse/introduction-apache-flink-quickstart-tutorial-malini-shukla/)
* Como orientar: [howto](https://data-artisans.com/blog/kafka-flink-a-practical-how-to)
* Flink vs Spark: [comparação](http://www.developintelligence.com/blog/2017/02/comparing-contrasting-apache-flink-vs-spark/)