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 条评论
登录 后参与评论

相关文章

来自专栏个人分享

Hadoop源码分类概要整理

  最近突然觉得, 很多掌握的都还是很浅的原理,需要更深入细粒度去了解整个分布式系统的运转机制。于是。。开始作死而又作死而又作死的源码之旅。

993
来自专栏Hadoop实操

如何使用java命令从非集群节点向CDH集群提交MapReduce作业

在前面文章Fayson讲过《如何使用hadoop命令向CDH集群提交MapReduce作业》和《如何跨平台在本地开发环境提交MapReduce作业到CDH集群》...

3276
来自专栏技术专栏

YARN学习笔记

1402
来自专栏Hadoop实操

如何在Kerberos的CDH使用Sentry实现Spark SQL的权限控制

4052
来自专栏Hadoop实操

如何通过Cloudera Manager配置Spark1和Spark2的运行环境

大部分用户在使用CDH集群做Spark开发的时候,由于开发环境的JDK版本比CDH集群默认使用的JDK1.7.0_67-cloudera版本新,可能会出现Spa...

6707
来自专栏牛肉圆粉不加葱

Spark Streaming + Kakfa 编程指北

本文简述如何结合 Spark Streaming 和 Kakfa 来做实时计算。截止目前(2016-03-27)有两种方式:

964
来自专栏深度学习入门与实践

【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

  周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =。这三章主要讲Spark的运行...

27710
来自专栏简单聊聊Spark

Spark内核分析之spark作业的三种提交方式

        最近在研究Spark源码,顺便记录一下,供大家学习参考,如有错误,请批评指正。好,废话不多说,这一篇先来讲讲Spark作业提交流程的整体架构。

1391
来自专栏Spark生态圈

Spark Streaming管理Kafka偏移量前言从ZK获取offset

为了让Spark Streaming消费kafka的数据不丢数据,可以创建Kafka Direct DStream,由Spark Streaming自己管理of...

2353
来自专栏CDA数据分析师

读书 | Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =。这三章主要讲Spark的运行过程...

2036

扫码关注云+社区