运行flink socketwindowwordcount.jar 报错_Flink源码学习——debug环境配置(Mac版)

fce3a0f3753817f5d83e265eca7b4959.png

系列文章目的是通过阅读flink源码,借鉴流计算的设计思想。因为flink是一个服务端运行时,所以需要通过attach的方式进行调试。整体步骤分为:

  • flink安装
  • 源码编译
  • 远程调试

flink安装

安装flink,参考官网文档:

Local Setup Tutorial​ci.apache.org
26c922f1ef7814be655c7ee796f607ba.png

本文撰写时的最新版本是1.8.1

源码编译

  • 下载源码:https://github.com/apache/flink,切换到与安装版本一样的分支(release-1.8)
  • 注意jdk要在1.8以上,maven要在3.3.x以上,编译项目
mvn clean install -DskipTests -Dfast

编译过程中报错,找不到io.confluent:rest-utils-parent:pom:3.3.1文件,这是因为我使用的私有库,其中没有对应的jar文件,解决方案一个是使用自定义maven的settings.xml文件,添加confluent库相关信息,另一个是手工安装确实的jar文件,这里使用后一种办法:

  • 从http://packages.confluent.io/maven/io/confluent/rest-utils/3.3.1/rest-utils-3.3.1.jar 下载文件到本地
  • 在下载目录运行命令:mvn install:install-file -DgroupId=io.confluent -DartifactId=rest-utils-parent -Dversion=3.3.1 -Dpackaging=jar -Dfile=./rest-utils-3.3.1.jar,安装到本地
  • 运行mvn clean install -DskipTests -Dfast 编译通过

配置远程链接参数

按照官方文档所说:在conf/flink-conf.yaml文件最后添加如下行:

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

但是实际使用中发现,环境启动后TaskManagers的个数变成了0,原因是这个端口配置会同时影响taskManager和JobManager,参见FLINK-5324,如果是local和standalone模式(TaskManager和JobManager在同一台机器上),可以使用如下配置:

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

注意使用的是两个不同的端口,配置IDE环境,以Intellij为例,选择edit configuration,添加一个remote配置,TaskMananger和JobMananger分别配置,根据代码所在的包,选择ModulePath,如图所示

67b66c1cbb93fde34847802afe168342.png

jobmanager的入口类是org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint,
taskmanager的入口类是org.apache.flink.runtime.taskexecutor.TaskManagerRunner

小结

flink的文档已经比较陈旧了,很早就fix的bug文档里却没有相应的更新,浪费大家的时间,希望这篇文章能让有兴趣的同学少走弯路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值