Flink学习笔记(1):Word Count

本文是学习Apache Flink的开始,记录了Flink Local模式的部署,并运行了Word Count例子。

1.下载和部署。

Flink可以运行在Linux、MacOS和Windows系统上,需要JDK1.7+的支持。本文记录了在linux(CentOS 6.7)上部署过程,默认已经安装了JDK1.8。

1.1 下载

从下面的链接中下载二进制的Flink,根据你喜欢的Hadoop/Scala版本选择对应的Flink版本。
http://flink.apache.org/downloads.html

1.2 部署

我们选择的版本是flink-1.1.2-bin-hadoop26-scala_2.11.tgz,放置在/opt目录下。

# 去下载目录
cd /opt
# 解压下载的压缩包
tar zxvf flink-1.1.2-bin-hadoop26-scala_2.11.tgz
cd flink-1.1.2
# 启动Flink
bin/start-local.sh

如要停止Flink,请使用命令:bin/stop-local.sh

如果Flink采用local模式部署,则JobManager和TaskManager在同一个进程内,可以通过jps 或者 ps -ef|grep flink来查看进程,只有一个名为JobManager的进程。这一点,在start-local.sh脚本里也可以发现,脚本内容如下。

STREAMING_MODE=$1

bin=`dirname "$0"`
bin=`cd "$bin"; pwd`
. "$bin"/config.sh

# local mode, only bring up job manager. 
   # The job manager will start an internal task manager
"$FLINK_BIN_DIR"/jobmanager.sh start local

1.3 访问Flink监控界面

访问Flink前端界面,确认系统启动,地址:http://localhost:8081。

Flink学习笔记(1):Word Count_第1张图片
jobmanager-1.png

2. 运行WordCount

在数据处理领域,WordCount就是HelloWorld。Flink自带WordCount例子,它通过socket读取text数据,并且统计每个单词出现的次数。如果你想查阅例子源码,请点击链接:SocketWindowWordCount源码。

2.1 启动本地监听

首先,使用nc命令启动一个本地监听,命令是:

nc -l 9000

如果报错:-bash: command not found,请先安装nc,在线安装命令:yum -y install nc

新开一个shell窗口,通过netstat命令观察9000端口。

netstat -anlp | grep 9000

观察结果如下

#协议 收 发  内部地址        外部地址    状态     进程
tcp      0  0    0.0.0.0:9000   0.0.0.0:*  LISTEN  19514/nc

2.2 提交WordCount程序

提交WordCount程序的命令:

cd /opt/flink-1.1.2
bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9000

日志信息如下:

09/23/2016 12:33:49    Job execution switched to status RUNNING.
09/23/2016 12:33:49    Source: Socket Stream -> Flat Map(1/1) switched to SCHEDULED 
09/23/2016 12:33:49    Source: Socket Stream -> Flat Map(1/1) switched to DEPLOYING 
09/23/2016 12:33:49    Fast SlidingProcessingTimeWindows(5000, 1000) of WindowedStream.main(SocketWindowWordCount.java:79) -> Sink: Unnamed(1/1) switched to SCHEDULED 
09/23/2016 12:33:49    Fast SlidingProcessingTimeWindows(5000, 1000) of WindowedStream.main(SocketWindowWordCount.java:79) -> Sink: Unnamed(1/1) switched to DEPLOYING 
09/23/2016 12:33:49    Fast SlidingProcessingTimeWindows(5000, 1000) of WindowedStream.main(SocketWindowWordCount.java:79) -> Sink: Unnamed(1/1) switched to RUNNING 
09/23/2016 12:33:49    Source: Socket Stream -> Flat Map(1/1) switched to RUNNING 

新开一个shell窗口,通过netstat命令观察9000端口。

netstat -anlp | grep 9000

观察结果如下,18569是Flink的进程号,19857是nc进程号,两者之间建立了一条连接。

#协议 收 发  内部地址        外部地址    状态     进程
tcp  0  0   0.0.0.0:9000   0.0.0.0:*  LISTEN   19857/nc            
tcp  0  0  127.0.0.1:9000  127.0.0.1:57454  ESTABLISHED 19857/nc            
tcp  0    0  ::ffff:127.0.0.1:57454  ::ffff:127.0.0.1:9000  ESTABLISHED 18569/java

Flink前端界面可以观察到有一个Running Job。

Flink学习笔记(1):Word Count_第2张图片
![Uploading jobmanager-3_342282.png . . .]
Flink学习笔记(1):Word Count_第3张图片
jobmanager-3.png

2.3 发送数据

在启动nc的shell窗口,输入

cup cup cup water water
Paste_Image.png

新开一个shell窗口,去/opt/flink-1.1.2/log目录下,执行tail -f flink*.out,可以查看到word count的结果。

cup : 3
water : 2

如要停止Flink,请使用命令:bin/stop-local.sh

https://ci.apache.org/projects/flink/flink-docs-release-1.1/quickstart/setup_quickstart.html

(完)

你可能感兴趣的:(Flink学习笔记(1):Word Count)