zoukankan      html  css  js  c++  java
  • 《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门

    009

    准备工作

    1、安装查看 Java 的版本号,推荐使用 Java 8。

    2、在 Mac OS X 上安装 Flink 是非常方便的。推荐通过 homebrew 来安装。

    brew install apache-flink
    

    3、检查安装:

    flink --version
    

    结果:

    Version: 1.6.0, Commit ID: ff472b4
    

    4、启动 flink

    zhisheng@zhisheng � /usr/local/Cellar/apache-flink/1.6.0/libexec/bin � ./start-cluster.sh
    Starting cluster.
    Starting standalonesession daemon on host zhisheng.
    Starting taskexecutor daemon on host zhisheng.
    

    接着就可以进入 web 页面(http://localhost:8081/) 查看

    1flink-web

    demo

    1、新建一个 maven 项目

    flink-demo

    创建一个 SocketTextStreamWordCount 文件,加入以下代码:

    package com.zhisheng.flink;
    
    import org.apache.flink.api.common.functions.FlatMapFunction;
    import org.apache.flink.api.java.tuple.Tuple2;
    import org.apache.flink.streaming.api.datastream.DataStreamSource;
    import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
    import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
    import org.apache.flink.util.Collector;
    
    /**
     * Created by zhisheng_tian on 2018/9/18
     */
    public class SocketTextStreamWordCount {
        public static void main(String[] args) throws Exception {
            //参数检查
            if (args.length != 2) {
                System.err.println("USAGE:
    SocketTextStreamWordCount <hostname> <port>");
                return;
            }
    
            String hostname = args[0];
            Integer port = Integer.parseInt(args[1]);
    
    
            // set up the streaming execution environment
            final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    
            //获取数据
            DataStreamSource<String> stream = env.socketTextStream(hostname, port);
    
            //计数
            SingleOutputStreamOperator<Tuple2<String, Integer>> sum = stream.flatMap(new LineSplitter())
                    .keyBy(0)
                    .sum(1);
    
            sum.print();
    
            env.execute("Java WordCount from SocketTextStream Example");
        }
    
        public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
            @Override
            public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) {
                String[] tokens = s.toLowerCase().split("\W+");
    
                for (String token: tokens) {
                    if (token.length() > 0) {
                        collector.collect(new Tuple2<String, Integer>(token, 1));
                    }
                }
            }
        }
    }
    

    接着进入工程目录,使用以下命令打包。

    mvn clean package -Dmaven.test.skip=true
    

    2build

    然后我们开启监听 9000 端口:

    nc -l 9000  
    

    监听

    最后进入 flink 安装目录 bin 下执行以下命令跑程序:

    flink run -c com.zhisheng.flink.SocketTextStreamWordCount /Users/zhisheng/IdeaProjects/flink/word-count/target/original-word-count-1.0-SNAPSHOT.jar 127.0.0.1 9000
    

    注意换成你自己项目的路径。

    4run

    执行完上述命令后,我们可以在 webUI 中看到正在运行的程序:

    5running-job

    我们可以在 nc 监听端口中输入 text,比如:

    nc

    然后我们通过 tail 命令看一下输出的 log 文件,来观察统计结果。进入目录 apache-flink/1.6.0/libexec/log,执行以下命令:

    tail -f flink-zhisheng-taskexecutor-0-zhisheng.out
    

    注意:切换成你自己的路径和查看自己的目录。

    result

    总结

    本文描述了如何在 Mac 电脑上安装 Flink,及运行它。接着通过一个简单的 Flink 程序来介绍如何构建及运行Flink 程序。

    关注我

    转载请注明地址:http://www.54tianzhisheng.cn/2018/09/18/flink-install

    另外我自己整理了些 Flink 的学习资料,目前已经全部放到微信公众号了。你可以加我的微信:zhisheng_tian,然后回复关键字:Flink 即可无条件获取到。

    相关文章

    1、《从0到1学习Flink》—— Apache Flink 介绍

    2、《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门

    3、《从0到1学习Flink》—— Flink 配置文件详解

    4、《从0到1学习Flink》—— Data Source 介绍

    5、《从0到1学习Flink》—— 如何自定义 Data Source ?

    6、《从0到1学习Flink》—— Data Sink 介绍

    7、《从0到1学习Flink》—— 如何自定义 Data Sink ?

    8、《从0到1学习Flink》—— Flink Data transformation(转换)

  • 相关阅读:
    hadoop再次集群搭建(3)-如何选择相应的hadoop版本
    48. Rotate Image
    352. Data Stream as Disjoint Interval
    163. Missing Ranges
    228. Summary Ranges
    147. Insertion Sort List
    324. Wiggle Sort II
    215. Kth Largest Element in an Array
    快速排序
    280. Wiggle Sort
  • 原文地址:https://www.cnblogs.com/zhisheng/p/10055490.html
Copyright © 2011-2022 走看看