flink1.3.3 on hdp 2.6(hadoop 2.7.3)部署指南java
1,從官方下載flink-1.3.3-bin-hadoop27-scala_2.11.tar,解壓到/usr/local/
tar -zxvf flink-1.3.3-bin-hadoop27-scala_2.11.tarapache
2,配置hadoop環境變量,
vi ~/.bash_profile
添加:
export HADOOP_CONF_DIR="/etc/hadoop/conf"
export HADOOP_CLASSPATH="/usr/hdp/current/hadoop-client/*:/usr/hdp/current/hadoop-client/lib/*:/usr/hdp/current/hadoop-hdfs-client/*:/usr/hdp/current/hadoop-hdfs-client/lib/*:/usr/hdp/current/hadoop-yarn-client/*:/usr/hdp/current/hadoop-yarn-client/lib/*"bash
source ~/.bash_profile
echo $HADOOP_CONFIG_DIR
echo $HADOOP_CLASSPATH網絡
3,配置yarn啓動前環境變量
vi /usr/local/flink-1.3.3/bin/yarn-session.sh
添加行:
#以hdfs用戶訪問hdfs,否則沒有權限
export HADOOP_USER_NAME=hdfssession
4,hdp2.6平臺須要去掉uber shaded hadoop的包,同時添加mapreduce的包到yarn應用classpath
rm -f /usr/local/flink-1.3.3/lib/flink-shaded-hadoop2-uber-1.3.3.jar
否則會出現下面錯誤:
Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider.getProxyInternal()Ljava/lang/Object; from class org.apache.hadoop.yarn.client.RequestHedgingRMFailoverProxyProviderapp
進入ambari界面,service->yarn->config->advanced->Advanced yarn-site->yarn.application.classpath
添加,/usr/hdp/current/hadoop-mapreduce-client/*,/usr/hdp/current/hadoop-mapreduce-client/lib/*
修改後,須要重啓yarn相關組件,ambari界面會有指示如何重啓,一鍵搞定,很爽jvm
5,修改flink默認日誌
vi /usr/local/flink-1.3.3/conf/log4j.properties
log4j.appender.file.append=true
log4j.appender.file.MaxFileSize=100M
log4j.appender.file.MaxBackupIndex=10
flink的日誌會應用到每一個flink應用程序上ide
6,啓動yarn session
nohup ./yarn-session.sh -n 3 -s 3 -jm 2048 -tm 4096 -nm pinpoint-flink-job &oop
7,在flink 應用界面上上傳job包
進去ambari dashboard界面,經過yarn 儀表盤進入active resource manager ui,顯示job列表,running,進入application master,就能夠到flink 界面了
注意:若是不能訪問主機名地址,須要在url裏面把主機名替換爲ipui
附件:
A: 經常使用yarn命令:
yarn application -list
列出全部應用
yarn application -kill application_1529463924167_0035
殺死Application-Id爲application_1529463924167_0035的應用
B:yarn應用的日誌聚合
Hdp平臺默認會把中止的yarn應用日誌放到Hdfs上面,對於沒有中止的日誌,能夠在yarn 界面上面進入應用的日誌,進入方法:
ambari UI -> dashboard -> yarn links -> more -> 選擇非slave機器 -> resource manager ui
在yarn集羣資源管理界面上,選擇cluster -> applications -> running
在應用列表裏面,點擊運行的任務ID連接,進入這個任務的詳細信息界面,能夠殺死應用,能夠進入application master界面,能夠查看每一個機器上的containner log
C: 關於yarn和flink關係
flink是yarn上面的一個Job任務,由yarn啓動application master也就是flink job manager,
啓動的時候,flink向yarn申請資源,包括內存資源(jobmanager和taskmanager能夠分別設置)和vcpu資源(slot),以及運行幾個containner(容器的概念,yarn一個容器就是一個jvm虛擬機進程)
nohup ./yarn-session.sh -n 3 -s 3 -jm 2048 -tm 4096 -nm pinpoint-flink-job &
-n 就是控制容器的個數
-s 就是每一個容器裏面使用的虛擬cpu的個數,就是多核cpu下的核數
-jm 就是配置Job manager容器的內存大小
-tm是task manager容器的內存大小
yarn的容器並非真正的資源隔離,只能是內存隔離(用jvm的機制),cpu,磁盤,網絡都不是隔離開的。
當你在flink ui上面提交一個job的時候,只能使用上面申請的資源。