前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Storm作业迁移Flink指引

Storm作业迁移Flink指引

原创
作者头像
kevinyh
修改2018-08-27 14:30:37
1.9K1
修改2018-08-27 14:30:37
举报
文章被收录于专栏:腾讯云流计算 Oceanus

Storm作业称为Topology,由一系列的Spout组件,以及Bolt组件组成;如果要把运行在Storm的作业整体迁移到Flink上运行,则可以参考以下示意图和步骤:

Storm作业迁移Flink运行
Storm作业迁移Flink运行

详细步骤如下:

1. 修改Storm作业代码

A. 修改依赖:在Storm作业工程的依赖文件pom.xml中去掉storm-core的依赖,然后加上如下依赖到pom.xml中;

代码语言:txt
复制
  <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); 具体修改如下所示:

Storm作业提交代码修改
Storm作业提交代码修改

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上运行
Storm 作业在Flink上运行

并比较原本的storm作业和Flink作业运行结果是否正确;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档