Docker 構建 Flink 1.10.2 集群(ON YARN)

1. 借鑒

使用Docker在本地搭建Flink分布式集群
基于docker構建flink大數據處理平臺
Flink集群搭建
Hadoop 集成
flink學習筆記-環境搭建篇
Apache Flink零基礎入門(一):基礎概念解析
Flink on YARN的第三種部署模式:Application Mode
Flink 系列(八)—— Flink Standalone 集群部署

2. 開始

我們的集群規劃如下:

flink01[172.173.16.23] flink02[172.173.16.24] flink03[172.173.16.25]
JOB MANAGER Master Slave Slave
HDFS DataNode DataNode DataNode
YARN NodeManager NodeManager NodeManager
PORT 8086 22 22

同時需要依賴hadoop集群,所以也一起列出來

hadoop01[172.173.16.10] hadoop02[172.173.16.11] hadoop03[172.173.16.12]
HDFS NameNode
DataNode
DataNode SecondaryNameNode
DataNode
YARN NodeManager ResourceManager
NodeManager
NodeManager
PORT 22,9000,50070 22 22

鏡像準備

on yarn模式是依托于hadoop的,所以flink機器上需要hadoop環境
方式 1. docker hub 下載

docker pull caiserkaiser/hadoop:2.7.2

方式 2. 構建
caiser/hadoop:2.7.2 鏡像

創建自定義網絡

Docker 網絡操作

docker network create -d bridge --subnet "172.173.16.0/24" --gateway "172.173.16.1"  datastore_net

啟動容器

docker run -it -d --network datastore_net --ip 172.173.16.23 --name flink01 caiser/hadoop:2.7.2

下載并配置flink

  1. 下載
    flink
    flink-shaded-hadoop

  2. 拷貝到容器內

    docker cp ~/Downloads/flink-1.10.2-bin-scala_2.12.tgz ccd2b9cb65a5:/opt/envs
    
  3. 解壓

    tar -zxvf flink-1.10.2-bin-scala_2.12.tgz
    
  4. 配置hadoop環境

    ①. vi /etc/profile

    ②. 配置 HADOOP_HOME

    export HADOOP_HOME=/opt/envs/hadoop-2.7.2
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    

    ③. soure /etc/profile

  5. 修改masters文件

    • a. 備份
    cp /opt/envs/flink-1.10.2/conf/masters /opt/envs/flink-1.10.2/conf/masters.bak
    
    • b. 修改為
    flink01:8081
    
  6. 修改slaves文件

    • a. 備份
    cp /opt/envs/flink-1.10.2/conf/slaves /opt/envs/flink-1.10.2/conf/slaves.bak
    
    • b. 修改為
    flink01
    flink02
    flink03
    
  7. 配置flink-shaded-hadoop

    docker cp ~/Downloads/flink-shaded-hadoop-2-uber-2.7.5-10.0.jar ccd2b9cb65a5:/opt/envs/flink-1.10.2/lib
    
  8. 修改flink-conf.yaml配置文件

    • a. 備份
    cp /opt/envs/flink-1.10.2/conf/flink-conf.yaml /opt/envs/flink-1.10.2/conf/flink-conf.yaml.bak
    
    • b. 設置如下:
    jobmanager.rpc.address: flink01
    taskmanager.memory.process.size: 1024m
    rest.bind-port: 8086
    web.submit.enable: true
    

flink-節點配置

編輯/etc/hosts,并添加以下hostname

172.173.16.23 flink01
172.173.16.24 flink02
172.173.16.25 flink03

安裝which

yum install which

保存為鏡像并移除容器

docker commit ccd2b9cb65a5 caiser/flink:1.10.2
docker stop ccd2b9cb65a5
docker rm ccd2b9cb65a5

啟動容器

docker run -it -d --network datastore_net --ip 172.173.16.23 --name flink01 caiser/flink:1.10.2 bin/bash

docker run -it -d --network datastore_net --ip 172.173.16.24 --name flink02 caiser/flink:1.10.2 bin/bash

docker run -it -d --network datastore_net --ip 172.173.16.25 --name flink03 caiser/flink:1.10.2 bin/bash

配置ssh免密登錄

  1. 進入容器

    docker exec -it flink01 /bin/bash
    
  2. 到~/.ssh目錄下生成秘鑰

    ssh-keygen -t rsa
    
  3. 拷貝秘鑰到flink01,flink02和flink03

    a.[如果沒開啟]開啟ssh服務[ps -ef | grep ssh]

    /usr/sbin/sshd -D &
    

    b. 拷貝秘鑰到flink01,flink02,flink03

    ssh-copy-id flink01
    ssh-copy-id flink02
    ssh-copy-id flink03
    
  4. flink02和flink03依次執行上述1-3步驟

啟動(ON YARN)

第一步:向hadoop集群中添加節點

① 在flink01機器的hadoop/sbin目錄下啟動datanode:

