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

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

展开
收起
游客3oewgrzrf6o5c 2022-08-22 17:38:12 476 分享 版权
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 集群和引擎,提高作业开发运维效率。

收录在圈子:
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
还有其他疑问?
咨询AI助理