Saiba como enviar e visualizar jobs do Flink no E-MapReduce.
Contexto
O service do Flink em um cluster Dataflow é implantado no modo YARN. Você pode fazer login no cluster Dataflow via ssh para enviar jobs do Flink pela linha de comando.
Um cluster Dataflow implantado no modo YARN permite o envio de jobs do Flink nos modos session, per-job cluster e application.
|
Modo |
Descrição |
Vantagens e desvantagens |
|
Processo geral |
Se uma exceção em um job causar o desligamento de um TaskManager, todos os outros jobs em execução nesse TaskManager falharão. Além disso, como um cluster possui apenas um JobManager, a carga sobre ele aumenta conforme o número de jobs cresce. |
Devido a essas características, esse padrão é adequado para implantar jobs com tempo de inicialização e tempo de execução relativamente curtos. |
|
Modo Per-Job Cluster |
Ao usar o modo Per-Job Cluster, cada vez que um job do Flink é enviado, o YARN inicia um novo cluster Flink e, em seguida, executa o job. Quando o job termina a execução ou é cancelado, o cluster Flink também é liberado. |
Com base nessas características, este modo costuma ser adequado para jobs de longa duração. |
|
Modo Application |
Ao usar o modo Application, cada vez que você envia um Flink Application (um Application contém um ou mais jobs), o YARN inicia um novo cluster Flink. Quando o Application termina a execução ou é cancelado, o cluster Flink do Application também é liberado. Este modo difere do modo Per-Job porque o método Se o arquivo JAR enviado contiver múltiplos jobs, todos eles serão executados no cluster do Application. |
|
Pré-requisitos
Um cluster Dataflow foi criado no modo Flink. Para mais informações, consulte crie um cluster.
envie e visualize jobs do Flink
Este tópico usa o exemplo TopSpeedWindowing do Flink. Este exemplo é um job de streaming de longa duração.
Escolha um dos três modos a seguir para enviar e visualizar jobs:
Modo Session
Conecte-se ao nó mestre do cluster via ssh. Para mais informações, consulte Log on to the master node of a cluster.
-
execute o comando a seguir para iniciar uma sessão do YARN.
yarn-session.sh --detachedApós a execução bem-sucedida do comando, o sistema retorna um ID de aplicação. Por exemplo,
application_1750137174986_0001. Nas seções a seguir, esse ID é referenciado como<application_XXXX_YY>.mr.aliyuncs.com:33879 of application 'application_1750137174986_0001'. JobManager Web Interface: http://core-1-1.c-1f6ec9xxx.cn-hangzhou.emr.aliyuncs.com:33879 2025-06-17 13:19:20,152 INFO org.apache.flink.yarn.cli.FlinkYarnSessionCli [] - The Flink YARN session cluster has been started in detached mode. In order to stop Flink gracefully, use the following command: $ echo "stop" | ./bin/yarn-session.sh -id application_1750137174986_0001 If this should not be possible, then you can also kill Flink via YARN's web interface or via: $ yarn application -kill application_1750137174986_0001 Note that killing Flink might not clean up all job artifacts and temporary files. -
execute o comando a seguir para enviar o job.
flink run --detached /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jarDepois que o job é enviado, o sistema retorna uma mensagem semelhante à seguinte.
[root@master-1-1(172.17.xxx.xxx) ~]# flink run --detached /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/apps/FLINK/flink-1.17.2-1.0.10/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/apps/HADOOP-COMMON/hadoop-3.2.1-1.3.2-alinux3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 2025-06-17 13:29:00,205 INFO org.apache.flink.yarn.cli.FlinkYarnSessionCli [] - Found Yarn properties file under /tmp/.yarn-properties-root. 2025-06-17 13:29:00,205 INFO org.apache.flink.yarn.cli.FlinkYarnSessionCli [] - Found Yarn properties file under /tmp/.yarn-properties-root. Executing example with default input data. Use --input to specify file input. Printing result to stdout. Use --output to specify output path. 2025-06-17 13:29:00,667 WARN org.apache.flink.yarn.configuration.YarnLogConfigUtil [] - The configuration directory ('/etc/taihao-apps/flink-conf') already contains a LOG4J config file.If you want to use logback, then please delete or rename the log configuration file. 2025-06-17 13:29:00,864 INFO org.apache.hadoop.yarn.client.RMProxy [] - Connecting to ResourceManager at master-1-1.c-1f6ec9192d1528ec.cn-hangzhou.emr.aliyuncs.com/172.17.xxx.xxx:8032 2025-06-17 13:29:01,061 INFO org.apache.hadoop.yarn.client.AHSProxy [] - Connecting to Application History server at master-1-1.c-1f6ec9192d1528ec.cn-hangzhou.emr.aliyuncs.com/172.17.xxx.xxx:10200 2025-06-17 13:29:01,072 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - No path for the flink jar passed. Using the location of class org.apache.flink.yarn.YarnClusterDescriptor to locate the jar 2025-06-17 13:29:01,208 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Found Web Interface core-1-1.c-1f6ecxxx.cn-hangzhou.emr.aliyuncs.com:33879 of application 'application_1750137174986_0001'. Job has been submitted with JobID 3785db18d371326758d7843dd2a1xxxNa mensagem,
3785db18d371326758d7843dd2a1****é o ID do job. Nas seções a seguir, esse ID é referenciado como<jobId>. -
execute o comando a seguir para visualizar o status do job.
flink list -t yarn-session -Dyarn.application.id=<application_XXXX_YY>Uma mensagem semelhante à seguinte é retornada.
------------------ Running/Restarting Jobs ------------------- 16.06.2025 18:20:55 : 3785db18d371326758d7843dd2a1**** : CarTopSpeedWindowingExample (RUNNING)Você também pode visualizar o status do job na interface web. Para mais informações, consulte visualize o status do job na interface web.
-
execute o comando a seguir para parar o job.
flink cancel -t yarn-session -Dyarn.application.id=<application_XXXX_YY> <jobId>
Modo Per-job cluster
Conecte-se ao nó mestre do cluster via ssh. Para mais informações, consulte Log on to the master node of a cluster.
-
execute o comando a seguir para enviar o job.
flink run -t yarn-per-job --detached /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jarDepois que o job é enviado, o sistema retorna uma mensagem semelhante à seguinte.
$ yarn application -kill application_1750125819948_0003 Note that killing Flink might not clean up all job artifacts and temporary files. 2025-06-17 10:44:46,268 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Found Web Interface core-1-1.c-b9693c.xxx.cn-hangzhou.emr.aliyuncs.com:38037 of application 'application_1750125819948_0003'. Job has been submitted with JobID 451aded93de19d6cd238ed3b466xxx You have new mail in /var/spool/mail/rootNa mensagem,
application_1750125819948_****é o ID da aplicação, referenciado como<application_XXXX_YY>nas seções a seguir.f5f980ac631192b02548235f1bbe****é o ID do job, referenciado como<jobId>nas seções a seguir. -
execute o comando a seguir para visualizar o status do job.
flink list -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY>Você também pode visualizar o status do job na interface web. Para mais informações, consulte visualize o status do job na interface web.
-
execute o comando a seguir para parar o job.
flink cancel -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY> <jobId>
Modo Application
Conecte-se ao nó mestre do cluster via ssh. Para mais informações, consulte Log on to the master node of a cluster.
-
execute o comando a seguir para enviar o job.
flink run-application -t yarn-application /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jarDepois que o job é enviado, o sistema retorna uma mensagem semelhante à seguinte.
[root@master-1-1(172.17.xxx.xxx) ~]# flink run-application -t yarn-application /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/apps/FLINK/flink-1.17.2-1.0.10/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/apps/HADOOP-COMMON/hadoop-3.2.1-1.3.2-alinux3/share/hadoop/common/lib/slf4j-log4j12-1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 2025-06-17 10:57:05,106 INFO org.apache.flink.yarn.cli.FlinkYarnSessionCli [] - Found Yarn properties file under /tmp/.yarn-properties-root. 2025-06-17 10:57:05,106 INFO org.apache.flink.yarn.cli.FlinkYarnSessionCli [] - Found Yarn properties file under /tmp/.yarn-properties-root. 2025-06-17 10:57:05,233 WARN org.apache.flink.yarn.configuration.YarnLogConfigUtil [] - The configuration directory ('/etc/taihao-apps/flink-conf') already contains a LOG4J config file.If you want to use logback, then please delete or rename the log configuration file. 2025-06-17 10:57:05,453 INFO org.apache.hadoop.yarn.client.RMProxy [] - Connecting to ResourceManager at master-1-1.c-b9693c1xxx.cn-hangzhou.emr.aliyuncs.com/172.17.xxx.xxx:8032 2025-06-17 10:57:05,604 INFO org.apache.hadoop.yarn.client.AHSProxy [] - Connecting to Application History server at master-1-1.c-b9693xxx 3c131faf601f.cn-hangzhou.emr.aliyuncs.com/172.17.108.111:10200 2025-06-17 10:57:05,612 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - No path for the flink jar passed. Using the location of class org.apache.flink.yarn.YarnClusterDescriptor to locate the jar 2025-06-17 10:57:05,724 INFO org.apache.hadoop.conf.Configuration [] - found resource resource-types.xml at file:/etc/taihao-apps/hadoop-conf/resource-types.xml 2025-06-17 10:57:05,776 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - The configured JobManager memory is 1600 MB. YARN will allocate 1664 MB to make up an integer multiple of its minimum allocation memory (128 MB, configured via 'yarn.scheduler.minimum-allocation-mb'). The extra 64 MB may not be used by Flink. 2025-06-17 10:57:05,776 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - The configured TaskManager memory is 1728 MB. YARN will allocate 1792 MB to make up an integer multiple of its minimum allocation memory (128 MB, configured via 'yarn.scheduler.minimum-allocation-mb'). The extra 64 MB may not be used by Flink. 2025-06-17 10:57:05,776 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Cluster specification: ClusterSpecification{masterMemoryMB=1600, taskManagerMemoryMB=1728, slotsPerTaskManager=1} 2025-06-17 10:57:10,219 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Cannot use kerberos delegation token manager, no valid kerberos credentials provided. 2025-06-17 10:57:10,227 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Submitting application master application_1750125819948_0004 2025-06-17 10:57:10,271 INFO org.apache.hadoop.yarn.client.api.impl.YarnClientImpl [] - Submitted application application_1750125819948_0004 2025-06-17 10:57:10,271 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Waiting for the cluster to be allocated 2025-06-17 10:57:10,278 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Deploying cluster, current state ACCEPTED 2025-06-17 10:57:17,825 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - YARN application has been deployed successfully. 2025-06-17 10:57:17,825 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Found Web Interface core-1-1.c-b9693c1xxx.cn-hangzhou.emr.aliyuncs.com:42563 of application 'application_1750125819948_0004'.Na mensagem,
application_1750125819948_0004é o ID da aplicação YARN do job do Flink enviado. Nas seções a seguir, esse ID é referenciado como<application_XXXX_YY>. -
execute o comando a seguir para visualizar o status do job.
flink list -t yarn-application -Dyarn.application.id=<application_XXXX_YY>Uma mensagem semelhante à seguinte é retornada. Na mensagem,
4db32b5339e6d64de2a1096c4762****é o<jobId>do job.------------------ Running/Restarting Jobs ------------------- 16.06.2025 18:20:55 : 4db32b5339e6d64de2a1096c4762**** : CarTopSpeedWindowingExample (RUNNING)Você também pode visualizar o status do job na interface web. Para mais informações, consulte visualize o status do job na interface web.
-
execute o comando a seguir para parar o job.
flink cancel -t yarn-application -Dyarn.application.id=<application_XXXX_YY> <jobId>
especifique as configurações do job
O Flink oferece três maneiras de especificar as configurações do job:
especifique os valores de configuração no código do seu job. Para mais informações, consulte Configuração do Flink.
Ao enviar um job com o comando
flink run, use a flag -D para especificar os valores de configuração. Por exemplo,flink run-application -t yarn-application -D state.backend=rocksdb....especifique os valores de configuração no arquivo
/etc/taihao-apps/flink-conf/flink-conf.yaml.
Se você não especificar as configurações usando esses métodos, o Flink usará os valores padrão. Para mais informações sobre os parâmetros de configuração, consulte o site oficial do Apache Flink.
Verifique o status do job na interface web
-
Acesse a interface web.
Faça login no console do E-MapReduce.
No painel de navegação à esquerda, selecione EMR on ECS.
Na barra de navegação superior, selecione uma região e um grupo de recursos conforme necessário.
Na página EMR on ECS, clique em Cluster ID do cluster de destino.
clique em guia Access Links and Ports.
-
Na página Access Links and Ports, clique no link da linha YARN UI.
Para mais informações, consulte Access the web UIs of open-source components.
-
clique em um ID de aplicação.
Na página All Applications do Hadoop YARN ResourceManager, encontre a aplicação chamada Flink per-job cluster e clique em seu Application ID (por exemplo,
application_1628232179762_0002). -
clique em link da Tracking URL.
Na seção Application Overview, o link da Tracking URL é exibido como ApplicationMaster.
A página do Apache Flink Dashboard é aberta e exibe o status do job.
A página de visão geral do painel do Apache Flink exibe informações sobre o job em execução no momento, incluindo o nome do job (por exemplo, CarTopSpeedWindowingExample), duração, status da tarefa (RUNNING) e o número de Task Slots disponíveis.
Documentos relacionados
Para mais informações sobre o Flink no YARN, consulte Apache Hadoop YARN.