博客 《新手篇》如何正确使用FlinkX

《新手篇》如何正确使用FlinkX

   铁柱   发表于 2021-12-30 20:06  1475  0

 一、前期准备

老规矩,如果以下概念中,有不懂的,自行查资料了解 (学会查资料,比问别人更有效率)

项目地址: https://github.com/DTStack/flinkx

!!!强烈推荐官方文档,内容非常丰富

官方文档: https://github.com/DTStack/flinkx/blob/1.10_release/docs/quickstart.md

官方视频:

https://www.bilibili.com/video/BV13Z4y1P7G5?from=search&seid=18033425315277652693 《初识Flinkx》

下面这个视频强烈推荐!!讲得是非常全,非常细!

https://www.bilibili.com/video/BV11X4y1V79R?from=search&seid=18033425315277652693 《Flinkx-RDB模块使用场景与演示》

Git Clone 项目

首先将项目从Github中下载并导入到IDEA中(方法较多,介绍常见的一种)

从IDEA菜单栏里,Git 选项 -> Clone -> Flinkx 项目地址,点击Clone即可获取Flinkx 源码一份!

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/3939df35a0e7595a7078a0009fe04a34..JPEG

版本对应

项目clone下来默认版本是 1.10_release,目前推荐的稳定版本是 1.8_release 和 1.10_release。最新版本是1.11_release。但是! 最新不代表最稳定。Flinkx的每一个版本,都对应着Flink的版本, 上下版本不一定兼容,所以使用前,请确定好Flinkx与Flinkx对应的版本。

项目编译

因为项目中涉及的插件非常的多,所以编译整个项目耗时非常大,所以建议,对于不需要使用的插件,可以注释掉。同时,强烈建议,先看 官方文档,再去编译

!!!但是,请注意!!!请注意!!!请注意!!!⚠️⚠️⚠️

1. 部分插件之间是有依赖关系的,比如:

  • flinkx-core是被所有插件依赖,千万不能注释

  • flinkx-rdb模块是被所有rdb数据源插件依赖,所以在使用类似mysql,oracle等(包括hive,因为连接时用的是jdbc)的场景下,flinkx-rdb模块千万不能注释

  • flinkx-test是用于本地调试代码的模块,项目打包成jar包时是必须要注释掉的!

  • flinkx-launcher模块是用来将可执行任务提交到对应的执行环境中的,不能注释!!

2. 部分插件中有些jar包在maven中央仓库中可能没有,但是在项目的 jars目录下,开发者贴心地准备了jar。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/323e6972c220cf4f2b14bdced99ecf0f..JPEG

除此之外,还特意编写了将jar包安装到本地仓库的可执行脚本。 (如何在不同的系统下执行脚本,请自行百度)

[图片截取自 官方文档]

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/ad0c8403fc129edf06a4c875c5d353d5..JPEG

以上内容请注意!!!请注意!!!请注意!!!⚠️⚠️⚠️

项目编译命令


mvn clean package -Dmaven.test.skip

之后在项目的根目录下,生成对应的插件目录

1.8_release -> plugins

1.10_release -> syncplugins

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/bc1cf6be5c73c631778ab36e05770223..png

二、任务提交

Flinkx支持的任务提交方式有local-test(通过flinkx-test模块提交任务)、local、standalone、yarn-session、yarn-per-job模式,暂时不支持application模式提交。

从idea中提交任务

使用的 idea版本2020.3 公开版,有不一样的地方自行修改

这里以 yarn-per-job模式为例,其他模式类似,可以看 官方文档自行配置任务提交参数

1. 配置idea-application

模块:flinkx-launcher

入口类:Launcher

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/50b49e504f217cfe9a20ffd48ca6519e..JPEG

同样有个快捷的方式,直接在入口类中,在类的执行按钮下,选择“Modify Run Configuration”,即可修改

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/cafdf240f363ddb6681420a4b0594420..JPEG

主要修改任务参数,根据自己的情况对应修改即可,下面贴下idea中一直使用的任务参数


-mode yarnPer
-name flinkx-test
-job docs/example/stream_stream.json
-pluginRoot syncplugins
-flinkconf /dtstack/conf/flink
-yarnconf /dtstack/conf/yarn
-flinkLibJar /dtstack/flink-1.10.1/lib
-confProp {\"flink.checkpoint.interval"\:60000}
-queue c

任务参数具体什么含义?请看官方文档的参数说明

任务JSON怎么配置?请看官方文档,这里就不再多说了,而且,官方还特意整理常用插件的任务JSON,只要对应着修改参数即可,点击链接跳转(如此贴心的官方还有谁?这难道不值得一个star嘛?)

三、调试代码

本地调试

首先打开flinkx-test模块

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/e260223e3d93e4710272714372230454..JPEG

在LocalTest中 jobPath修改为任务JSON的绝对路径,点击执行即可本地调试。官方还特意添加了常用的参数配置

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/f29d68b40bbe92b50f7bd5e0ce7af51f..JPEG

远程调试

如果需要远程调试,那么需要在flink-conf.yaml中增加Flink 的远程调试配置,然后在idea中配置”JVM Remote“,在代码块中打断点(这种方法还能调试Flink 本身的代码)


env.java.opts.jobmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 

env.java.opts.taskmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006

只需要修改标记的这两个地方,如果是HA集群,需要根据日志修改**(怎么看日志,怎么修改,自行查资料)**

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/5ece4c54e094135205cebdf01e47591f..JPEG

至此,任务idea调试流程就这些内容。

四、自定义插件

如何自定义自己所需要的插件,官方文档写的非常详细,有兴趣请 点击链接跳转

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/1011b8170b783ec94ef63f50b2495ea2..JPEG

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群