目录
一、目标以及前置资料
1.1 目标
1.2 前置资料
二、实现
2.1 搭建流程
2.2 调试
参考
一、目标以及前置资料
1.1 目标
1.2 前置资料
1、下载jdk:Mac 安装jdk_mac 安装jdk 1.8-CSDN博客
2、下载homebrew:打开terminal执行下面指令
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
如图:
3、下载maven:Mac 安装Maven的几种方法和操作步骤__ddz的技术博客_51CTO博客
4、下载flink:打开terminal执行下面安装指令
brew install apache-flink
查看安装位置,记下安装目录(后面用)
brew info apache-flink
二、实现
2.1 搭建流程
1、进入安装目录,输入下面指令,启动 flink 集群, 集群启动以后,进入 web 页面:http://localhost:8081/
cd 到你下载的目录
./libexec/bin/start-cluster.sh
2、在你的目录下(自己选在哪个目录)构建项目,再进入项目下
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
cd src/main/java/org/myorg/quickstart/
3、修改DataStreamJob.java,可以用idea,可以用vi,随便,文件内容复制粘贴如下
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>> {@Overridepublic 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 端口:
nc -lk 9888
打包,点右侧m,再clean,再package
生成文件会在/quickstart/target下,打开terminal,在最一开始quickstart目录下执行,运行flink任务
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博客