Resumo das perguntas comuns da entrevista do Flink (todos produtos secos !!!)

Para obter mais detalhes sobre o Flink, verifique o seguinte link:
https://mp.csdn.net/console/columnManage/10402999

1. Pergunta da entrevista 1: Arquitetura do aplicativo

Pergunta: Como a empresa envia tarefas em tempo real e quantos gerentes de tarefas e gerentes de tarefas existem?

Resposta :

(1) Costumamos yarn session 模式enviar tarefas; Outra forma é 每次提交都会创建一个新的 Flink 集群fornecer recursos para cada trabalho, independentes uns dos outros entre as tarefas, independentemente umas das outras, fáceis de gerenciar. O cluster criado após a execução da tarefa também desaparecerá. O script de comando online é o seguinte:

bin/yarn-session.sh -n 7 -s 8 -jm 3072 -tm 32768 -qu root.*.* -nm *-* -d

//其中申请 7 个 taskManager,每个 8 核,每个 taskmanager 有 32768M 内存。

(2) 集群默认只有一个 Job Manager. Mas para evitar um único ponto de falha, configuramos alta disponibilidade. Para o modo autônomo, nossa empresa geralmente configura um gerenciador de tarefas principal, dois gerenciadores de tarefas de backup e, em seguida, combina o uso do ZooKeeper para obter alta disponibilidade; para o modo de fios, o fio será reiniciado automaticamente quando o gerenciador de tarefas falhar, então apenas um é necessário. Nós O número máximo configurado de reinicializações é 10 vezes.

2. Pergunta da entrevista 2: Teste de estresse e monitoramento

Pergunta: Como fazer teste de estresse e monitoramento?

Resposta : A pressão que geralmente encontramos vem dos seguintes aspectos:

(1) Se a velocidade de geração do fluxo de dados for muito rápida e o operador downstream não puder consumi-lo, ocorrerá uma contrapressão. O monitoramento da pressão de retorno pode usar a IU do Flink Web (localhost: 8081) para monitorar visualmente as métricas e você pode saber quando o alarme for relatado. Em circunstâncias normais, o problema de contrapressão pode ser causado pelo operador da pia não estar bem otimizado, basta fazer alguma otimização. Por exemplo, se você estiver gravando em ElasticSearch, poderá mudar para gravação em lote e poderá aumentar o tamanho da fila ElasticSearch e assim por diante.

(2) Defina o tempo de atraso máximo da marca d'água. Se for definido muito grande, pode causar pressão na memória. Você pode definir o tempo de atraso máximo para ser menor e, em seguida, enviar os elementos atrasados ​​para o fluxo de saída lateral. Atualize os resultados mais tarde. Ou use um back-end de estado semelhante ao RocksDB, o RocksDB abrirá espaço de armazenamento fora do heap, mas a velocidade do IO diminuirá e precisará ser avaliada.

(3) Se o comprimento da janela deslizante for muito longo e a distância de deslizamento for muito curta, o desempenho de Flink será bastante reduzido. Usamos principalmente o método de divisão de tempo para armazenar cada elemento em apenas uma "janela sobreposta", o que pode reduzir a gravação de estado no processamento de janela.

Para obter detalhes, consulte o link: https://www.infoq.cn/article/sIhs_qY6HCpMQNblTI9M

(4) O backend de estado usa RocksDB e não encontrou o problema de ser sobrecarregado.

3. Pergunta da entrevista 3: Por que usar o Flink

Pergunta: Por que usar o Flink em vez do Spark?

Resposta : A principal consideração é a baixa latência do flink, alto rendimento e melhor suporte para cenários de aplicativos de dados de streaming; além disso, o flink pode lidar bem com dados fora de ordem e pode garantir consistência de estado exatamente único.

4. Pergunta da entrevista 4: armazenamento do ponto de verificação

Pergunta: Onde existe o checkpoint de Flink?

Resposta : pode ser memória, sistema de arquivos ou RocksDB.

5. Pergunta da entrevista 5: garantia exata

Pergunta: Se o armazenamento de nível inferior não suporta transações, como o Flink garante exatamente uma vez?

Resposta : Exatamente uma vez de ponta a ponta tem requisitos mais altos para coletor, e a implementação específica inclui principalmente duas formas de escrita idempotente e escrita transacional. O cenário de gravação idempotente depende da lógica de negócios, e a gravação transacional é mais comum. A gravação transacional tem dois métodos: log de gravação antecipada (WAL) e confirmação de duas fases (2PC).

Se o sistema externo não suportar transações, você pode usar o método de registro de pré-gravação para salvar os dados do resultado como um estado e, a seguir, gravá-los no sistema coletor quando o ponto de verificação for concluído.

