Flink安装(Standalone、Yarn模式)
Standalone模式:Flink自带的分布式集群,它不依赖其他的资源调度框架、不依赖yarn等,由 Flink自己管理资源。
1) 从官网下载Flink包:https://flink.apache.org/downloads.html
2) 下载jdk地址(测试过用jdk8,Flink启动会报错):
wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
3) 将下载的flink-1.14.4-bin-scala_2.12.tgz和openjdk-11+28_linux-x64_bin.tar.gz拷贝到安装目录,使用命令解压:
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz
tar -zxvf flink-1.14.4-bin-scala_2.12.tgz
mv openjdk-11+28_linux-x64_bin jdk-11
4) 配置Java环境变量,vi /etc/profile 进行编辑,添加下面代码:
export JAVA_HOME=/home/pengbiao/jdk-11
export JRE_HOME=/home/pengbiao/jdk-11/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
按Esc键,输入:wq按Enter保存并退出
5) 进入Flink目录,cd flink-1.14.4,然后输入启动命令:./bin/start-cluster.sh
其他操作:
1. 修改Flink配置,vi /conf/flink-conf.yaml
# jobManager的IP地址
jobmanager.rpc.address: localhost
# JobManager的端口号
jobmanager.rpc.port: 6123
# JobManager JVM heap堆内存大小
jobmanager.memory.process.size: 1600m
# TaskManager JVM heap堆内存大小
taskmanager.memory.process.size: 1728m
# 每个TaskManager提供的任务slots数量大小,最好设置为CPU的核心数
taskmanager.numberOfTaskSlots: 4
# 程序默认并行度
parallelism.default: 1
2. 查看日志:cat /log/flink-pengbiao-standalonesession-3-PC-PENGBIAO.out
3. 查看Flink是否启动:jps
Yarn模式:以yarn模式部署Flink任务时,要求Flink是有Hadoop支持的版本,Hadoop环境需要保证版本在2.2以上,并且集群中安装有HDFS服务。
Flink提供了两种在yarn上运行的模式,分别为Session-Cluster和Per-Job-Cluster模式。
1) Session-Cluster模式
Session-Cluster模式需要先启动集群,然后再提交作业,接着会向yarn申请一块空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到yarn中的其中一个作业执行完成后,释放了资源,下个作业才会正常提交。所有作业共享Dispatcher和ResourceManager;共享资源;适合规模小执行时间短的作业。
在yarn中初始化一个Flink集群,开辟指定的资源,以后提交任务都向这里提交,这个Flink集群会常驻在yarn集群中,除非手工停止。
启动步骤:
1)启动hadoop集群
第1:下载re-bundled Hadoop的jar包
下载地址:https://flink.apache.org/downloads.html
将flink-shaded-hadoop-2-uber-2.8.3-10.0.jar拷贝到Flink的lib目录
然后授权:chmod 777 flink-shaded-hadoop-2-uber-2.8.3-10.0.jar
第2:下载hadoop组件安装包
(一)下载地址:https://dlcdn.apache.org/hadoop/common/
或者使用命令下载:
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/hadoop-3.3.2.tar.gz
(二) 解压:tar -zxvf hadoop-3.3.2.tar.gz
(三) 检查hadoop支持:bin/hadoop checknative
如果openssl显示false,安装openssl:yum -y install openssl-devel
(四) 创建hadoop存放临时文件的文件夹:mkdir tmp
(五) 修改hadoop-env.sh中的JAVA_HOME
cd etc/hadoop/
vi hadoop-env.sh
(六) 修改/etc/hadoop/core-site.xml
<configuration>
<!--指定Hadoop所使用的文件系统schema,HDFS的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定hadoop临时目录,自行创建 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/pengbiao/hadoop-3.3.2/tmp</value>
</property>
</configuration>
(七) 修改/etc/hadoop/hdfs-site.xml
<configuration>
<!-- dfs的SecondaryNameNode在哪台主机上 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>localhost:50090</value>
</property>
<!-- 指定HDFS副本的数量,不修改默认为3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/pengbiao/hadoop-3.3.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/pengbiao/hadoop-3.3.2/hdfs/data</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:/home/pengbiao/hadoop-3.3.2/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:/home/pengbiao/hadoop-3.3.2/hdfs/snn</value>
</property>
</configuration>
(八) 修改/etc/hadoop/yarn-site.xml
<configuration>
<!-- NodeManager上运行的附属服务。需要配置成mapreduce_shuffle,才可以运行MapReduce程序默认值 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定yarn的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
</configuration>
(九) 修改/etc/hadoop/mapred-site.xml
<configuration>
<!-- 指定MapReduce运行是框架,这里指定在yarn上,默认是local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(十) 格式化节点
cd /hadoop-3.3.2/bin
./hdfs namenode –format
(十一) Hadoop集群全部启动
cd /hadoop-3.3.2/sbin
./start-dfs.sh
./start-yarn.sh
注:
1、启动hadoop报错:localhost: ssh: connect to host localhost port 22: Connection refused
则执行下面命令:
- 确认OpenSSH server是否安装: sudo apt list --installed | grep openssh-server
- 如未安装,则执行命令:sudo apt install openssh-server
- 核查ssh service状态:sudo service ssh status
- 启动ssh service服务:sudo service ssh start
2、如果报下面错误信息,需要下载重装ssh:
删除SSH:sudo apt remove openssh-server
更新:sudo apt-get update
重装SSH:sudo apt install openssh-server
重启SSH:sudo service ssh start
如果报下面错误信息:
修改系统根目录的/etc/ssh/sshd_config配置:
PasswordAuthentication yes
在文件最后添加下面配置:
#StrictHostKeyChecking no
#UserKnownHostsFile /dev/null
cd /etc 更改文件所有权:
chown -R pengbiao ~/.ssh
chmod 700 ~/.ssh
3、启动hadoop报下面错误信息:
cd /home/pengbiao 执行命令来生成密钥:
touch authorized_keys
ssh-keygen -t rsa --提示录入时直接回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.sshl
再次启动hadoop:
./hadoop-3.3.2/sbin/start-dfs.sh
./hadoop-3.3.2/sbin/start-yarn.sh
第3:修改hadoop环境变量,vi /etc/profile 进行编辑,添加下面代码:
export HADOOP_HOME=/home/pengbiao/hadoop-3.3.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_CLASSPATH=`${HADOOP_HOME}/bin/hadoop classpath`
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
第4:修改/etc/hosts和/etc hostname:
刷新配置:source /etc/profile
2)启动yarn-session:
./bin/yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 –nm test -d
参数解释:
-n:TaskManager的数量
-s:每个TaskManager的slot数量,默认一个slot一个core,默认每个TaskManager的slot的个数为1,有时可以多一些TaskManager做冗余。
-jm:JobManager的内存(单位MB)
-tm:每个TaskManager的内存(单位MB)
-nm:YARN的appName(现在yarn的ui上的名字)
-d:任务后台运行
-q:显示yarn中可用的资源 (内存, cpu核数)
-z:针对HA模式在zookeeper上创建NameSpace
-id:YARN集群上的任务id,附着到一个后台运行的yarn session中
Flink控制台:http://localhost:62299/
3)取消yarn-session
hadoop控制台:http://localhost:8088/
杀掉applocation命令:
yarn application --kill application_1650940677633_0002
2) Per-Job-Cluster模式
一个任务会对应一个Job,每提交一个作业会根据自身的情况,都会单独向yarn申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享Dispatcher和ResourceManager,按需接受资源申请;适合规模大长时间运行的作业。
启动步骤:
1)启动hadoop集群
2)不启动yarn-session,直接执行job
./bin/flink run -m yarn-cluster -c com.flink.wc.KafkaStreamWordCount /mnt/f/workSpaces7.0/flinkDemo/target/flinkDemo-1.0-SNAPSHOT.jar --host localhost --port 9092
Flink控制台:http://localhost:52548/