??????????Flink 1.9.0 剛剛發(fā)布,據(jù)說更改了約150萬行代碼,作為吃瓜群眾,單集群模式并沒有遇到坑點(diǎn),而on yarn模式簡直了,坑了快一周時(shí)間,中間不確定因素很多,比如到底是hadoop的配置不對,還是flink的配置不對,環(huán)境變量到底是生效了沒有,所以記錄下flink on yarn的配置流程和配置參數(shù),流程基于前置hadoop教程而來,需要有hadoop yarn環(huán)境。
前置準(zhǔn)備
虛擬機(jī)3臺,本教程虛擬機(jī)IP:
192.168.43.143
192.168.43.144
192.168.43.145
前置教程
環(huán)境配置
Java環(huán)境:jdk8
scala版本:適配kafka集群2.11
kafka集群(可選):kafka集群安裝教程(穩(wěn)定版)
hadoop集群環(huán)境:Hadoop2.8.5集群搭建教程(適配hbase2.2.0最新版)
flink地址:https://flink.apache.org/downloads.html#apache-flink-190
部署流程
-
上傳:上傳flink-1.9.0-bin-scala_2.11.tgz到三臺虛擬機(jī)目錄/usr/local
image 解壓:三臺虛擬機(jī)解壓flink-1.9.0-bin-scala_2.11.tgz
-
適配包放置:將flink-hadoop包放入flink的lib包下(三臺都要)
image
Hadoop配置
集成版,上節(jié)不一致的配置以此為準(zhǔn)
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.8.5/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.8.5/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.8.5/dfs/data</value>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0"?>
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
Flink配置文件修改
三臺虛機(jī)都需做如下配置
flink-conf.yaml
vi /usr/local/flink-1.9.0/conf/flink-conf.yaml
只需要更改下面這一行(指向master節(jié)點(diǎn))
jobmanager.rpc.address: 192.168.43.143
slaves(指向slaves節(jié)點(diǎn))
vi /usr/local/flink-1.9.0/conf/slaves
192.168.43.144
master文件不用配置
Flink yarn session啟動(dòng)
****前提需啟動(dòng)dfs,yarn****
/usr/local/flink-1.9.0/bin/yarn-session.sh -n 1 -jm 1024m -tm 1024m
提交JOB測試
/usr/local/flink-1.9.0/bin/flink run -m yarn-cluster -p 4 -yjm 1024m -ytm 4096m ./examples/batch/WordCount.jar
顯示結(jié)果,完成搭建
附錄:
虛擬內(nèi)存不足問題
解決方式一 :yarn-site.xml 增加下面配置
<property>
解決方式二 :創(chuàng)建虛擬內(nèi)存
1. 查看swap分區(qū)
free -m
2.新建8G虛擬內(nèi)存
fallcote -l 8G /swapfile
3.設(shè)置swap文件權(quán)限
chmod 600 /swapfile
4.通知系統(tǒng)掛載
mkswap /swapfile
5.通知啟用swap
swapon /swapfile
Flink集群啟動(dòng)找不到tmp下log4j.jar
解答:hadoop環(huán)境變量問題
一 查環(huán)境變量
步驟 1
vi /etc/profile
步驟 2 加入如下配置
export HADOOP_HOME=/usr/local/hadoop-2.8.5
****步驟 3** 生效配置**
source /etc/profile
二 檢查hadoop-env.sh
export JAVA_HOME=...
三 檢查yarn-env.sh
export JAVA_HOME=...