zl程序教程

您现在的位置是:首页 >  其他

当前栏目

IDEA中搭建flink开发环境,看这一篇就够了,亲测有效

2023-04-18 16:28:52 时间

在使用flink进行应用开发的时候,通常都是将开发的应用程序,提交到flink集群中,但是这样对应用程序开发调试很不方便,所谓磨刀不误砍柴工,下面我整理一个在mac上使用idea开发flink程序的配置教程,具体如下。

核心依赖配置

添加flink应用程序开发必要的依赖:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-java</artifactId>
    <version>1.7.2</version>
</dependency>

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-streaming-java_2.12</artifactId>
    <version>1.7.2</version>
    <scope>provided</scope>
</dependency>

此时启动开发的应用程序,会报错,报错信息如下:
在这里插入图片描述

报错原因主要在于应用提交后,无法启动本地flink框架。需要添加flink启动必须的依赖,该依赖是:flink-dist_2.11-1.11.2.jar,依赖的版本取决于下载flink包的版本,下载链接参考:https://www.apache.org/dyn/closer.lua/flink/flink-1.11.6/flink-1.11.6-bin-scala_2.11.tgz。

然后在lib下可以找到该依赖,并把该依赖添加到应用程序的classpath下,具体操作方式如下图:
在这里插入图片描述
在这里插入图片描述

改依赖添加之后,flink应用程序就可以启动起来。
在这里插入图片描述

启动日志配置

截止到目前,可以在idea上启动flink应用程序,但是还不够完美,为了更好的观察flink启动过程,最好能将flink的启动过程的日志打印出来,此时需要在应用程序中对flink的日志进行配置,具体配置如下:

1.添加依赖

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-core</artifactId>
   <version>1.2.3</version>
</dependency>
<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-access</artifactId>
   <version>1.2.3</version>
</dependency>
<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version>1.2.3</version>
</dependency>

2.logback.xml

<configuration>
    <property name="CONSOLE_LOG_PATTERN"
              value="%yellow(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%blue(%thread)] %highlight(%-5level) %green(%logger{60}) %blue(%file:%line) %X{sourceThread} - %cyan(%msg%n)"/>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder> 
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="console"/>
    </root>


    <logger name="akka" level="INFO">
        <appender-ref ref="console"/>
    </logger>
    <logger name="org.apache.kafka" level="INFO">
        <appender-ref ref="console"/>
    </logger>
    <logger name="org.apache.hadoop" level="INFO">
        <appender-ref ref="console"/>
    </logger>
    <logger name="org.apache.zookeeper" level="INFO">
        <appender-ref ref="console"/>
    </logger>

    <logger name="org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline" level="ERROR">
        <appender-ref ref="console"/>
    </logger>
</configuration>

此时再次启动应用程序,进行观察验证:
在这里插入图片描述

web ui配置

开发过flink程序的老铁都知道,flink提供了一套web ui,可以很方便的查看应用程序的执行状态,应用的配置信息等。

那么在idea中启动的应用程序可以访问web ui吗?答案是肯定的,不过需要在应用程序中配置web ui的启动端口:

Configuration configuration = new Configuration();
        configuration.setString("rest.port","8082"); 
        StreamExecutionEnvironment env = 
          StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(configuration);
                

此时在此启动应用程序,然后访问如下地址:http://localhost:8082
在这里插入图片描述
哈哈,到这里终于成功了,接下来就可以开心的编写代码了。