Flink-sql平台化配置之flink-streaming-platform-web

        记录使用flink-streaming-platform-web平台化提交Flink任务。主要是记录通过这个工具提交flink任务的原理。

        相关参考:

        gitee地址:flink-streaming-platform-web: 基于flink-sql的实时流计算web平台

        github地址:https://github.com/zhp8341/flink-streaming-platform-web

1、idea本地开发

        可以查看:docs/idea-run.md · 无情(朱慧培)/flink-streaming-platform-web - Gitee.com

        真正用来提交任务的是flink-streamin-core下面的com.flink.streaming.core.JobApplication类。通过这个来创建flink任务所需要的执行环境以及解析我们需要提交的sql脚本等参数。

        例如:这里通过args来获取sql脚本所在的位置。

        注意:本地调试需要修改pom.xml中的scope。

2、通过前端页面来提交任务的流程

        由于尚未配置flink on yarn的环境,这里以Standalone模式为例:

2.1、新增系统设置

        通过前端页面来配置Flink环境的相关信息,这些信息都被记录在数据库当中。

2.2、通过前端页面编写提交参数以及sql语句

        当点击保存页面的时候,这些参数会保存在job_config表中,如下,包括我们所写的SQL也会是mediumtext的格式保存下来。

3.3、任务提交

3.3.1、点击提交任务

         当点击提交任务,会进入到JobStandaloneServerAOImpl.star(...)方法。在这里做了如下事情:

  1. 通过任务id获取这个任务的相关配置信息JobConfig,包括savepoint相关信息SavePointBackup。
  2. 将该任务的sql语句下载到本地,并返回该任务提交的一些参数jobRunParamDTO。
  3. 给状态表的该任务加上乐观锁,修改为提交中。
  4. 异步提交任务。
 public void start(Long id, Long savepointId, String userName) {

        JobConfigDTO jobConfigDTO = jobConfigService.getJobConfigById(id);

        //1、检查jobConfigDTO 状态等参数
        jobBaseServiceAO.checkStart(jobConfigDTO);

        // TODO 要不要检查集群上任务是否存在

        //2、将配置的sql 写入本地文件并且返回运行所需参数
        JobRunParamDTO jobRunParamDTO = jobBaseServiceAO.writeSqlToFile(jobConfigDTO);

        //3、插一条运行日志数据
        Long jobRunLogId = jobBaseServiceAO.insertJobRunLog(jobConfigDTO, userName);

        //4、变更任务状态(变更为:启动中) 有乐观锁 防止重复提交
        jobConfigService.updateStatusByStart(jobConfigDTO.getId(), userName, jobRunLogId, jobConfigDTO.getVersion());

        String savepointPath = savepointBackupService.getSavepointPathById(id, savepointId);

        //异步提交任务
        jobBaseServiceAO.aSyncExecJob(jobRunParamDTO, jobConfigDTO, jobRunLogId, savepointPath);

    }

3.3.2、构建执行命令并提交

public void aSyncExecJob(JobRunParamDTO jobRunParamDTO, JobConfigDTO jobConfigDTO,
                             Long jobRunLogId, String savepointPath){
    //1、构建执行命令
    command = CommandUtil.buildRunCommandForCluster(jobRunParamDTO, jobConfigDTO, savepointPath);
    //2、提交任务
    appId = this.submitJobForStandalone(command, jobConfigDTO, localLog);
    //3、修改任务状态
    this.updateStatusAndLog(jobConfigDTO, jobRunLogId, jobStatus, localLog.toString(), appId);
}

        上面异步提交任务的四个参数:

  1.  jobRunParamDTO:任务提交的主要参数,包括flink bin目录地址,flink运行参数,sql语句存放目录等信息
  2. jobConfigDTO:这里是该任务配置相关信息,如任务名、提交模式等
  3. jobRunLogId:这里主要是向mysql数据库的日志表中插入数据,表示该任务的提交
  4. savepointPath:通过该任务ip获取其savepoint路径

        在jobBaseServiceAO.aSyncExecJob(...)方法中最主要的是以上三行,构建执行命令,提交任务,修改任务状态。

        1、构建执行命令具体可以查看CommandUtil.buildRunCommandForCluster(...)方法。如下,可以构成一条完整的执行命令并返回。