hadoop-daemon.sh start datanode

② 在flink01機器的hadoop/sbin目錄下啟動nodemanager

yarn-daemon.sh start nodemanager

③ jps查看datanode和nodemanager是否已啟動
④ 在flink02和flink03上重復以上操作
⑤ 回到namenode節點打印集群信息,或網頁登錄50070端口查看節點數量

hdfs dfsadmin -report

第二步:執行yarn-session

在flink01 flink/bin中執行

./yarn-session.sh -n 3 -s 1-jm 1024 -tm 1024

看到以下內容則說明啟動成功
ps. 也可以后臺運行./yarn-session.sh -n 3 -s 1-jm 1024 -tm 1024 -d

[root@3b5491eb3eb9 bin]# ./yarn-session.sh -n 3 -s 1-jm 1024 -tm 1024
2020-11-21 16:43:12,787 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.rpc.address, flink01
2020-11-21 16:43:12,791 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.rpc.port, 6123
2020-11-21 16:43:12,791 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.heap.size, 1024m
2020-11-21 16:43:12,792 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: taskmanager.memory.process.size, 1024m
2020-11-21 16:43:12,792 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: taskmanager.numberOfTaskSlots, 1
2020-11-21 16:43:12,792 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: parallelism.default, 1
2020-11-21 16:43:12,793 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.execution.failover-strategy, region
2020-11-21 16:43:12,793 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: rest.bind-port, 8086
2020-11-21 16:43:12,794 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: web.submit.enable, true
2020-11-21 16:43:13,592 WARN  org.apache.hadoop.util.NativeCodeLoader                       - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2020-11-21 16:43:13,783 INFO  org.apache.flink.runtime.security.modules.HadoopModule        - Hadoop user set to root (auth:SIMPLE)
2020-11-21 16:43:13,872 INFO  org.apache.flink.runtime.security.modules.JaasModule          - Jaas file will be created as /tmp/jaas-3674228881056681551.conf.
2020-11-21 16:43:13,893 WARN  org.apache.flink.yarn.cli.FlinkYarnSessionCli                 - The configuration directory ('/opt/envs/flink-1.10.2/conf') already contains a LOG4J config file.If you want to use logback, then please delete or rename the log configuration file.
2020-11-21 16:43:14,012 INFO  org.apache.hadoop.yarn.client.RMProxy                         - Connecting to ResourceManager at hadoop02/172.173.16.11:8032
2020-11-21 16:43:14,375 INFO  org.apache.flink.runtime.clusterframework.TaskExecutorProcessUtils  - The derived from fraction jvm overhead memory (102.400mb (107374184 bytes)) is less than its min value 192.000mb (201326592 bytes), min value will be used instead
2020-11-21 16:43:14,376 INFO  org.apache.flink.runtime.clusterframework.TaskExecutorProcessUtils  - The derived from fraction network memory (57.600mb (60397978 bytes)) is less than its min value 64.000mb (67108864 bytes), min value will be used instead
2020-11-21 16:43:14,609 INFO  org.apache.flink.yarn.YarnClusterDescriptor                   - Cluster specification: ClusterSpecification{masterMemoryMB=1024, taskManagerMemoryMB=1024, slotsPerTaskManager=1}
2020-11-21 16:43:17,126 INFO  org.apache.flink.yarn.YarnClusterDescriptor                   - Submitting application master application_1605959782595_0008
2020-11-21 16:43:17,179 INFO  org.apache.hadoop.yarn.client.api.impl.YarnClientImpl         - Submitted application application_1605959782595_0008
2020-11-21 16:43:17,180 INFO  org.apache.flink.yarn.YarnClusterDescriptor                   - Waiting for the cluster to be allocated
2020-11-21 16:43:17,182 INFO  org.apache.flink.yarn.YarnClusterDescriptor                   - Deploying cluster, current state ACCEPTED
2020-11-21 16:43:24,733 INFO  org.apache.flink.yarn.YarnClusterDescriptor                   - YARN application has been deployed successfully.
2020-11-21 16:43:24,739 INFO  org.apache.flink.yarn.YarnClusterDescriptor                   - Found Web Interface 8f4fdb3626d6:8086 of application 'application_1605959782595_0008'.
JobManager Web Interface: http://8f4fdb3626d6:8086

注:在這種模式下,WEB UI的host是會變的,所以開發還是使用單機或者單機集群模式。

啟動(STANDALONE CLUSTER)

第一步:執行start-cluster

在任意一臺機器上的 flink/bin中執行

./start-cluster.sh

接著訪問8081(默認端口)或者8086(本文配置端口)就可以訪問了
注:需要做端口映射

動態添加端口

Mac下 Docker 動態添加端口

"ExposedPorts":{"8086/tcp":{}}
"PortBindings":{"8086/tcp":[{"HostIp":"","HostPort":"8086"}]}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容