Storm作业迁移Flink指引

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

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); 具体修改如下所示:

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作业运行结果是否正确;

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鬼谷君

mysql 主从复制

Mysql的复制是一个异步复制的过程,从一个主(master)的复制到另一个备(salve)的。在主备之间实现复制过程主要有三个线程来完成,其中两个线程(sql...

1335
来自专栏Laoqi's Linux运维专列

Mongodb 分片集群搭建

3027
来自专栏Hadoop实操

Hive作业产生的临时数据占用HDFS空间大问题处理

Hive作业在运行时会在HDFS的临时目录产生大量的数据文件,这些数据文件会占用大量的HDFS空间。这些文件夹用于存储每个查询的临时或中间数据集,并且会在查询完...

1023
来自专栏北京马哥教育

Hadoop2.0的HA介绍

前一篇文章介绍了Hadoop2.0(hadoop2.0架构,具体版本是hadoop2.2.0)的安装和最基本的配置(见 http://www.linuxidc....

2665
来自专栏xingoo, 一个梦想做发明家的程序员

Oracle基础知识-数据迁移

我们常需要对Oracle数据库进行迁移,迁移到更加高级的主机上、迁移到远程的机房上、迁移到不同的平台下 一、exp/imp:  这也算是最常用最简单的方法了,一...

2028
来自专栏冷冷

【springboot】 spring session 分布式会话共享

前言 如上图,是一个非常传统的服务端拓扑结构,一个web请求,经过负载均衡的转发,到不同的服务器处理。那么来自同一用户的请求将有可能被负载分发到不同的实例中去,...

2279
来自专栏云计算与大数据

研发:Redis4.0 编译安装

4. 采用make PREFIX=/usr/local/redis install

702
来自专栏跟着阿笨一起玩NET

HTTP的KeepAlive是开启还是关闭?

http://itindex.net/detail/50719-http-keepalive

1332
来自专栏桥路_大数据

CentOS7, mysql主从同步数据库配置

4126
来自专栏性能与架构

Redis3 集群中删除节点

image.png 删除节点有两种情况: (1)删除master节点,需要先把目标节点中的slot移动到其他节点中,然后执行删除节点操作 (2)删除slave节...

2586

扫码关注云+社区