Storm作业称为Topology,由一系列的Spout组件,以及Bolt组件组成;如果要把运行在Storm的作业整体迁移到Flink上运行,则可以参考以下示意图和步骤:
详细步骤如下:
1. 修改Storm作业代码
A. 修改依赖:在Storm作业工程的依赖文件pom.xml中去掉storm-core的依赖,然后加上如下依赖到pom.xml中;
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-storm_2.11</artifactId>
<version>${flink_version}</version>
</dependency>
B. 修改代码:找到Storm作业的Topology提交的代码逻辑,进行如下修改:将代码中的StormSubmitter修改为FlinkSubmitter,LocalCluster修改为FlinkLocalCluster,NimbusClient修改为FlinkClient;将作业提交中的TopologyBuilder.createTopology()生成的StormTopology参数,修改为FlinkTopology.createTopology($builder); 具体修改如下所示:
C. 作业Topology各组件的定义的代码不用修改;
D. 代码实现中可以使用org.apache.flink.storm.util.StormConfig指定Nimbus.host,以及Nimbus.thrift.port参数,对应于Flink的jobmanager的两个参数:jobmanager.rpc.address,jobmanager.rpc.port;如果没有指定以上参数,则默认会读取flink-conf.yaml中的jobmanager.rpc.address, 以及jobmnager.rpc.port;
2. 作业打包,并提交
A. 使用maven打包作业代码,执行命令mvn clean install –DskipTests,在作业工程的target目录找到打包后的jar;
B. 将打包完的作业包上传到Flink的客户端节点某个目录上,并确定Flink客户端的lib库中包含了flink-storm,以及storm-core 作业相关的依赖包,然后Flink客户端的根目录下执行命令
bin/flink run -c ${main_class} ${job_jar_path} ${args}
其中:
${main_class}: 是指运行的作业的主类;
${job_jar_path}: 是指运行的作业的jar包所在的路径;
${args}: 作业运行所需要的参数;
C. 观察作业是否在Flink上正常运行,如下:
并比较原本的storm作业和Flink作业运行结果是否正确;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。