Flink IDE调试显示WebUI
2021-04-25 本文已影响0人
AlienPaul
Flink 使用介绍相关文档目录
前言
开发Flink应用时候大家基本都先在IDE中以单机形式直接运行调试,然后在上集群运行。在集群模式我们是可以访问Flink Web UI的。那么在IDE单机运行的时候是否也可以访问Web UI?默认情况Flink并没有提供这个功能。下面为大家分享如何在IDE调试Flink作业时,支持查看Web UI。
依赖引入
打开项目的pom.xml
文件,加入:
<profiles>
<profile>
<id>webui</id>
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-runtime-web_${scala.binary.version}</artifactId>
<version>${flink.version}</version>
</dependency>
</dependencies>
</profile>
</profiles>
这里使用profile方式配置的原因是这个web依赖仅仅在IDE调试运行的时候需要。打包编译放入集群运行时这个依赖是多余的。只需要在本地运行时,勾选启用这个profile即可。
上面的${scala.binary.version}和${flink.version}请设置对应的property值。
示例代码
我们使用一个从Socket读入数据的案例,它可以保持Flink应用常驻运行,我们就可以在运行时打开Web UI了。代码如下:
import org.apache.flink.configuration.{Configuration, RestOptions}
import org.apache.flink.streaming.api.scala._
object JobWithWebUI {
def main(args: Array[String]): Unit = {
val conf = new Configuration
conf.setInteger(RestOptions.PORT, 8080)
val env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(conf)
val stream = env.socketTextStream("127.0.0.1", 9000)
stream.print()
env.execute()
}
}
注意这里使用的Configuration
为Flink的Configuration
,千万别导入成Hadoop的。
通过conf.setInteger(RestOptions.PORT, 8080)
指定Web UI的端口号,例子中为8080端口。
验证
打开一个terminal,输入:
nc -lk 127.0.0.1 9000
开启一个端口。然后运行上述Flink 作业。在浏览器打开127.0.0.1:8080
。如果前面配置正确,我们能够成功打开Web UI。