本文是學習Apache Flink的開始,記錄了Flink Local模式的部署,并運行了Word Count例子。
1.下載和部署俊扭。
Flink可以運行在Linux、MacOS和Windows系統(tǒng)上坠陈,需要JDK1.7+的支持萨惑。本文記錄了在linux(CentOS 6.7)上部署過程捐康,默認已經(jīng)安裝了JDK1.8。
1.1 下載
從下面的鏈接中下載二進制的Flink,根據(jù)你喜歡的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在同一個進程內(nèi)萍嬉,可以通過jps
或者 ps -ef|grep flink
來查看進程乌昔,只有一個名為JobManager的進程。這一點壤追,在start-local.sh腳本里也可以發(fā)現(xiàn)磕道,腳本內(nèi)容如下。
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監(jiān)控界面
訪問Flink前端界面行冰,確認系統(tǒng)啟動溺蕉,地址:http://localhost:8081。
2. 運行WordCount
在數(shù)據(jù)處理領域悼做,WordCount就是HelloWorld疯特。Flink自帶WordCount例子,它通過socket讀取text數(shù)據(jù)肛走,并且統(tǒng)計每個單詞出現(xiàn)的次數(shù)漓雅。如果你想查閱例子源碼,請點擊鏈接:SocketWindowWordCount源碼朽色。
2.1 啟動本地監(jiān)聽
首先邻吞,使用nc命令啟動一個本地監(jiān)聽,命令是:
nc -l 9000
如果報錯:-bash: command not found葫男,請先安裝nc抱冷,在線安裝命令:yum -y install nc
。
新開一個shell窗口梢褐,通過netstat命令觀察9000端口旺遮。
netstat -anlp | grep 9000
觀察結(jié)果如下
#協(xié)議 收 發(fā) 內(nèi)部地址 外部地址 狀態(tài) 進程
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
觀察結(jié)果如下趣效,18569是Flink的進程號,19857是nc進程號猪贪,兩者之間建立了一條連接。
#協(xié)議 收 發(fā) 內(nèi)部地址 外部地址 狀態(tài) 進程
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讯私。
2.3 發(fā)送數(shù)據(jù)
在啟動nc的shell窗口热押,輸入
cup cup cup water water
新開一個shell窗口西傀,去/opt/flink-1.1.2/log目錄下,執(zhí)行tail -f flink*.out
,可以查看到word count的結(jié)果桶癣。
cup : 3
water : 2
如要停止Flink拥褂,請使用命令:bin/stop-local.sh
https://ci.apache.org/projects/flink/flink-docs-release-1.1/quickstart/setup_quickstart.html
(完)