Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Computação
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gerenciamento e governança
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migração
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análises
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Outros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Segurança e conformidade
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Blockchain
Blockchain Service
Serviços de mídia
Media Processing Center
Video On Demand
Live
SparkRTC
Armazenamento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Cloud Server Backup Service
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bancos de dados
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicações de negócios
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribuição de conteúdo e computação de borda
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluções
SAP Cloud
High Performance Computing
Serviços para desenvolvedore
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
MacroVerse aPaaS
KooPhone
KooDrive

Princípios básicos do Flink

Atualizado em 2023-05-19 GMT+08:00

Visão geral

Flink é uma estrutura de computação unificada que suporta processamento em lote e processamento de fluxo. Ele fornece um mecanismo de processamento de dados de fluxo que suporta distribuição de dados e computação paralela. Flink apresenta processamento de fluxo e é um mecanismo de processamento de fluxo de código aberto superior na indústria.

O Flink oferece processamento de dados de pipeline de alta simultaneidade, latência de milissegundos e alta confiabilidade, tornando-o extremamente adequado para processamento de dados de baixa latência.

Figura 1 mostra a pilha de tecnologia do Flink.

Figura 1 Pilha de tecnologia de Flink

O Flink fornece os seguintes recursos na versão atual:

  • DataStream
  • Ponto de verificação
  • Janela
  • Pipeline de job
  • Tabela de configuração

Outros recursos são herdados da comunidade de código aberto e não são aprimorados. Para obter detalhes, visite https://ci.apache.org/projects/flink/flink-docs-release-1.12/.

Arquitetura do Flink

Figura 2 mostra a arquitetura do Flink.

Figura 2 Arquitetura do Flink

Como mostrado na figura acima, todo o sistema do Flink consiste em três partes:

  • Client

    O cliente do Flink é usado para enviar jobs (jobs de streaming) para o Flink.

  • TaskManager

    TaskManager é um nó de execução de serviço do Flink. Ele executa tarefas específicas. Um sistema do Flink pode ter múltiplos TaskManagers. Estes TaskManagers são equivalentes entre si.

  • JobManager

    JobManager é um nó de gerenciamento do Flink. Ele gerencia todos os TaskManagers e agenda tarefas enviadas pelos usuários para TaskManagers específicos. No modo de alta disponibilidade (HA), vários JobManagers são implementados. Entre esses JobManagers um é selecionado como o JobManager ativo e os outros são em espera.

Para obter mais informações sobre a arquitetura do Flink, visite https://ci.apache.org/projects/flink/flink-docs-master/docs/concepts/flink-architecture/.

Princípios do Flink

  • Fluxo & Transformação & Operador

    Um programa Flink consiste em dois blocos de construção: fluxo e transformação.

    1. Conceitualmente, um fluxo é um fluxo (potencialmente interminável) de registros de dados, e uma transformação é uma operação que leva um ou mais fluxos como entrada e produz um ou mais fluxos de saída como resultado.
    2. Quando um programa Flink é executado, ele é mapeado para um fluxo de dados de streaming. Um fluxo de dados de streaming consiste em um grupo de fluxos e operadores de transformação. Cada fluxo de dados começa com um ou mais operadores de origem e termina em um ou mais operadores de coletor. Um fluxo de dados se assemelha a um grafo acíclico direcionado (DAG).

      Figura 3 mostra o fluxo de dados de fluxo contínuo para o qual um programa Flink é mapeado.

      Figura 3 Exemplo de DataStream do Flink

      Como mostrado em Figura 3, FlinkKafkaConsumer é um operador de origem; Map, KeyBy, TimeWindow e Apply são operadores de transformação; RollingSink é um operador de coletor.

  • Fluxo de dados do pipeline

    As aplicações no Flink podem ser executadas em modo paralelo ou distribuído. Um fluxo pode ser dividido em uma ou mais partições de fluxo, e um operador pode ser dividido em várias subtarefas de operador.

    O executor de fluxos e operadores são otimizados automaticamente com base na densidade de operadores a montante e a jusante.

    • Operadores com baixa densidade não podem ser otimizados. Cada subtarefa de operador é executada separadamente em threads diferentes. O número de subtarefas de operador é o paralelismo desse operador em particular. O paralelismo (o número total de partições) de um fluxo é o de seu operador produtor. Diferentes operadores do mesmo programa podem ter diferentes níveis de paralelismo, como mostrado em Figura 4.
      Figura 4 Operador
    • Operadores com alta densidade podem ser otimizados. Flink encadeia subtarefas do operador em uma tarefa, ou seja, uma cadeia de operadores. Cada cadeia de operadores é executada por um thread no TaskManager, como mostrado em Figura 5.
      Figura 5 Cadeia do operador
      • Na parte superior do Figura 5, os operadores condensados Source e Map são encadeados em uma Operator Chain, ou seja, um operador maior. A Operator Chain, o KeyBy e o Sink representam um operador, respectivamente, e estão conectados entre si através de fluxos. Cada operador corresponde a uma tarefa durante a execução. Ou seja, existem três tarefas na parte superior.
      • Na parte inferior de Figura 5, cada tarefa, exceto Sink, é paralela em duas subtarefas. O paralelismo do operador Sink é um.

