摘要:本篇文章連接是關(guān)注我微信公眾號(hào)另外我自己整理了些的學(xué)習(xí)資料,目前已經(jīng)全部放到微信公眾號(hào)了。你可以加我的微信,然后回復(fù)關(guān)鍵字即可無(wú)條件獲取到。
前言
寫(xiě)這篇文章其實(shí)也是知識(shí)星球里面的一個(gè)小伙伴問(wèn)了這樣一個(gè)問(wèn)題:
通過(guò) flink UI 儀表盤(pán)提交的 jar 是存儲(chǔ)在哪個(gè)目錄下?
這個(gè)問(wèn)題其實(shí)我自己也有問(wèn)過(guò),但是自己因?yàn)樽约旱膯?wèn)題沒(méi)有啥壓力也就沒(méi)深入去思考,現(xiàn)在可是知識(shí)星球的付費(fèi)小伙伴問(wèn)的,所以自然要逼著自己去深入然后才能給出正確的答案。
跟著我一起來(lái)看看我的探尋步驟吧!小小的 jar 竟然還敢和我捉迷藏?
查看配置文件首先想到的是這個(gè)肯定可以在配置文件中有設(shè)置的地方的:
谷歌大法好雖然有個(gè)是 upload 的,但是并不是我們想要的目錄!于是,只好動(dòng)用我的“谷歌大法好”。
找到了一條,點(diǎn)進(jìn)去看 Issue 如下:
發(fā)現(xiàn)這 tm 不就是想要的嗎?都支持配置文件來(lái)填寫(xiě)上傳的 jar 后存儲(chǔ)的目錄了!趕緊點(diǎn)進(jìn)去看一波源碼:
源碼確認(rèn)這個(gè) jobmanager.web.upload.dir 是不是?我去看下 1.8 的源碼確認(rèn)一下:
發(fā)現(xiàn)這個(gè) jobmanager.web.upload.dir 還過(guò)期了,用 WebOptions 類中的 UPLOAD_DIR 替代了!
繼續(xù)跟進(jìn)去看看這個(gè) UPLOAD_DIR 是啥玩意?
看這注釋的意思是說(shuō),如果這個(gè)配置 web.upload.dir 沒(méi)有配置具體的路徑的話就會(huì)使用 JOB_MANAGER_WEB_TMPDIR_KEY 目錄,那么我們來(lái)看看是否配置了這個(gè)目錄呢?
確實(shí)沒(méi)有配置這個(gè) jar 文件上傳的目錄,那么我們來(lái)看看這個(gè)臨時(shí)目錄 JOB_MANAGER_WEB_TMPDIR_KEY 是在哪里的?
又是一個(gè)過(guò)期的目錄,mmp,繼續(xù)跟下去看下這個(gè)目錄 TMP_DIR。
我們查看下配置文件是否有配置這個(gè) web.tmpdir 的值,又是沒(méi)有:
so,它肯定使用的是 System.getProperty("java.io.tmpdir") 這個(gè)目錄了,
我查看了下我本地電腦起的 job 它的配置中有這個(gè)配置如下:
java.io.tmpdir /var/folders/mb/3vpbvkkx13l2jmpt2kmmt0fr0000gn/T/
再觀察了下 job,發(fā)現(xiàn) jobManager 這里有個(gè) web.tmpdir 的配置:
web.tmpdir /var/folders/mb/3vpbvkkx13l2jmpt2kmmt0fr0000gn/T/flink-web-ea909e9e-4bac-452d-8450-b4ff082298c7
發(fā)現(xiàn)這個(gè) web.tmpdir 的就是由 java.io.tmpdir + “flink-web-” + UUID 組成的!
水落石出進(jìn)入這個(gè)目錄發(fā)現(xiàn)我們上傳的 jar 終于被找到了:
配置上傳 jar 目錄確認(rèn)上面我們雖然已經(jīng)知道我們上傳的 jar 是存儲(chǔ)在這個(gè)臨時(shí)目錄里,那么我們現(xiàn)在要驗(yàn)證一下,我們?cè)谂渲梦募信渲靡幌律蟼?jar 的固定位置,我們先在目錄下創(chuàng)建一個(gè) jars 目錄,然后在配置文件中加入這個(gè)配置:
web.tmpdir: /usr/local/blink-1.5.1/jars
更改之后再看 web.tmpdir 是這樣的:
從 Flink UI 上上傳了三個(gè) jar,查看 /usr/local/blink-1.5.1/jars/flink-web-7a98165b-1d56-44be-be8c-d0cd9166b179 目錄下就出現(xiàn)了我們的 jar 了。
我們重啟 Flink,發(fā)現(xiàn)這三個(gè) jar 又沒(méi)有了,這也能解釋之前我自己也遇到過(guò)的問(wèn)題了,F(xiàn)link 重啟后之前所有上傳的 jar 都被刪除了!作為生產(chǎn)環(huán)境,這樣玩,肯定不行的,所以我們還是得固定一個(gè)目錄來(lái)存儲(chǔ)所有的上傳 jar 包,并且不能夠被刪除,要配置固定的目錄(Flink 重啟也不刪除的話)需要配置如下:
web.upload.dir: /usr/local/blink-1.5.1/jars
這樣的話,就可以保證你的 jar 不再會(huì)被刪除了!
再來(lái)看看源碼是咋寫(xiě)的哈:
//從配置文件中找 UPLOAD_DIR final Path uploadDir = Paths.get( config.getString(WebOptions.UPLOAD_DIR, config.getString(WebOptions.TMP_DIR)), "flink-web-upload"); return new RestServerEndpointConfiguration( restAddress,restBindAddress,port,sslEngineFactory, uploadDir,maxContentLength,responseHeaders);
他就是從配置文件中找 UPLOAD_DIR,如果為 null 就找 TMP_DIR 目錄來(lái)當(dāng)作 jar 上傳的路徑!
總結(jié)本文從知識(shí)星球一個(gè)朋友的問(wèn)題,從現(xiàn)象到本質(zhì)再到解決方案的講解了下如何找到 Flink UI 上上傳的 jar 包藏身之處,并提出了如何解決 Flink 上傳的 jar 包被刪除的問(wèn)題。
本篇文章連接是:http://www.54tianzhisheng.cn/2019/03/13/flink-job-jars/
關(guān)注我微信公眾號(hào):zhisheng
另外我自己整理了些 Flink 的學(xué)習(xí)資料,目前已經(jīng)全部放到微信公眾號(hào)了。你可以加我的微信:zhisheng_tian,然后回復(fù)關(guān)鍵字:Flink 即可無(wú)條件獲取到。
更多私密資料請(qǐng)加入知識(shí)星球!
Github 代碼倉(cāng)庫(kù)https://github.com/zhisheng17/flink-learning/
以后這個(gè)項(xiàng)目的所有代碼都將放在這個(gè)倉(cāng)庫(kù)里,包含了自己學(xué)習(xí) flink 的一些 demo 和博客。
相關(guān)文章1、《從0到1學(xué)習(xí)Flink》—— Apache Flink 介紹
2、《從0到1學(xué)習(xí)Flink》—— Mac 上搭建 Flink 1.6.0 環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門(mén)
3、《從0到1學(xué)習(xí)Flink》—— Flink 配置文件詳解
4、《從0到1學(xué)習(xí)Flink》—— Data Source 介紹
5、《從0到1學(xué)習(xí)Flink》—— 如何自定義 Data Source ?
6、《從0到1學(xué)習(xí)Flink》—— Data Sink 介紹
7、《從0到1學(xué)習(xí)Flink》—— 如何自定義 Data Sink ?
8、《從0到1學(xué)習(xí)Flink》—— Flink Data transformation(轉(zhuǎn)換)
9、《從0到1學(xué)習(xí)Flink》—— 介紹Flink中的Stream Windows
10、《從0到1學(xué)習(xí)Flink》—— Flink 中的幾種 Time 詳解
11、《從0到1學(xué)習(xí)Flink》—— Flink 寫(xiě)入數(shù)據(jù)到 ElasticSearch
12、《從0到1學(xué)習(xí)Flink》—— Flink 項(xiàng)目如何運(yùn)行?
13、《從0到1學(xué)習(xí)Flink》—— Flink 寫(xiě)入數(shù)據(jù)到 Kafka
14、《從0到1學(xué)習(xí)Flink》—— Flink JobManager 高可用性配置
15、《從0到1學(xué)習(xí)Flink》—— Flink parallelism 和 Slot 介紹
16、《從0到1學(xué)習(xí)Flink》—— Flink 讀取 Kafka 數(shù)據(jù)批量寫(xiě)入到 MySQL
17、《從0到1學(xué)習(xí)Flink》—— Flink 讀取 Kafka 數(shù)據(jù)寫(xiě)入到 RabbitMQ
18、《從0到1學(xué)習(xí)Flink》—— 你上傳的 jar 包藏到哪里去了?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73783.html
摘要:模塊中的類結(jié)構(gòu)如下博客從到學(xué)習(xí)介紹從到學(xué)習(xí)上搭建環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門(mén)從到學(xué)習(xí)配置文件詳解從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)轉(zhuǎn)換從到學(xué)習(xí)介紹中的從到學(xué)習(xí)中的幾種詳解從到學(xué)習(xí)讀取數(shù)據(jù)寫(xiě)入到從到學(xué) Flink-Client 模塊中的類結(jié)構(gòu)如下: https://t.zsxq.com/IMzNZjY showImg(https://segmentfau...
摘要:模塊中的類結(jié)構(gòu)如下博客從到學(xué)習(xí)介紹從到學(xué)習(xí)上搭建環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門(mén)從到學(xué)習(xí)配置文件詳解從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)轉(zhuǎn)換從到學(xué)習(xí)介紹中的從到學(xué)習(xí)中的幾種詳解從到學(xué)習(xí)讀取數(shù)據(jù)寫(xiě)入到從到學(xué) Flink-Annotations 模塊中的類結(jié)構(gòu)如下: https://t.zsxq.com/f6eAu3J showImg(https://segme...
摘要:博客從到學(xué)習(xí)介紹從到學(xué)習(xí)上搭建環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門(mén)從到學(xué)習(xí)配置文件詳解從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)轉(zhuǎn)換從到學(xué)習(xí)介紹中的從到學(xué)習(xí)中的幾種詳解從到學(xué)習(xí)讀取數(shù)據(jù)寫(xiě)入到從到學(xué)習(xí)項(xiàng)目如何運(yùn)行從到學(xué) https://t.zsxq.com/UnA2jIi 博客 1、Flink 從0到1學(xué)習(xí) —— Apache Flink 介紹 2、Flink 從0到1學(xué)...
摘要:博客從到學(xué)習(xí)介紹從到學(xué)習(xí)上搭建環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門(mén)從到學(xué)習(xí)配置文件詳解從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)轉(zhuǎn)換從到學(xué)習(xí)介紹中的從到學(xué)習(xí)中的幾種詳解從到學(xué)習(xí)讀取數(shù)據(jù)寫(xiě)入到從到學(xué)習(xí)項(xiàng)目如何運(yùn)行從到學(xué) JobGraph https://t.zsxq.com/naaMf6y 博客 1、Flink 從0到1學(xué)習(xí) —— Apache Flink 介紹 2、Fl...
閱讀 1020·2021-11-22 13:52
閱讀 1450·2021-11-19 09:40
閱讀 3184·2021-11-16 11:44
閱讀 1279·2021-11-15 11:39
閱讀 3913·2021-10-08 10:04
閱讀 5374·2021-09-22 14:57
閱讀 3108·2021-09-10 10:50
閱讀 3190·2021-08-17 10:13