日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何在Kubernetes上运行Apache Flink

發布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在Kubernetes上运行Apache Flink 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文最初發布于Zalando網站Technology Blog板塊,經原作者授權由InfoQ中文站翻譯并分享

最近,我在用Apache Flink構建小型的流處理應用。在Zalando,我們默認使用Kubernetes進行部署,所以計劃將Flink和開發的一些作業都部署到Kubernetes集群上。在這個過程中,我學到了很多關于Flink和Kubernetes的知識,在這篇文章里會和大家分享一下。

一些挑戰

首先是合規性。在Zalando,正產環境運行的代碼必須經過至少2人的審核,并且所有部署的內容都可以追溯到git commit。通常部署Flink任務會將包含有任務和依賴的JAR包上傳到運行中的Flink集群,但這不符合我們內部的合規流程。

其二是容器編排的成熟度。Flink一個重要的賣點是支持容錯的流處理。但如下一節所述,在容器編排系統中沒有設計可靠性相關的功能,這使得在Kubernetes上運行Flink集群并不是你想的那么簡單。

其三是碎片化的文檔。不論是Flink還是Kubernetes都在快速的發展中,這使一些文檔很容易就過時了(就像我這篇blog,或者是論壇/新聞組的帖子)。可惜的是,對于如何在Kubernetes上可靠地運行Flink,現在官方文檔能提供的信息還不夠完善。

Flink的架構和部署模式

為了理解如何在Kubernetes集群上部署Flink,需要先對其架構和部署模式有個大致的了解。如果你已經很熟悉Flink了,可以跳過本節。

Flink由作業管理器(Job Manager)和任務管理器(Task Manager)兩個部分組成。作業管理器協調流處理作業,管理作業的提交及其生命周期,并將工作分配給任務管理器。任務管理器執行實際的流處理邏輯。同一時間只可能有一個活躍的作業管理器,但任務管理器可以有n個。

為了實現彈性的、有狀態的、流式的處理,Flink使用了檢查點(Checkpointing)來周期性地記錄各種流處理操作的狀態,并進行持久化存儲。從故障中恢復時,流處理作業可以從最新的檢查點繼續執行。檢查點的操作由作業管理器進行協調,它知道最新完成的檢查點的位置,這在后面會很重要。

Flink集群可以以兩種獨立的模式運行:第一種叫Standalone或者叫Session Cluster,是一個可以運行多個流處理作業的單一集群。任務管理器在作業之間共享。第二種叫作業集群Job Cluster,專門用于運行單個流處理作業。

Flink集群可以在HA模式下運行。在這個模式下,多個作業管理器的實例同時運行,其中的一個會被選舉為leader。如果leader失效了,會從其他運行的作業管理器中選出一個新的leader。Flink使用Zookeeper來進行leader選舉。

部署Kubernetes

在上文提到的兩種模式中,我們選擇了Job Cluster模式來運行Flink。有兩個原因:第一是因為Job Cluster的Docker鏡像需要包含有Flink作業的JAR包。這能很好地解決合規性問題,因為我們可以重復使用與常規JVM應用相同的工作流程。第二個原因是這種部署模型能為每個Flink作業獨立地擴展任務管理器。

我們將作業管理器作為一個部署(Deployment)并設置了1副本,任務管理器設置了n副本。任務管理器通過Kubernetes服務發現作業管理器。這個設置和官方文檔不太相同,官方文檔是建議將Job Cluster的作業管理器當做Kubernetes的作業來運行。但我們認為這種場景下(一個永不停止的流任務)使用部署的方式會更可靠,因為可以確保有一個pod一直在運行,而作業是可以完成的,使得集群可以沒有任何作業管理器。這就是為什么我們的設置比較類似于文檔中關于session cluster的描述。

作業管理器pod的失效由部署控制器(Deployment Controller)來處理,它會負責生成新的作業管理器。鑒于這是相對較快的操作,我們無需在熱備份中維護多個作業管理器,不然會增加部署的復雜性。任務管理器使用Kubernetes服務來定位作業管理器。

