已有的环境状况:hadoop集群已经搭建完成
一、Flink on yarn搭建:
1.下载flink安装包,由于flink版本的选择需要考虑Scala、Java以及Hadoop的版本,所以可以直接询问Al,我的版本如下:

2.利用tar语句对压缩包进行解压
tar -zxvf 压缩包名 -C /usr/flink #压缩后文件的存放地址
tar -zxvf flink-1.14.0-bin-scala_2.11.tgz -C /usr/flink/
3.环境变量进行配置(先配置环境变量,防止后面忘记了)
vi /etc/profile
#FLINK-------------------------------------------------------------------
export FLINK_HOME=/usr/flink/flink-1.14.0
export PATH=$PATH:$FLINK_HOME/bin
source /etc/profile #激活环境变量
4.配置文件修改
cd $FLINK_HOME/conf

a)修改masters和workers(也可能是slaves)文件
masters文件中只需要添加主节点以及WebUI 端口,格式:主节点的主机名或Ip:端口号 Yarn模式下可以不配置,因为Yarn模式下JobManager是随机分配的,但Standalone模式下需要配置进行指定
workers文件中加入集群中的所有节点,同样是可以修改也可以不修改
但如果修改workers文件,再启动Yarn时只需要在一个节点进行启动
如果不修改需要分别在每个节点输入命令进行启动
![]()

b)根据需要修改flink-conf.yaml文件,主要是修改:
JobManager进程的总内存
TaskManager进程的总内存
每个 TaskManager 的任务槽数量(决定并行度上限)
作业默认并行度(根据集群总的数量进行修改,可以有效提高任务处理速度)

二、启动flink on yran模式
1.切换路径
cd $FLINK_HOME/bin
运行启停脚本可以实现Yarn模式的启停
yarn-session.sh #使用默认参数
#或
yarn-session.sh -n 2 -s 2 -jm 1024 -tm 2048 #使用传入的参数

报错内容:
Caused by:
java.lang.ClassNotFoundException:org.apache.hadoop.yarn.exceptions.YarnException

上网查找后给出的原因是Hadoop环境变量配置时HADOOP_CLASSPATH参数没有配置。
由于我习惯环境变量配置时只添加HADOOP_HOME,所以导致了这次的错误
原因:Hadoop环境变量配置缺少HADOOP_CLASSPATH参数


WebIU登录:

到目前为止flink on yarn是可以说是启动成功了,但是否能正常运行还需要进行测试
2.模式运行测试,利用自带的Wordcount.jar包

运行该jar包
cd $FLINK_HOME
bin/flink run example/streaming/WordCount.jar
--input file:///home/data/test.txt
--ouptu file:///home/data/out
这里需要注意由于Yarn模式下JobManager是随机分配的,所以集群中的每个节点在相应的input路径下都需要有对应文件。如果觉得麻烦可以将文件上传到hdfs文件系统中,运行命令 :
bin/flink run example/streaming/WordCount.jar
--input hdfs:///home/data/test.txt
--ouptu hdfs:///home/data/out
3.运行报错+解决方法
文件在本地系统时,只要文件路径没错以及文件存在,基本不会有什么错误了
当文件上传到hdfs文件系统时报错,显示找不到hdfs文件系统

主要有三种可能的原因:
- flink和Hadoop的本版不兼容è通过上网查看本版是否兼容
- HADOOP_CLASSPATH配置是否完整,这个问题有点麻烦,可能是环境配置文件没有生效,也可能是Hadoop环境本身有问题,可以通过$(Hadoop classpath)查看路径是否完整
- Hadoop配置文件未被Flink识别,这也是我碰到的问题,我直接将hadoop的核心文件:core-site.xml,hdfs-site.xml文件复制到flink安装目录的conf文件夹下
再重新运行就能成功。

6834

被折叠的 条评论
为什么被折叠?



