SpringBoot下YarnClient使用

1.pom.xml

<properties>
        <!-- hadoop version-->
        <hadoop.version>2.6.0</hadoop.version>
    </properties>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <!-- hadoop yarn api -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-yarn-api</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <!-- hadoop yarn client -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-yarn-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

2.代码

package com.**.dfp.rtsync.task;

import lombok.extern.slf4j.Slf4j;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
import org.apache.hadoop.yarn.client.api.YarnClient;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;

import java.io.IOException;
import java.util.EnumSet;
import java.util.List;

/**
 * Description
 *
 * @author Bob
 * @date 2020/10/22
 **/
@Slf4j
public class YarnTest {
    public static void main(String[] args){
        Configuration conf = new YarnConfiguration();
        YarnClient yarnClient = YarnClient.createYarnClient();
        yarnClient.init(conf);
        yarnClient.start();
        try {
            //查询运行状态所有任务
            List<ApplicationReport> applicationReportList = yarnClient.getApplications(EnumSet.of(YarnApplicationState.RUNNING));
            for (ApplicationReport applicationReport : applicationReportList) {
                // 获取Name
                String name = applicationReport.getName();
                // 获取ApplicationType
                String applicationType = applicationReport.getApplicationType();
                ApplicationId applicationId;
                log.info("-----------applicationId:{},name:{},quene:{},user:{},type:{}", applicationReport.getApplicationId(), applicationReport.getName(), applicationReport.getQueue(), applicationReport.getUser(), applicationReport.getApplicationType());
                // 检查是否实时集成任务(Apache Spark)
                if (name.equals(applicationName)) {
                    if ("Apache Spark".equalsIgnoreCase(applicationType) || "Spark".equalsIgnoreCase(applicationType)) {
                        // ApplicationId
                        applicationId = applicationReport.getApplicationId();
                        // Kill applicationId
                        //yarnClient.killApplication(applicationId);
                        log.info("==========applicationId:{} is killed!", applicationName);
                        break;
                    } else {
                        log.warn("The app {} is not valid spark job! ", applicationName);
                    }
                }
            }
        } catch (YarnException | IOException e) {
            log.error("kill killYarnApplication error:", e);
            throw new BusinessException("停止Yarn任务失败!");
        } finally {
            if (yarnClient != null) {
                try {
                    // 停止YarnClient
                    yarnClient.stop();
                    // 关闭YarnClient
                    yarnClient.close();
                } catch (IOException e) {
                    log.error("关闭Yarn Client失败!", e);
                }
            }
        }
    }
}

3.yarn-site.xml 

注意:

方式一:将yarn-site.xml文件放到resources目录下。

方式二:指定yarn-site.xml,代码如下:

Configuration conf = new YarnConfiguration();
conf.addResource(new File("D:\spark\hadoop-2.6.0\yarn-site.xml").toURI().toURL());
yarnClient.init(conf);

4.环境变量

win环境下一定要配置hadoop环境变量!

hadoop环境变量:  HADOOP_HOME:D:\spark\hadoop-2.6.0

path中添加:%HADOOP_HOME%\bin;

5.参考:

https://www.jianshu.com/p/68737f8b1ad4

 
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用:之前的spark-submit参数中,指定了springboot的启动入口类org.springframework.boot.loader.JarLauncher。引用:在springboot中,当运行时会调用CommandLineRunner的run方法。该方法在@SpringBootApplication注解中实现,并在JobMainApplication类中被重写。引用:在正常的springboot打包方式中,通常使用spring-boot-maven-plugin插件进行打包。这个插件的配置中有一个mainClass参数,用于指定程序的入口类。 根据以上引用内容,springbootyarn中的运行方式可以通过以下步骤实现: 1. 首先,需要指定yarn的启动入口类为springboot的启动入口类org.springframework.boot.loader.JarLauncher,可以在spark-submit参数中添加--class参数指定。 2. 其次,编写一个实现CommandLineRunner接口的类,重写其中的run方法,用于在程序启动时执行相应的业务逻辑。 3. 使用spring-boot-maven-plugin插件进行打包,通过配置mainClass参数指定springboot的入口类。 4. 使用相应的命令将打包好的文件提交到yarn集群上运行,即可实现springbootyarn中的运行。 需要注意的是,具体的运行方式还需要根据实际的环境和需求进行适配和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [springboot项目在spark yarn 集群上部署运行](https://blog.csdn.net/manbufenglin/article/details/106228361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值