Flink在Mac OS X上的安装与启动

准备工作

安装查看java的版本号,推荐使用java8。

1
2
$ java -version
java version "1.8.0_161"

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

1
2
3
4
$ brew install apache-flink
...
$ flink --version
Version: 1.5.0, Commit ID: c61b108

启动Flink和进入web交互页面

Flink可以通过自带的脚本快速启动。首先通过brew来定位刚才安装的Flink的安装目录。

1
2
3
$ brew info apache-flink
/usr/local/Cellar/apache-flink/1.5.0 (116 files, 324MB) *
Built from source on 2018-06-22 at 16:42:50

找到之后,进入”1.5.0”目录,然后执行启动脚本

1
$ ./libexec/bin/start-cluster.sh

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

简单的示例

首先用IDEA创建一个maven工程。

maven工程构件

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class SocketTextStreamWordCount {


public static void main(String[] args) throws Exception {
//参数检查
if (args.length != 2) {
System.err.println("USAGE:\nSocketTextStreamWordCount <hostname> <port>");
return;
}

String hostName = args[0];
Integer port = Integer.parseInt(args[1]);

//设置环境
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

//获取数据
DataStream<String> text = env.socketTextStream(hostName, port);

//计数
DataStream<Tuple2<String, Integer>> counts = text.flatMap(new LineSplitter())
.keyBy(0)
.sum(1);
counts.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));
}
}
}
}
}

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

1
$ maven clean package -Dmaven.test.skip=true

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

1
$ nc -l 9000

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

1
$ /bin/flink run -c org.myorg.quickstart.SocketTextStreamWordCount /your/path/target/original-flink-quickstart-java-1.0-SNAPSHOT.jar 127.0.0.1 9000

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

webUI

我们可以在nc中输入text,比如

1
2
3
4
$ nc -l 9000
hello hello hello
hehe
your world

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

1
2
3
4
5
6
7
tail -f ./libexec/log/flink-*-taskexecutor-1-localhost.out
(hello,1)
(hello,2)
(hello,3)
(hehe,1)
(your,1)
(world,1)

总结

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

参考

Setting up Apache Flink on Mac OS X
Apache Flink 中文文档

Author: MrHook
Link: https://bigjar.github.io/2018/06/23/Flink%E5%9C%A8Mac-OS-X%E4%B8%8A%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E5%90%AF%E5%8A%A8/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.