Flink-standalone搭建

Flink搭建

standalone模式是最简单的一种集群模式,不需要yarn、mesos等资源调度平台,这里以1.12.1版本为例进行启动。

下载Flink

  • 进入https://www.apache.org/dyn/closer.lua/flink/flink-1.12.1/flink-1.12.1-bin-scala_2.12.tgz,下载即可。
  • 对下载下来的tgz包进行解压。

启动集群

  • 进入bin目录,执行start-cluster.sh,如下所示:


  • 执行jps命令,查看如下进程是否正常启动:
    TaskManagerRunner
    StandaloneSessionClusterEntrypoint
  • 浏览器启动localhost:8081,查看概览:



    出现此画面,说明Flink启动成功。

提交任务

  • 执行一个最简单的WordCount程序,代码如下:
public class WordCountStream {

    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment streamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment();

        // nc -lk 7777
        DataStreamSource source = streamExecutionEnvironment.socketTextStream("localhost", 7777);

        DataStream> resultSet = source.flatMap(new FlatMapFunction>() {
            public void flatMap(String str, Collector> collector) throws Exception {
                String[] sArr = str.split(" ");
                for (String s : sArr) {
                    collector.collect(new Tuple2(s, 1));
                }
            }
        }).keyBy(0).sum(1);
        resultSet.print();

        streamExecutionEnvironment.execute();
    }
}

maven依赖如下:


        
            org.apache.flink
            flink-java
            1.12.1
        
        
            org.apache.flink
            flink-streaming-java_2.12
            1.12.1
        
    

注意,本地工程引用Flink的jar包开发时,scala版本一定要和集群相对应,如上我们下载的是scala-2.12版本,那么使用java开发时要选用:flink-streaming-java_2.12,版本为1.12.1。

  • 对程序进行打包
    执行mvn package -DskipTests命令,生成如下jar包:


  • 在web ui上对任务进行提交


  • 点击jar名称,设置启动选项



    点击submit即可提交。

注意

  • socketTextStream方法只是connect到远程端口,本身并不会启动端口,因此按照上述流程job会执行失败,此时需要使用nc -l 7777先将对应端口进行启动。
  • Flink的stream模式默认需要一次性申请所有的slot进行启动,standalone模式在默认情况下一个TaskManager只有一个slot,因此需要修改Flink的配置。
  • 修改slot配置
    进入conf目录,对flink-conf.yaml进行编辑,将对应的值修改为5(只要大于2即可,原理后面解释)。
# The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline.

taskmanager.numberOfTaskSlots: 5

  • 重新执行上述流程,任务即可正常执行。

你可能感兴趣的:(Flink-standalone搭建)