Principais recursos

  • Processamento de fluxo

    O mecanismo de processamento de fluxo em tempo real apresenta alta taxa de transferência, alto desempenho e baixa latência, o que pode fornecer capacidade de processamento em milissegundos.

  • Vários gerenciamento de status
    A aplicação de processamento de fluxo precisa armazenar os eventos recebidos ou o resultado intermediário em um determinado período de tempo para acesso e processamento subsequentes em um determinado ponto de tempo. O Flink fornece diversos recursos para gerenciamento de status, incluindo:
    • Vários tipos básicos de status: o Flink fornece vários estados para estruturas de dados, como ValueState, ListState e MapState. Os usuários podem selecionar o tipo de status mais eficiente e adequado com base no modelo de serviço.
    • Back-end de estado rico: o Back-end de estado gerencia o status das aplicações e executa as operações de Checkpoint conforme necessário. O Flink fornece back-ends de estados diferentes. O estado pode ser armazenado na memória ou no RocksDB e suporta o mecanismo Ponto de verificação assíncrono e incremental.
    • Consistência de estado exatamente uma vez: os recursos de Ponto de verificação e recuperação de falhas do Flink garantem que o status das tarefas da aplicação seja consistente antes e depois da ocorrência de uma falha. O Flink suporta saída transacional para alguns dispositivos de armazenamento específicos. Desta forma, a saída de exatamente uma vez pode ser garantida mesmo quando ocorre uma falha.
  • Diversas semânticas de tempo

    O tempo é uma parte importante das aplicações de processamento de fluxo. Para aplicações de processamento de fluxo em tempo real, operações como agregação de janelas, detecção e correspondência com base na semântica de tempo são muito comuns. Flink fornece várias semânticas de tempo.

    • Horário do evento: o carimbo de data/hora fornecido pelo evento é usado para o cálculo, facilitando o processamento dos eventos que chegam em uma sequência aleatória ou chegam atrasados.
    • Marca d'água: o Flink introduz o conceito de Marca d'água para medir o desenvolvimento do tempo do evento. A marca d'água também fornece garantia flexível para balancear a latência do processamento e a integridade dos dados. Ao processar fluxos de eventos com marca d'água, o Flink oferece várias opções de processamento se os dados chegarem após o cálculo, por exemplo, redirecionando dados (saída lateral) ou atualizando o resultado do cálculo.
    • O tempo de processamento e o tempo de ingestão são suportados.
    • Janela de streaming altamente flexível: o Flink suporta a janela de tempo, a janela de contagem, a janela de sessão e a janela personalizada orientada por dados. Você pode personalizar as condições de disparo para implementar o modo de cálculo de streaming complexo.
  • Mecanismo de tolerância a falhas

    Em um sistema distribuído, se uma única tarefa ou nó quebrar ou estiver com defeito, toda a tarefa pode falhar. O Flink fornece um mecanismo de tolerância a falhas no nível da tarefa, que garante que os dados do usuário não sejam perdidos quando uma exceção ocorrer em uma tarefa e possam ser restaurados automaticamente.

    • Ponto de verificação: o Flink implementa a tolerância a falhas com base no ponto de verificação. Os usuários podem personalizar a política de pontos de verificação para toda a tarefa. Quando uma tarefa falha, ela pode ser restaurada para o status do ponto de verificação mais recente e para os dados após o snapshot ser reenviado da fonte de dados.
    • Ponto de salvamento: um ponto de salvamento é um instantâneo consistente do status da aplicação. O mecanismo de ponto de salvamento é semelhante ao do ponto de verificação. No entanto, o mecanismo de ponto de salvamento precisa ser acionado manualmente. O mecanismo de ponto de salvamento garante que as informações de status da aplicação de fluxo atual não sejam perdidas durante a atualização ou migração da tarefa, facilitando a suspensão e a recuperação da tarefa em qualquer ponto de tempo.
  • Flink SQL

    APIs de tabela e SQL usam o Apache Calcite para analisar, verificar e otimizar consultas. APIs de tabela e SQL podem ser perfeitamente integradas com APIs de DataStream e DataSet e suportam funções escalares definidas pelo usuário, funções de agregação e funções de valor de tabela. A definição de aplicações como análise de dados e ETL é simplificada. O exemplo de código a seguir mostra como usar instruções Flink SQL para definir uma aplicação de contagem que registra horários de sessão.

    SELECT userId, COUNT(*) 
    FROM clicks 
    GROUP BY SESSION(clicktime, INTERVAL '30' MINUTE), userId

    Para obter mais informações sobre o Flink SQL, consulte https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sqlClient.html.

  • CEP em SQL

    O Flink permite que os usuários representem resultados de consultas de processamento de eventos complexos (CEP) em SQL para correspondência de padrões e avaliem fluxos de eventos no Flink.

    O CEP SQL é implementado através da sintaxe SQL MATCH_RECOGNIZE. A cláusula MATCH_RECOGNIZE é suportada pelo Oracle SQL desde o Oracle Database 12c e é usada para indicar a correspondência de padrões de eventos em SQL. Veja a seguir um exemplo de CEP SQL:

    SELECT T.aid, T.bid, T.cid
    FROM MyTable
        MATCH_RECOGNIZE (
          PARTITION BY userid
          ORDER BY proctime
          MEASURES
            A.id AS aid,
            B.id AS bid,
            C.id AS cid
          PATTERN (A B C)
          DEFINE
            A AS name = 'a',
            B AS name = 'b',
            C AS name = 'c'
        ) AS T

Usamos cookies para aprimorar nosso site e sua experiência. Ao continuar a navegar em nosso site, você aceita nossa política de cookies. Saiba mais

Feedback

Feedback

Feedback

0/500

Conteúdo selecionado

Envie o conteúdo selecionado com o feedback