下载
下载可以去官网下一个,下载完得到一个安装包
flink-1.7.2-bin-hadoop27-scala_2.11.tgz
安装
- 移到/usr/local下面
mv flink-1.7.2-bin-hadoop27-scala_2.11.tgz /usr/local
- 解压
tar -zxf flink-1.7.2-bin-hadoop27-scala_2.11.tgz
- 配置环境变量
vim /etc/profile
- 配置以下内容,FLINK_HOME配置成自己安装包解压出来的路径
export FLINK_HOME=/usr/local/{解压出来的那个文件夹}
export PATH=$FLINK_HOME/bin:$PATH
- 使配置环境生效
source /etc/profile
- 看看flink配置环境有没有生效
flink --version
启动
- 先来到bin目录下:
cd /usr/local/flink-1.7.2/bin/
- 启动flink:
./start-cluster.sh
,关闭flink:./stop-cluster.sh
- 启动完可用
jps
看一下,有这三个就算是正常启动了
- 可以通过8081端口进入页面,http://{你的ip}:8081
运行测试
flink自带的example
cd /usr/local/flink-1.7.2/examples/batch/
,这个目录下就有一些flink自带的一些example- 运行一下wordCount试试:
flink run WordCount.jar
,执行完后可以在后台看到有一条执行完成的记录,在shell上也有wordCount的日志
自己写个流处理wordCount
- 先建一个maven工程
- 引入flink的依赖
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.11</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
- 写一个流处理的WordCount
/**
* @author zhuangcanrun
* @Date 2021/06/07/11:42
* @description
**/
public class WordCountStream {
public static void main(String[] args) throws Exception {
// 获得执行环境
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 从netcat获得数据,ip和端口看个人
DataStream<String> text = env.socketTextStream("localhost", 60000, "\n");
// parse the data, group it, window it, and aggregate the counts
SingleOutputStreamOperator<Tuple2<String, Integer>> sum = text
.flatMap(new MyFlatMapper())
.keyBy(0)
.sum(1);
// print the results with a single thread, rather than in parallel
sum.print().setParallelism(1);
env.execute("Socket Window WordCount");
}
//将文本内容按空格,将单词分隔出来,然后按照(word,1)的形式返回
public static class MyFlatMapper implements FlatMapFunction<String, Tuple2<String,Integer>> {
@Override
public void flatMap(String s, Collector<Tuple2<String, Integer>> collector){
String[] words = s.split(" ");
for (String word : words) {
collector.collect(new Tuple2<String,Integer>(word, 1));
}
}
}
}
- 把工程打包成一个jar包,放到服务器里面去
- 启动自己写的jar包:
flink run -c com.rr.WordCountStream word-count-stream.jar
,这里-c后面指定对应的java类,不用加.java后缀 - 另开一个shell,打开一个netcat:
nc -lk 60000
,没有的先yum install netcat
- 可以在netcat这边试着输入一些单词
- 可以在flink后台那里看到一些结果