真实集群中Flink命令行各种模式提交wordcount
依然使用[1]中的代碼和工程目錄結構。
####################編譯和運行#################################
mvn clean package -Dmaven.test.skip=true
###############################################################
我發現實驗結果怎么都找不到?
終端沒有報錯
$FLINK/log下面沒有報錯
但是終端就是沒有實驗結果,我的實驗結果在哪里?????(浪費了一天時間,um..........)
注意看lsof -i:9999
如果出現:Desktop->Laptop,那么此時詞頻結果在Laptop的$FLINK_HOME/log(standalone模式)下面或者是yarn的Laptop的log下面(Flink on yarn模式)
| 模式 | 啟動集群文件 | 提交jar的命令示范 | 提交任務前jps | 提交任務后jps | 實驗結果位置 |
| Standalone模式 | $FLINK_HOME/bin/start-cluster.sh | flink run -c WordCount target/bbb-1.0-SNAPSHOT.jar | 118529 Jps 14448 NameNode 14612 DataNode 15092 ResourceManager 118164 TaskManagerRunner 15270 NodeManager 13831 QuorumPeerMain 117750 StandaloneSessionClusterEntrypoint | 14448 NameNode 14612 DataNode 120485 Jps 15092 ResourceManager 120212 CliFrontend 118164 TaskManagerRunner 15270 NodeManager 13831 QuorumPeerMain 117750 StandaloneSessionClusterEntrypoint | flink-appleyuchi-taskexecutor-0-Laptop.out |
| ? yarn Flink per-job cluster(在 yarn界面可以看到) | 不需要 ? ? | flink run -m yarn-cluster -p 2 -yjm 700m -ytm 1024m -c WordCount target/bbb-1.0-SNAPSHOT.jar | 84304 ResourceManager 83541 NameNode 84501 NodeManager 13831 QuorumPeerMain 83720 DataNode 36681 JobHistoryServer 88078 Jps 85198 ApplicationHistoryServer | 84304 ResourceManager 88144 CliFrontend 88560 YarnJobClusterEntrypoint 88899 Jps 83541 NameNode 84501 NodeManager 13831 QuorumPeerMain 83720 DataNode 36681 JobHistoryServer 88763 YarnTaskExecutorRunner 85198 ApplicationHistoryServer | yarn上的taskmanager.out?觀看 |
| Flink session cluster(在yarn界面可以看到) | $FLINK_HOME/bin/yarn-session.sh ? | flink run -p 2 -yjm 700m -ytm 1024m -c WordCount target/bbb-1.0-SNAPSHOT.jar | 14448 NameNode 25521 Jps 14612 DataNode 15092 ResourceManager 15270 NodeManager 13831 QuorumPeerMain 23208 YarnSessionClusterEntrypoint 22957 FlinkYarnSessionCli | 14448 NameNode 25025 Jps 14612 DataNode 15092 ResourceManager 15270 NodeManager 13831 QuorumPeerMain 23208 YarnSessionClusterEntrypoint 23515 CliFrontend 22957 FlinkYarnSessionCli ? | yarn上的taskmanager.out?觀看 |
上述表格中常說的兩種flink on yarn的模式,其實指的是在yarn界面看到的name,如下:
注意哈,flink on yarn有的時候會發現任何地方(Yarn的log,Flink的log,Flink提交jar的log)都沒有報錯,但是就是找不到程序輸出結果。
第一步,看下FLINK的web ui先確認程序有正確在運行。
如果該界面沒有任何數據,去yarn界面查下,是不是queue中的資源已經被占滿了,如果占滿了就釋放重新跑。
第二步,要看下lsof -i:9999
(Python3.6) appleyuchi@Desktop:實驗$ lsof -i:9999
COMMAND ? PID ? ? ? USER ? FD ? TYPE ?DEVICE SIZE/OFF NODE NAME
nc ? ? ?99279 appleyuchi ? ?3u ?IPv4 9314465 ? ? ?0t0 ?TCP *:9999 (LISTEN)
nc ? ? ?99279 appleyuchi ? ?4u ?IPv4 9314466 ? ? ?0t0 ?TCP Desktop:9999->Laptop:46194 (ESTABLISHED)
出現這個的意思也就是說需要去Laptop的位置尋找log,
第二步,去yarn界面查看結果,操作步驟如下:
| 步驟 | 操作 |
| ① | 訪問Desktop:8088的得到下圖,點擊application_xxxx ? |
| ② | 繼續點擊appattempt_XXX ? |
| ③ | 選擇Laptop左側的container |
| ④ | 然后點擊Logs ? |
| ⑤ | 點擊taskmanager.out |
| ⑥ |
注意上述步驟不一定固定,要根據lsof -i:端口的結果來判斷輸出結果在哪個機子上,
有的時候在Desktop,有的時候在Laptop,
如果是Laptop,有的時候在第②步會顯示Laptop的鏈接,這個時候直接點進去就可以了,此時后面的步驟不再需要照搬。
尋找輸出結果所在的核心思路就是:根據lsof -i:端口號的結果,去尋找該結果中對應的節點的taskmanager.out文件
對于standalone也是這樣,如果覺得能想到的log都沒有報錯的話,那么輸出結果極有可能在Laptop的$FLINK_HOME/log下面的.out文件中.
補充:
對于standalone而言,每次實驗,只會在一個節點的$FLINK_HOME/log下面生成flink-用戶名-taskexecutor-3-節點的IP.out
######################下面是一些細節說明################################################
關于flink on yarn-client這個詞語,首次出現在[2],引文:"如果你不希望flink yarn client一直運行,也可以啟動一個后臺運行的yarn session。使用這個參數:-d 或者 --detached"
這個指的也是“flink on yarn”的方式
flink on yarn其實和spark on yarn在形式上差不多。
[4]一般情況下你的 slot 數是你每個 TaskManager 的 cpu 的核數.
另外,[6]中提到,如果是Flink per-job cluster模式,一條命令即可
但是如果是Flink session cluster,則需要提前啟動yarn-session.sh文件,這個說法是不對的,無論哪種on yarn方式,都不需要理會yarn-session.sh文件
[7]是[8]的翻譯
######################下面是參考文獻################################################
Reference:
[1]intellij運行flink的wordcount實驗
[2]Flink集群部署詳細步驟
[3]Apache Flink 客戶端操作
[4]Flink--對parallelism 和 slot的理解
[5]YARN Setup-官方文檔
[6]Flink on Yarn兩種模式啟動參數及在Yarn上的恢復
[7]Apache Flink 客戶端操作
[8]Apache Flink Fundamentals: Building a Development Environment and Configure, Deploy and Run Applications
總結
以上是生活随笔為你收集整理的真实集群中Flink命令行各种模式提交wordcount的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耳麦接头的CTIA标准和OMTP标准
- 下一篇: 终端利器Cmder