2019独角兽企业重金招聘Python工程师标准>>>
flink1.3.3 on hdp 2.6(hadoop 2.7.3)部署指南
1,从官方下载flink-1.3.3-bin-hadoop27-scala_2.11.tar,解压到/usr/local/
tar -zxvf flink-1.3.3-bin-hadoop27-scala_2.11.tar
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/*"
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=hdfs
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.RequestHedgingRMFailoverProxyProvider
进入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界面会有指示如何重启,一键搞定,很爽
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应用程序上
6,启动yarn session
nohup ./yarn-session.sh -n 3 -s 3 -jm 2048 -tm 4096 -nm pinpoint-flink-job &
7,在flink 应用界面上上传job包
进去ambari dashboard界面,通过yarn 仪表盘进入active resource manager ui,显示job列表,running,进入application master,就可以到flink 界面了
注意:如果不能访问主机名地址,需要在url里面把主机名替换为ip
附件:
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的时候,只能使用上面申请的资源。