如上文所述,作業管理器會在內存中保留一些和檢查點相關的狀態。在作業管理器崩潰時,這些狀態會丟失,所以我們會在Zookeeper中持久化這些狀態。這意味著即使沒有選舉leader的需求以及Flink HA模式的發現功能(就像Kubernetes本身處理的那樣),仍然需要用到Zookeeper來存儲檢查點的狀態。

我們在Kubernetes集群上已經部署了etcd集群和etcd-operator,所以不想再引入另一個分布式調度系統了。我們試了一下zetcd,這是一個基于etcdv3的Zookeeper API。用著挺順利,所以我們決定堅持下去。

在這種設置下我們會遇到另一個問題,作業管理器有時會陷入不健康的狀態,而只有通過重啟作業管理器才能解決。這個我們會通過livenessProbe來解決,它會檢查作業管理器是否健康、作業是否仍然在運行。

還需要注意的是,這個設置僅適用于Flink大于1.6.1的版本,因為存在無法從job cluster的檢查點恢復的bug。

小結

上面的設置在生產環境中已經運行了好幾個月,并能很好地服務于我們的用例。這也說明,即使在實現的過程中會遇到一些小障礙,在Kubernetes上平穩地運行Flink還是可行的。

原文鏈接:https://jobs.zalando.com/tech/blog/running-apache-flink-on-kubernetes/index.html

總結

以上是生活随笔為你收集整理的如何在Kubernetes上运行Apache Flink的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色va| 亚洲一区二区在线视频 | 97超碰在线资源 | 岳奶大又白下面又肥又黑水多 | 尤物视频在线观看免费 | 国产色一区二区 | 欧美mv日韩mv国产网站app | av网站免费在线 | 日日操夜夜骑 | 天堂国产精品 | 奶波霸巨乳一二三区乳 | 亚洲日本成人在线观看 | 观看av在线 | 午夜tv | 亚洲国产日韩欧美在线观看 | 亚洲啪啪av | 九色自拍视频 | 天天5g天天爽免费观看 | 91成人看 | 最近高清中文在线字幕在线观看 | 久热精品免费视频 | 日本成人在线看 | 韩国三级视频 | 韩国美女视频在线观看18 | 海角社区在线视频播放观看 | 亚洲免费毛片 | 人人草人人看 | 日韩欧美国产一区二区三区 | 中文字幕电影av | 亚洲精品综合网 | 色偷偷资源网 | 91最新在线 | 丁香综合 | 精品一区二区三区无码视频 | 婷婷午夜精品久久久久久性色av | 国产成人在线网站 | 在线看片一区二区 | 91中文字幕视频 | 性福网站| 特级淫片aaaaaaa级 | 国产一级二级av | 福利视频黄色 | 日本天堂网在线观看 | 精品成人av一区二区三区 | 操操日日 | 久草视频在线免费播放 | 日韩免费一级片 | 午夜福利三级理论电影 | 黄色高清视频在线观看 | 天天干夜夜欢 | 奇米影视9999 | 影音先锋国产精品 | 国产区亚洲区 | 欧美日韩在线视频免费观看 | 亚洲无线视频 | 泰坦尼克号3小时49分的观看方法 | 免费观看一级黄色片 | 成人在线免费看视频 | 老司机伊人| 国产精品高潮视频 | 蜜桃中文字幕 | 青娱乐毛片 | 三级黄色在线 | 无码国产精品一区二区色情男同 | 日韩社区 | 极品女神无套呻吟啪啪 | 西方裸体在线观看 | 波多野结衣伦理 | 狠狠操免费视频 | 久久精品男人的天堂 | 日韩在线视频网 | 久久大胆视频 | 色av网 | 精品国产av无码 | 国产字幕av | 高清一区二区在线 | 九九少妇 | 久久国产亚洲 | 中文字幕123区 | 91久久久久久久久久久 | 亚洲精品爱爱 | 有码一区二区 | 亚洲av综合色区无码二区爱av | 在线步兵区 | 成年人在线视频观看 | 日本一本视频 | 狠狠干成人| 女人av| 久久成人a| 性激情视频 | 色哟哟入口国产精品 | 亚洲国产精品久久久久爰性色 | 免费av日韩 | 96国产精品 | 视频区小说区 | a人片 | 亚洲国产二区 | 岛国成人在线 | 欧美人妻精品一区二区免费看 |