开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请问我有YarnClient 如何判断 ResourceManager进行切换了呢?我想在切换的时候

请问我有YarnClient 如何判断 ResourceManager进行切换了呢?我想在切换的时候做一些操作

展开
收起
游客3oewgrzrf6o5c 2022-08-22 17:38:12 417 0
1 条回答
写回答
取消 提交回答
  • 在Yarn中,ResourceManager的切换可以分为主备ResourceManager自动切换和手动切换两种情况。对于主备ResourceManager自动切换,可以通过监控ResourceManager的状态来判断是否发生了切换。对于手动切换,可以通过监听Yarn的事件来判断。

    以下是两种判断方法的具体实现: 1. 监控ResourceManager状态:可以通过YarnClient的getResourceManagerAddress()方法获取当前使用的ResourceManager的地址,并定时检查该地址是否发生变化。如果发生变化,则说明ResourceManager发生了切换。可以在切换时执行需要的操作。示例代码如下:

    Configuration conf = new YarnConfiguration();
    YarnClient yarnClient = YarnClient.createYarnClient();
    yarnClient.init(conf);
    yarnClient.start();
    while (true) {
        try {
            Thread.sleep(1000);
            String currentRMAddress = yarnClient.getResourceManagerAddress();
            if (!currentRMAddress.equals(previousRMAddress)) {
                // ResourceManager发生切换,执行需要的操作
                System.out.println("ResourceManager切换至" + currentRMAddress);
                // TODO 执行需要的操作
                previousRMAddress = currentRMAddress;
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
    
    1. 监听Yarn事件:可以通过注册YarnClient的ApplicationReportListener来监听Yarn的事件,包括ResourceManager的切换事件。在监听到切换事件时,执行需要的操作。示例代码如下:
    Configuration conf = new YarnConfiguration();
    YarnClient yarnClient = YarnClient.createYarnClient();
    yarnClient.init(conf);
    yarnClient.start();
    yarnClient.setApplicationReportListener(new ApplicationReportListener() {
        @Override
        public void onApplicationReportReceived(ApplicationReport report) {
            // 监听到ApplicationReport事件,可以根据事件类型进行判断
            if (report.getYarnApplicationState() == YarnApplicationState.KILLED) {
                // ResourceManager发生切换,执行需要的操作
                System.out.println("ResourceManager切换");
                // TODO 执行需要的操作
            }
        }
    });
    

    需要注意的是,以上代码仅供参考,具体实现可能会因环境和需求而异。同时,YarnClient的API和事件监听机制也可能会因版本而异,建议根据具体情况进行调整和优化。

    2023-06-13 18:41:54
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载