flink安装部署

flink安装

在这里插入图片描述

部署方式:单机模式,集群模式: standalone, yarn, k8s

下载,解压

#去官网下载
https://flink.apache.org/downloads.html#apache-flink-1132

#本次实验下载的是 Flink-1.13.2-scala-2.12
wget https://downloads.apache.org/flink/flink-1.13.2/flink-1.13.2-bin-scala_2.12.tgz

介绍flink/下重要文件(安装过程可以忽略,再此作为了解)

# bin/ ================================================
bash-java-utils.jar
config.sh
find-flink-home.sh
flink		#flink shell
flink-console.sh
flink-daemon.sh
historyserver.sh
jobmanager.sh		#作业管理者,最作业进行启动,分发,调度
taskmanager.sh		#任务管理者(干活的)
kubernetes-jobmanager.sh
kubernetes-session.sh
kubernetes-taskmanager.sh
mesos-appmaster-job.sh
mesos-appmaster.sh
mesos-jobmanager.sh
mesos-taskmanager.sh
pyflink-shell.sh		#
sql-client.sh
standalone-job.sh
start-cluster.sh	#启动flink集群
stop-cluster.sh		#停止flink集群
start-zookeeper-quorum.sh
stop-zookeeper-quorum.sh
yarn-session.sh		#
zookeeper.sh



# ./conf [配置目录] ============================================
# ./conf/flink-conf.yaml -------------------------------------
jobmanager.memory.process.size: 1600m	#这个是jobmanager的堆内存设定
taskmanager.memory.process.size: 1728m	#这个是taskmanager的堆内存设定
	#在生产过程中,taskmanager的堆内存会配置的大一些,因为他是干活的。然而jobmanager只是用来调度的,这个可以稍微略小些。生产中 taskmanager比jobmanager大很多。

taskmanager.numberOfTaskSlots: 1	#taskmanager对资源进行划分为多个“槽位”,有多少个slot就可以同时奔跑多少个线程。 这里配置1,表示只有一个槽位,那么一个taskmanager就只能跑一个线程。
parallelism.default: 1		#默认并行度。(默认一个线程执行)
	#问题: taskmanager.numberOfTaskSlots和parallelism.default  有什么区别?  这两个不是一回事。前者表示 当前这台taskmanage 最大可以执行的线程数量;后者表示真正执行的时候多个taskmanager并行个数总和默认值。不好理解,可以理解为:前者表示最大的能力,后者表示当前用多少能力。 前者指的是一台taskmanage最大能力, 后者指的是集群中所有taskmanage 默认的并行度总和的默认值, 默认值只有在不设置的时候才使用,一般情况会在代码中直接设置



# ./conf/master ----------------------------------------------
localhost:8081	#里面默认写着localhost:8081, 这个也是web端口。
# ./conf/workers 或者 ./conf/slaves[之前版本] ------------------
localhost		#默认值是localhost
	#如上的masters和workers 表示单机模式

至此:单机模式配置完毕(其实都不用配置)

配置集群模式(standalone)

#step1:vim ./conf/flink-conf.yaml
	修改 jobmanager.rpc.address: node1

#step2:修改master
	vim ./conf/masters
	修改成:
	node1:8081

#step3:修改worker(slaves) 
	vim ./conf/workers
	修改成:
	node2
	node3
	
#step4 : 主机上配置好之后,分发给从机。

#最后到master 的 ./bin/下  start-cluster.sh	美鸡鸡
#至此,standalone模式配置好啦。

配置环境变量

export FLINK_HOME=/opt/module/flink-1.6.1
export PATH=$PATH:$FLINK_HOME/bin

yarn集群模式配置

Flink 提供了两种在 yarn 上运行的模式,分别为 Session-Cluster 和 Per-Job-Cluster 模式。

flink 连接hadoop

