您好,登錄后才能下訂單哦!
小編給大家分享一下Flink on yarn運行原理的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
Flink運行時由兩種類型的進程組成:
1),JobManager也叫master協調分布式執(zhí)行。他們調度任務,協調checkpoints,協調故障恢復等。至少有一個JobManager。高可用情況下可以啟動多個JobManager,其中一個選舉為leader,其余為standby。
2),TaskManager也叫worker,負責執(zhí)行具體的tasks,緩存,交換數據流。至少有一個TaskManager。
JobManager和TaskManager可以用很多種方式啟動:可以直接作為Standalone集群啟動,也可以被yarn或者Mesos管理。TaskManager連接到JobManager,宣布自己可用,并接受分配的工作。
客戶端不是runtime 和程序執(zhí)行的一部分,而是用于準備并發(fā)送數據流到JobManager。
之后,客戶端可以斷開連接或保持連接以接收進度報告??蛻舳俗鳛橛|發(fā)執(zhí)行的Java / Scala程序的一部分運行,或在命令行進程中運行./bin/flink運行。
Flink on yarn
根據前面的講解的實際上,就很容易可以理解flink on yarn的部署了。
首先,我們要啟動一套jobmanager和taskmanager集群
然后,我們可以向該集群提交我們的應用程序,由上個步驟啟動的jobmanager和TaskManager運行我們的應用。
有上面兩個步驟,我們可以先給出flink on yarn的交互圖,如下:
當啟動新的Flink YARN會話時,客戶端首先檢查請求的資源(容器和內存)是否可用。之后,它將包含flink的jar和配置上傳到HDFS(步驟1)。
客戶端的下一步是請求(步驟2)YARN容器以啟動ApplicationMaster(步驟3)。由于客戶端將配置和jar文件注冊為容器的資源,因此在該特定機器上運行的YARN的NodeManager將負責準備容器(例如,下載文件)。一旦完成,ApplicationMaster(AM)就會啟動。
該JobManager和AM在同一容器中運行。成功啟動后,AM就很容易知道JobManager的地址(它自己的主機)。它為TaskManagers生成一個新的Flink配置文件(以便它們可以連接到JobManager)。該文件也被上傳到HDFS。此外,AM容器還提供Flink的Web界面。YARN代碼分配的所有端口都是臨時端口。這允許用戶并行執(zhí)行多個Flink YARN會話。
之后,AM開始為Flink的TaskManagers分配容器,它將從HDFS下載jar文件和修改后的配置。完成這些步驟后,Flink即會設置并準備接受作業(yè)。
測試flink on yarn
首先,啟動一個yarn session,并且給其分配4個taskmanager,每個taskmanager 4GB內存。
# get the hadoop2 package from the Flink download page at# http://flink.apache.org/downloads.htmlcurl -O <flink_hadoop2_download_url>tar xvzf flink-1.5.0-bin-hadoop2.tgzcd flink-1.5.0/ ./bin/yarn-session.sh -n 4 -jm 1024 -tm 4096
-jm代表jobmanager的內存大小,-tm代表的是TaskManager的內存大小,-n代表的是n個taskmanager。那么可能會有人問,還有個slot的概念,如何通過參數設置呢,其實只需要-s參數,就可以設置每個TaskManager所包含的slot數。至于slot數的設置技巧我們后面會詳細介紹,推薦做法是每個taskmanager包含的slot數呢是處理器數。
接著就是運行一個flink job到y(tǒng)arn上
# get the hadoop2 package from the Flink download page at# http://flink.apache.org/downloads.htmlcurl -O <flink_hadoop2_download_url>tar xvzf flink-1.5.0-bin-hadoop2.tgzcd flink-1.5.0/ ./bin/flink run -m yarn-cluster -yn 4 -yjm 1024 -ytm 4096 ./examples/batch/WordCount.jar
可能有人會問,咋沒有指定master呢,其實,他會自動找到flink集群并提交job。
前提是,要提前設置hadoop的yarn相關配置,
YARN_CONF_DIR, HADOOP_CONF_DIR or HADOOP_CONF_PATH這幾個變量任意一個配置了,都可以讓flink讀取到y(tǒng)arn的配置文件。
看完了這篇文章,相信你對“Flink on yarn運行原理的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。