FlinkFlink学习指南玩转大数据

Flink IDE调试显示WebUI

2021-04-25  本文已影响0人  AlienPaul

Flink 使用介绍相关文档目录

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。

上一篇下一篇

猜你喜欢

热点阅读