如果想要flink 连接hadoop ,需要去官网下载flink-share-hadoop-xxxxxxxx.jar包放在 flink/lib/下面的。
然后才可以搭建 flink的yarn模式。
从 maven仓库(https://mvnrepository.com/search?q=flink-shaded-hadoop-3)中找到对应的jar版本【下图】。
由于我的 hadoop是3.1.1 所以我下载的是:flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar

在这里插入图片描述

Session-cluster模式

Session-cluster 和 standalone模式有些类似。

使用===========================

#step1: 启动hadoop

#step2:启动yarn-session
./yarn-session.sh -n 10 -s 2 -jm 1024 -tm 4096 -nm test -d
    -n(--container):TaskManager 的数量。(现在的版本都不需要指定了,如果指定就相当于限定死了,和standalone一样。 现在不指		  定 就是动态分配了) 
    -s(--slots): 每个 TaskManager 的 slot 数量,默认一个 slot 一个 core,默认每个 taskmanager 的 slot 的个数为 1,
    	有时可以多一些 taskmanager,做冗余。 
    -jm:JobManager 的内存(单位 MB)。 
    -tm:每个 taskmanager 的内存(单位 MB)。 
    -nm:yarn 的 appName(现在 yarn 的 ui 上的名字)。 
    -d:后台执行。
    
#step3 : 执行。 直接用命令行提交即可。(这时候不要运行start-cluster.sh 。 如果运行就到 standalone模式了)
flink/bin/flink run \
-c com.lining.wc.StreamWordCount \
-p 2 \
/root/scala_maven-1.0-SNAPSHOT-jar-with-dependencies.jar --host 192.168.0.102 --port 7777

#step4 : 去yarn的控制台看任务状态
ip:8088

#step5 : 取消yarn-session
yarn application --kill [该任务的yarn的id]

Per-Job-Cluster模式

使用===========================

#step1: 启动hadoop

#step2: 不要启动yarn-session,直接执行job
#在job执行命令中添加 -m yarn-cluster 
./flink run -m yarn-cluster -yjm 1024m -ytm 2048m -c jobReq -p 1 /root/jobRequire-1.0-SNAPSHOT-jar-with-dependencies.jar


#step3 : 去yarn的控制台看任务状态
ip:8088

#step4 : 取消yarn-session
yarn application --kill [该任务的yarn的id]

在这里插入图片描述
在这里插入图片描述

flink on yarn下进行高可用配置

介绍
	Flink on Yarn的HA高可用模式,首先依赖于Yarn自身的高可用机制(ResourceManager高可用),并通过Yarn对JobManager进行管理,当JobManager失效时,Yarn将重新启动JobManager。其次Flink Job在恢复时,需要依赖Checkpoint进行恢复,而Checkpoint的快照依赖于远端的存储:HDFS,所以HDFS也必须是高可用,同时JobManager的元数据信息也依赖于HDFS的高可用(namenode的高可用,和多副本机制),再者JobManager元数据的指针信息要依赖于Zookeeper的高可用。
注意:对于未启动高可用之前启动job 需要在配置完高可用后重启job。
配置

1)修改cdh yarn 中配置 设置application master重启时,尝试的最大次数。

<property>
	<name>yarn.resourcemanager.am.max-attempts</name>
	<value>10</value>
	<description>
		The maximum number of application master execution attempts.
	</description>
</property>

2)修改flink 配置文件 flink-conf.yaml

#flink on yarn下 per-job模式 高可用
#高可用模式
high-availability: zookeeper
# JobManager元数据保留在文件系统storageDir中 指向此状态的指针存储在ZooKeeper中
high-availability.storageDir: hdfs:///flink/ha/
#
# # Zookeeper集群 修改自己的集群
high-availability.zookeeper.quorum: xxx.xx.xx.xx:2181
#
# # 在zookeeper下的根目录
high-availability.zookeeper.path.root: /flink_yarn
#
# # zookeeper节点下的集群ID 该节点下放置了集群所需的所有协调数据 多个flink集群连接同一套zookeeper集群需要配置各自不同的集群ID,官方建议这个配置最好去掉,因为在 Yarn(以及Mesos)模式下,cluster-id 如果不配置的话,会配置成 Yarn 上的 Application ID ,从而可以保证唯一性。 (不配,如果配的话,启动两个及以上job会报错)
#high-availability.cluster-id: /default_yarn
#
# # 单个flink job重启次数 必须小于等于yarn-site.xml中Application Master配置的尝试次数
yarn.application-attempts: 6
#
#如果 ZooKeeper 在 Kerberos 的安全模式下运行
#
## default is "zookeeper". If the ZooKeeper quorum is configured
## with a different service name then it can be supplied here.
#
#zookeeper.sasl.service-name: zookeeper
#
## default is "Client". The value needs to match one of the values
## configured in "security.kerberos.login.contexts".
#zookeeper.sasl.login-context-name: Client

实验

当前 flink on yarn 下per job 测试

1)启动job:

2)查看 代表leader 选择完毕

在这里插入图片描述

3)jps 获取YarnJobClusterEntrypoint 的进程

kill -9 这个进程

在这里插入图片描述

4)这时再访问job的web 代表再重启

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值