一、基本介紹
??Flink底層源碼是基于Java代碼進(jìn)行開(kāi)發(fā),在Flink編程中我們除了可以使用Java語(yǔ)言來(lái)進(jìn)行編寫(xiě)Flink程序外,還可以使用Scala、Python語(yǔ)言來(lái)進(jìn)行編寫(xiě)Flink程序。
本文主要使用Java來(lái)編寫(xiě)Flink程序。
- flink搭建在centos服務(wù)器:jdk環(huán)境1.8、flink單機(jī) - 1.16.0版本
- 開(kāi)發(fā)環(huán)境搭建在win10系統(tǒng):jdk環(huán)境1.8、idea、maven3.4.5
回到目錄
下面來(lái)準(zhǔn)備下Flink開(kāi)發(fā)環(huán)境:
二、環(huán)境準(zhǔn)備
1.1 JDK環(huán)境
??Flink核心模塊均采用Java開(kāi)發(fā),所以運(yùn)行環(huán)境需要依賴JDK,Flink可以基于類UNIX 環(huán)境中運(yùn)行,例如:Linux、Max、OS、Windows等,在這些系統(tǒng)上運(yùn)行Flink時(shí)都需要配置JDK環(huán)境。Flink早在1.15就要求使用JDK11,主要是為了用上比G1更優(yōu)秀的ZGC。Flink1.16.0版本也支持使用JDK8,后續(xù)版本對(duì)JDK8的支持將會(huì)移除。
- windows環(huán)境:
建議升級(jí)到JDK11,
JDK11 下載地址如下:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
jdk1.8下載地址如下:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
- linux環(huán)境:參考鏈接 - CentOS安裝jdk的三種方法
??考慮到Flink后期與一些大數(shù)據(jù)框架進(jìn)行整合,這些大數(shù)據(jù)框架對(duì)JDK11的支持并不完善,例如:Hive3.1.3版本還不支持JDK11,所以本文采用JDK8來(lái)開(kāi)發(fā)Flink。
回到目錄
1.2 開(kāi)發(fā)工具
??可以選擇IntelliJ IDEA或者Eclipse作為Flink應(yīng)用的開(kāi)發(fā)IDE,F(xiàn)link開(kāi)發(fā)官方建議使用IntelliJ IDEA,因?yàn)樗J(rèn)集成了Scala和Maven環(huán)境,使用更加方便。
??具體安裝步驟詳見(jiàn):IntelliJ IDEA 安裝及配置詳細(xì)教程。
博主使用IntelliJ IDEA開(kāi)發(fā)工具.
回到目錄
1.3 Maven環(huán)境
??通過(guò)IntelliJ IDEA進(jìn)行開(kāi)發(fā)Flink Application時(shí),可以使用Maven來(lái)作為項(xiàng)目jar包管理工具,需要在本地安裝Maven及配置Maven的環(huán)境變量,需要注意的是,Maven版本需要使用3.0.4及以上,否則編譯或開(kāi)發(fā)過(guò)程中會(huì)有問(wèn)題。
??具體安裝步驟詳見(jiàn):Maven下載安裝及IDEA配置Maven的超詳細(xì)教程
本文使用Maven3.5.4
回到目錄
三、flink下載安裝配置
3.1 Flink下載
??flink 從 1.10開(kāi)始,windows上跑不起來(lái),各種問(wèn)題。windows當(dāng)前能支持的最高版本是1.9.3,直接安裝就行。
選擇合適的版本下載,官方下載地址:https://archive.apache.org/dist/flink/
本文選擇的版本Flink1.16.0,F(xiàn)link1.16.0版本官方文檔地址:
https://nightlies.apache.org/flink/flink-docs-release-1.16/
回到目錄
3.2 flink本地模式安裝 - linux
參考鏈接:【Flink入門(mén)】centos上flink安裝部署(standalone模式)
注意:centos需要先安裝jdk環(huán)境 ,參考鏈接 - CentOS安裝jdk的三種方法
- 創(chuàng)建目錄,將下載文件放入該目錄;或者直接本地下載,執(zhí)行如下命令:
wget http://mirrors.estointernet.in/apache/flink/flink-1.16.0/對(duì)應(yīng)版本的安裝包名稱.tgz
# 示例 :下載flink1.16.0版本
wget http://mirrors.estointernet.in/apache/flink/flink-1.16.0/flink-1.16.0-bin-scala_2.11.tgz
- 解壓安裝包,執(zhí)行命令:
tar -zxvf 安裝包名稱.tgz
# 示例
tar -zxvf flink-1.16.0-bin-scala_2.11.tgz
回到目錄
3.3 常用配置
1. 配置 TaskManager 的部署:
??flink安裝包的/conf/slaves
用于配置 TaskManager 的部署,默認(rèn)配置下只會(huì)啟動(dòng)一個(gè) TaskManager 進(jìn)程,如果想增加一個(gè) TaskManager 進(jìn)程的,只需要文件中追加一行“l(fā)ocalhost”。
也可以直接通過(guò)“ ./bin/taskmanager.sh start ”這個(gè)命令來(lái)追加一個(gè)新的 TaskManager:
./bin/taskmanager.sh start|start-foreground|stop|stop-all
2. 配置 JM 和 TM 的運(yùn)行參數(shù):
??flink安裝包的/conf/flink-conf.yaml
用于配置 JM 和 TM 的運(yùn)行參數(shù),常用配置有:
# The total process memory size for the JobManager.
# Note this accounts for all memory usage within the JobManager process, including JVM metaspace and other overhead.
# 包括JobManager進(jìn)程中的所有內(nèi)存使用,包括JVM元空間和其他開(kāi)銷(xiāo)
jobmanager.memory.process.size: 1600m
# The total process memory size for the TaskManager.
# Note this accounts for all memory usage within the TaskManager process, including JVM metaspace and other overhead.
# 這包括TaskManager進(jìn)程中的所有內(nèi)存使用,包括JVM元空間和其他開(kāi)銷(xiāo)
taskmanager.memory.process.size: 1728m
# To exclude JVM metaspace and overhead, please, use total Flink memory size instead of 'taskmanager.memory.process.size'.
# It is not recommended to set both 'taskmanager.memory.process.size' and Flink memory.
# 要排除JVM元空間和開(kāi)銷(xiāo),請(qǐng)使用總Flink內(nèi)存大小,而不是'taskmanager.memory.process.size'。不建議同時(shí)設(shè)置'taskmanager.memory.process. '和Flink內(nèi)存
# taskmanager.memory.flink.size: 1280m
# The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline.
# 每個(gè)任務(wù)管理器提供的任務(wù)槽數(shù)。每個(gè)插槽運(yùn)行一個(gè)并行管道
taskmanager.numberOfTaskSlots: 1
# The parallelism used for programs that did not specify and other parallelism.
# 用于未指定程序的并行度和其他并行度
parallelism.default: 1
回到目錄
3.4 日志的查看和配置
??JobManager 和 TaskManager 的啟動(dòng)日志可以在 Flink binary 目錄下的 Log 子目錄中找到。Log 目錄中以flink-{id}-${hostname}
為前綴的文件對(duì)應(yīng)的是 JobManager 的輸出,其中有三個(gè)文件:
-
flink-${user}-standalonesession-${id}-${hostname}.log
:代碼中的日志輸出 -
flink-${user}-standalonesession-${id}-${hostname}.out
:進(jìn)程執(zhí)行時(shí)的stdout輸出 -
flink-${user}-standalonesession-${id}-${hostname}-gc.log
:JVM的GC的日志
??Log 目錄中以flink-{id}-${hostname}
為前綴的文件對(duì)應(yīng)的是 TaskManager 的輸出,也包括三個(gè)文件,和 JobManager 的輸出一致。
日志的配置文件在 Flink binary 目錄的 conf 子目錄下,其中:
-
log4j-cli.properties
:用 Flink 命令行時(shí)用的 log 配置,比如執(zhí)行“ flink run”命令 -
log4j-yarn-session.properties
:用 yarn-session.sh 啟動(dòng)時(shí)命令行執(zhí)行時(shí)用的 log 配置 -
log4j.properties
:無(wú)論是 Standalone 還是 Yarn 模式,JobManager 和 TaskManager 上用的 log 配置都是 log4j.properties。
??這三個(gè)“l(fā)og4j.*properties”文件分別有三個(gè)“l(fā)ogback.*xml”文件與之對(duì)應(yīng),如果想使用 Logback 的同學(xué),只需要把與之對(duì)應(yīng)的“l(fā)og4j.*properties”文件刪掉即可,對(duì)應(yīng)關(guān)系如下: - log4j-cli.properties -> logback-console.xml
- log4j-yarn-session.properties -> logback-yarn.xml
- log4j.properties -> logback.xml
??需要注意的是,flink-{id}-和{user}-taskexecutor-{hostname}
都帶有“,{id}”表示本進(jìn)程在本機(jī)上該角色(JobManager 或 TaskManager)的所有進(jìn)程中的啟動(dòng)順序,默認(rèn)從 0 開(kāi)始。
回到目錄
四、單機(jī) Standalone 的方式運(yùn)行 Flink
- 參考鏈接:【Flink部署】java部署、本地部署(maven-shade工具)、平臺(tái)部署(windows部署、 linux部署);端口號(hào)修改
最簡(jiǎn)單的運(yùn)行 Flink 應(yīng)用的方法就是以單機(jī) Standalone 的方式運(yùn)行。
- 進(jìn)入flink安裝目錄:
cd 安裝目錄
- 啟動(dòng)集群:
./bin/start-cluster.sh
停止集群:
./bin/stop-cluster.sh
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-641486.html
- 打開(kāi) http://127.0.0.1:8081/ 就能看到 Flink 的 Web 界面。在執(zhí)行./start-cluster.sh 后,flink進(jìn)程的監(jiān)聽(tīng)ip端口是127.0.0.1:8081。這樣只能本機(jī)進(jìn)行訪問(wèn),外部服務(wù)器是訪問(wèn)不了的。
- 要想外部服務(wù)器能訪問(wèn),需要修改配置文件:
flink安裝包的conf/masters
:
默認(rèn)配置:localhost:8081,進(jìn)程啟動(dòng)時(shí)會(huì)按照這個(gè)主機(jī)名從/etc/hosts找到對(duì)應(yīng)的ip, 因?yàn)槲业闹鳈C(jī)配置是: - 看centos服務(wù)器的8081端口防火墻是否打開(kāi)。
#示例:新增防火墻開(kāi)放端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-641486.html
- 查看進(jìn)程:
ps -ef | grep flink
- 關(guān)閉進(jìn)程:
kill -9 進(jìn)程號(hào)
五、java jar上傳與運(yùn)行
- 點(diǎn)擊“submit new job”
- 點(diǎn)擊“add new”
- 根據(jù)目錄位置,找到對(duì)應(yīng)的jar包,上傳即可:
- 自定義參數(shù)并提交
- 提交成功后,在 jobs -> running jobs界面即可看到運(yùn)行的流程信息
- 日志可以在flinkl安裝包的log文件夾里查看:
回到目錄
到了這里,關(guān)于Flink開(kāi)發(fā)環(huán)境準(zhǔn)備: centos-jdk8的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!