/opt/module/flink-1.13.2/bin/flink run -d -c  com.flink.streaming.core.JobApplication /opt/module/flink-streaming-platform-web/lib/flink-streaming-core-1.3.0.RELEASE.jar -sql /opt/module/flink-streaming-platform-web/sql/job_sql_2.sql  -type 0

        2、命令提交,主要下面的commandRpcClinetAdapter.submitJob(...)方法。如下,是通过Runtime.getRuntime().exec(command)方法来提交

appId = this.submitJobForStandalone(command, jobConfigDTO, localLog);
    String appId = commandRpcClinetAdapter.submitJob(command, localLog, jobRunLogId, jobConfig.getDeployModeEnum());
    JobStandaloneInfo jobStandaloneInfo = flinkRestRpcAdapter.getJobInfoForStandaloneByAppId(appId,
                        jobConfig.getDeployModeEnum());

         3、由上所述,最终是执行了条如下命令:

/opt/module/flink-1.13.2/bin/flink run -d -c  com.flink.streaming.core.JobApplication /opt/module/flink-streaming-platform-web/lib/flink-streaming-core-1.3.0.RELEASE.jar -sql /opt/module/flink-streaming-platform-web/sql/job_sql_2.sql  -type 0

        这里最终是通过命令行的方式提交了JobApplication这个class。最后可以从1、idea本地开发查看其执行流程。

### 回答1: Apache Flume是基于数据流的分布式系统,专门用于从各种非结构化数据源收集,聚合和移动大量数据,它支持多种数据源的连接和数据交付到多种数据存储库。该软件是Apache软件基金会下的一个顶级项目,它是一个稳定、高效和可靠的工具,可以帮助企业实现数据的有效管理和分析。 apache-flume-1.9.0-bin.tar.gz下载是通过Apache官网提供的链接来进行下载的。下载完成后需要进行安装和相关配置,以便能够与其他数据源进行连接和数据交付。该软件的安装和配置较为复杂,需要具备一定的计算机技能和数据管理知识。 下载完成后,用户需要解压该文件,并在用户设置的文件夹中配置flume-env.sh和flume.conf文件。配置后,即可启动Flume服务,进行数据的收集和聚合操作。在使用过程中,用户可以根据实际需要,选择不同的数据源和文件存储方式,以满足企业数据管理和分析的需求。 总之,Apache Flume是一个强大的数据管理和分析工具,具有广泛的应用和丰富的功能。但在使用前,用户需要详细了解该软件的安装和配置过程,并具备一定的技能和知识储备,以确保其能够正确地使用和操作。 ### 回答2: Apache Flume是一个分布式、可靠、高效的数据采集、聚合和传输系统,在数据处理中应用广泛。而apache-flume-1.9.0-bin.tar.gz则是Apache Flume的官方发布版本,其中bin表示此版本是可执行程序,tar.gz是一种压缩格式。 要下载apache-flume-1.9.0-bin.tar.gz,首先需要前往Apache Flume的官网,然后找到下载页面。在下载页面中可以选择下载镜像站点以及下载apache-flume-1.9.0-bin.tar.gz的链接。用户可以根据自己的网络情况、所在地区等因素选择镜像站点并点击相应的链接进行下载。 下载完成后,用户可以使用解压软件将apache-flume-1.9.0-bin.tar.gz解压到任何想要安装的目录中。解压完成后,在bin目录下可以找到flume-ng的可执行文件,即可尝试运行Flume。 值得注意的是,Apache Flume是一个开源项目,因此用户可以访问其源代码,也可以参与到项目的开发中来。该软件的最新版本、文档等信息也可在官网上获得。 ### 回答3: Apache Flume是一款优秀的分布式高可靠日志收集与聚合工具,可以将数据从各种不同的数据源采集并集中到集中式的Hadoop数据仓库中。而Apache Flume 1.9.0-bin.tar.gz是Apache Flume的最新版本程序包,包含了Flume各种组件的可执行文件、示例配置文件、JAVA API等组件。 如果要下载Apache Flume 1.9.0-bin.tar.gz,可以先访问Apache Flume的官网,找到需要下载的地方,可以选择使用浏览器直接下载或使用命令行工具wget下载到本地,解压缩后将Flume各个组件配置好后就可以使用了。 需要注意的是,安装Apache Flume还需要为其配置相应的环境(例如配置JDK环境变量等),并进行一些必要的安全设置。而且对于不同的数据源与Hadoop生态系统版本,Apache Flume部署和配置也会略有不同。因此,在使用过程中,应该先学习Apache Flume的相关知识,并根据情况灵活应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值