6. Pergunta da entrevista 6: Mecanismo de Estado

Pergunta: Conte-me sobre o mecanismo de estado Flink?

Resposta : Muitos operadores integrados ao Flink, incluindo fonte e coletor de armazenamento de dados, são todos stateful. No Flink, os estados estão sempre associados a operadores específicos. Flink fará um instantâneo do estado de cada tarefa na forma de um ponto de verificação para garantir a consistência do estado durante a recuperação de falhas. Flink gerencia o armazenamento de estado e ponto de verificação por meio do back-end de estado, e o back-end de estado pode ter diferentes opções de configuração.

7. Pergunta da entrevista 7: Remoção de chaves maciças

Pergunta: Como remover peso? Considere um cenário em tempo real: cenário Double Eleven, comprimento da janela deslizante é de 1 hora, distância deslizante é de 10 segundos, 100 milhões de usuários, como calcular UV?

Resposta : Obviamente, é impossível usar uma estrutura de conjunto de dados semelhante a scala ou a um conjunto de redis, porque pode haver centenas de milhões de chaves, que não podem ser armazenadas dentro. Portanto, você pode considerar o uso do Filtro Bloom para remover a duplicação.

8. Pergunta oito da entrevista: comparação entre ponto de verificação e faísca

Pergunta: Quais são as diferenças e vantagens do mecanismo de checkpoint do Flink em comparação com o spark?

Resposta : O ponto de verificação do fluxo de faísca é apenas um ponto de verificação de dados e metadados para recuperação de falha de driver. O mecanismo de checkpoint do flink é muito mais complicado, pois usa instantâneos distribuídos leves para implementar instantâneos de cada operador e dos dados no fluxo.

Consulte o link do artigo para obter detalhes:
https://cloud.tencent.com/developer/article/1189624

9. Pergunta da entrevista 9: mecanismo de marca d'água

Pergunta: Explique o mecanismo de marca d'água de Flink em detalhes.

Resposta : A marca d'água é essencialmente um mecanismo para medir o progresso do EventTime no Flink, que é usado principalmente para processar dados fora de ordem.

10. Pergunta dez da entrevista: como exatamente uma vez é alcançado

Pergunta: Como a semântica exatamente uma vez é implementada no Flink e como o estado é armazenado?

Resposta: O Flink depende do mecanismo de checkpoint para implementar a semântica exatamente uma vez. Se você deseja atingir o ponto a ponto exatamente uma vez, também precisa de fontes externas e coletores para atender a certas condições. O armazenamento de estado é gerenciado por meio do back-end de estado e diferentes back-ends de estado podem ser configurados no Flink.

11. Pergunta da Entrevista 11: CEP

Pergunta: Na programação Flink CEP, onde os dados serão armazenados quando o estado não for atingido?

Resposta : No processamento de streaming, o CEP certamente precisa oferecer suporte a EventTime, então o fenômeno de atraso de dados correspondente também deve ser suportado, que é a lógica de processamento da marca d'água. O tratamento do CEP de sequências de eventos sem correspondência é semelhante aos dados atrasados. Na lógica de processamento do Flink CEP, os dados insatisfeitos e atrasados ​​serão armazenados em uma estrutura de dados Map. Ou seja, se limitarmos a duração da sequência do evento de julgamento a 5 minutos, a memória armazenará 5 minutos Os dados, na minha opinião, também são um dos grandes danos à memória.

12. Pergunta da entrevista 12: três tipos de semântica de tempo

Pergunta: Quais são as três semânticas temporais do Flink e quais são os cenários do aplicativo?

Resposta :
(1) Horário do evento: Esta é a semântica de tempo mais comum em aplicações práticas.
(2) Tempo de processamento: quando não há tempo de evento ou quando os requisitos de tempo real são extremamente altos.
(3) Tempo de ingestão: quando há vários operadores de origem, cada operador de origem pode usar seu próprio relógio do sistema local para atribuir o tempo de ingestão. Todas as operações subsequentes baseadas no tempo usarão o Tempo de ingestão no registro de dados.

13. Pergunta da entrevista 13: Como lidar com picos de dados

Pergunta: Como o programa Flink lida com os períodos de pico de dados?

Resposta : Use o Kafka de grande capacidade para colocar os dados na fila de mensagens como uma fonte de dados e, em seguida, use o Flink para consumo, mas isso afetará um pouco o tempo real.

Acho que você gosta

Origin blog.csdn.net/weixin_43520450/article/details/108690503
Recomendado
Clasificación