从0到1搭建flink程序-WordCount(图文/详细/mac)

目录

一、目标以及前置资料

[1.1 目标](#1.1 目标)

[1.2 前置资料](#1.2 前置资料)

二、实现

[2.1 搭建流程](#2.1 搭建流程)

[2.2 调试](#2.2 调试)

参考


一、目标以及前置资料

1.1 目标

初步感受flink任务,从0到1快速搭建一个flink程序

1.2 前置资料

1、下载jdk:Mac 安装jdk_mac 安装jdk 1.8-CSDN博客

2、下载homebrew:打开terminal执行下面指令

bash 复制代码
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

如图:

3、下载maven:Mac 安装Maven的几种方法和操作步骤__ddz的技术博客_51CTO博客

4、下载flink:打开terminal执行下面安装指令

bash 复制代码
brew install apache-flink

查看安装位置,记下安装目录(后面用)

bash 复制代码
brew info apache-flink

二、实现

2.1 搭建流程

1、进入安装目录,输入下面指令,启动 flink 集群, 集群启动以后,进入 web 页面:http://localhost:8081/

bash 复制代码
cd 到你下载的目录
./libexec/bin/start-cluster.sh

2、在你的目录下(自己选在哪个目录)构建项目,再进入项目下

bash 复制代码
curl https://flink.apache.org/q/quickstart.sh | bash -s 1.18.0
cd quickstart

查看目录结构,输入tree, 如果电脑里没有tree,就brew install tree,下载一个

再次进入,修改目录/quickstart/src/main/java/org/myorg/quickstart下文件DataStreamJob.java

bash 复制代码
cd src/main/java/org/myorg/quickstart/

3、修改DataStreamJob.java,可以用idea,可以用vi,随便,文件内容复制粘贴如下

java 复制代码
package org.myorg.quickstart;

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
import org.apache.flink.api.common.RuntimeExecutionMode;

public class DataStreamJob {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setRuntimeMode(RuntimeExecutionMode.STREAMING);
        env.socketTextStream("127.0.0.1", 9888)
                .flatMap(new LineSplitter())
                .keyBy(0)
                .sum(1)
                .print();

        env.execute("WordCount");
    }

    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<>(token, 1));
                }
            }
        }
    }
}

上述代码使用 DataStream API 构建了一个 Flink 应用,数据源(source)为本地的 socket 端口(端口可以自己改代码,我这里是9888),经过 flatMap、keyBy、sum 三个转换操作之后,最后打印到标准输出流。整体流程如下图:

4、运行

启动 socket 连接,监听 9888 端口:

java 复制代码
nc -lk 9888

打包,点右侧m,再clean,再package

生成文件会在/quickstart/target下,打开terminal,在最一开始quickstart目录下执行,运行flink任务

bash 复制代码
flink run target/quickstart-0.1.jar 

回到http://localhost:8081

运行正常,在终端输入一些字符

flink任务会显示输出

2.2 调试

Q1:电脑当时用9000端口始终连不上,可能是被占用了/被禁用,如何明确端口是否可用

打开两个终端,一个指令telnet 127.0.0.1 10000,另外一个nc -lk 10000 (telnet指令没有还是可以brew install telnet)

发送一些信息,上图显示收发正常,表示连接没问题

参考

Mac系统下一键安装Homebrew方法(本人亲测有效)_homebrew 一键安装-CSDN博客

从零开始快速构建自己的Flink应用-CSDN博客

相关推荐
在未来等你2 小时前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
大数据CLUB5 小时前
基于spark的澳洲光伏发电站选址预测
大数据·hadoop·分布式·数据分析·spark·数据开发
ratbag6720135 小时前
当环保遇上大数据:生态环境大数据技术专业的课程侧重哪些领域?
大数据
计算机编程小央姐7 小时前
跟上大数据时代步伐:食物营养数据可视化分析系统技术前沿解析
大数据·hadoop·信息可视化·spark·django·课程设计·食物
智数研析社8 小时前
9120 部 TMDb 高分电影数据集 | 7 列全维度指标 (评分 / 热度 / 剧情)+API 权威源 | 电影趋势分析 / 推荐系统 / NLP 建模用
大数据·人工智能·python·深度学习·数据分析·数据集·数据清洗
潘达斯奈基~8 小时前
《大数据之路1》笔记2:数据模型
大数据·笔记
寻星探路8 小时前
数据库造神计划第六天---增删改查(CRUD)(2)
java·大数据·数据库
翰林小院10 小时前
【大数据专栏】流式处理框架-Apache Fink
大数据·flink
孟意昶11 小时前
Spark专题-第一部分:Spark 核心概述(2)-Spark 应用核心组件剖析
大数据·spark·big data
IT学长编程12 小时前
计算机毕业设计 基于Hadoop的健康饮食推荐系统的设计与实现 Java 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
java·大数据·hadoop·毕业设计·课程设计·推荐算法·毕业论文