Flink-standalone搭建

Flink搭建

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

下载Flink

启动集群

  • 进入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<String> source = streamExecutionEnvironment.socketTextStream("localhost", 7777);

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

        streamExecutionEnvironment.execute();
    }
}

maven依赖如下:

<dependencies>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>1.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.12</artifactId>
            <version>1.12.1</version>
        </dependency>
    </dependencies>

注意,本地工程引用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

  • 重新执行上述流程,任务即可正常执行。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容