架构
Flink架构FLink三大部分
- JobManager:协调分配(HA),三种运行模式
- TaskManager:作业运行
- FlinkClient:批或流式应用编写器
三种运行模式
- Application Mode:一应用一个Cluster实例
- Per-JOB Mode: 可理解为Client模式的Application Mode,一应用Job一Cluster
- Session Mode: 多个JOB共享一个Flink,不推荐
生产环境时,推荐配置 Per-job or Application Mode
部署方式推荐:Standalone或YARN 模式
部署方式
- Standalone:不支持Per-JOB Mode,
- YARN:三种运行方式全支持
- Kubernetes: 不支持Per-JOB Mode
- Mesos: Mesco不支持
其他分布式大数据主从结构
- Hadoop
HDFS: NN(HA 老大) DN(多个 小弟) MR: RM(HA 老大) NM(多个 小弟)
- Spark
Master(HA老大) Woker(多个小弟)- Hbase
- 略
FLink's Standalone 安装
JobManager默认端口:8081
安装
#前提条件:安装jdk1.8
tar -zxvf flink-1.13.2-bin-scala_2.12.tgz -c /home/app/
export FLINK_HOME=/home/app/flink-1.13.2/
export PATH=$PATH:$FLINK_HOME/bin
包结构
cd /home/app/flink-1.13.2/
- bin/ #执行脚本
- example/ #例子
- license/ #
- conf/ #配置 flink-conf.yaml与workers
- log/ #日志
- opt/
- plugin/
- lib/ #依赖
一、Session Mode
- 1、install && start
# (1) Start Cluster
$ ./bin/start-cluster.sh
# (2) 访问 http://localhost:8081
# (3) Submit example job - 启动客户端
$ ./bin/flink run ./examples/streaming/TopSpeedWindowing.jar
# (4) Stop the cluster again
$ ./bin/stop-cluster.sh
- 2、cluster's config
1. conf/masters contents:
localhost #master
2. conf/workers contents:
localhost #work1
localhost #work2
localhost #work3
二、Application Mode
# 1、先复制..job.jar至lib文件夹,这里在TopSpeedWindowing.jar为例
$ cp ./examples/streaming/TopSpeedWindowing.jar lib/
#2、 发起一个jobManager:
$ ./bin/standalone-job.sh start --job-classname org.apache.flink.streaming.examples.windowing.TopSpeedWindowing
# 3. 启动taskmanager,否则浏览器访问不了(localhost:8081)
$ ./bin/taskmanager.sh start #否则访问不了
# Note: 资源足够,可以启动多个TaskManagers
# --停止服务
$ ./bin/taskmanager.sh stop
$ ./bin/standalone-job.sh stop
standalone不支持per-job模式
常用配置说明
**1、conf/flink-conf.yaml
- conf/flink-conf.yaml
jobmanager.rpc.address (defaults to “localhost”)
jobmanager.rpc.port (defaults to 6123 )
#内存
jobmanager.memory.process.size
taskmanager.memory.process.size
# 并行的任务
taskmanager.numberOfTaskSlots: 1
#集群中所有CPU数量
parallelism.default:1
io.tmp.dir
上述
.../flink/...
目录必须放在所有worker节点的相同目录下。可用共享NFS目录或复制Flink
conf/flink-conf.yaml: 可针对特定结节做配置,只要在各自的主机上
**2、conf/workers
# 提供所有用于集成的TaskManager节点的ip或主机名
...
**3、Master基础,用于多JobManager节点
在 conf/masters 保留所有master机器列表,
> master1:webUIPort1[...]
> masterX:webUIPortX
Standalone session-model安装实操
一、安装
- 1、master 10.0.0.1
- 2、work1: 10.0.0.2
work2: 10.0.0.3
- 1、解压
tar -zxvf flink-flink-1.13.2-bin-scala_2.12.tgz
cd conf/
- 2.配置 - flink-conf.yaml
vi conf/flink-conf.yaml
---
#原8081,云主机8081容易被挖况
rest.port: 18081
#机器的hostname
jobmanager.rpc.address: localhost
#以下默认 - 也是特别需要关注的参数
jobmanager.rpc.port: 6213
# 含 (JobMaster / ResourceManager / Dispatcher)
jobmanager.memory.process.size: 1600m
taskmanager.memory.process.size: 1728m
#每个taskmanager并行的地task的任务量,默认1
taskmanager.numberOfTaskSlots: 4
parallelism.default:1 #集群中所有CPU数量
io.tmp.dir
未来单独修改本置需要重启
- conf/workers
#单节点,所以jobmanager是同一个节点,hostname一样
# 配置wokers的hostname
...
生产环境,多点节,则在
conf/workers
中把你规划的作为节点的机器对应的hostname写入即可,一个一个hostname
补充:单节点时,什么都不修改也是可以的
- 将
FLINK_HOME
添加到环境变量中
- 将
vim /etc/profile
---
FLINK_HOME= ~ /app/opt/flink-1.13.2
export PATH=...:$FLINK_HOME/bin
---
source /etc/profile
- 启动
# 如没有配置免密码登录,需要输入密码
.bin/start-cluster.sh
---
#控制台输入
Starting cluster.
Starting standalonesession daemon on host iZwz94ym4bv8f4w62zn4niZ.
Starting taskexecutor daemon on host iZwz94ym4bv8f4w62zn4niZ.
- 6 验证
jps
--
394535 TaskManagerRunner
394266 StandaloneSessionClusterEntrypoint
394698 Jps
-7 浏览器访问 http://ip或域名:18081/
云主机:如果开启的安全机制,需要将rest port端口加入到主机列表
关注相关知识:HDFS、YARN、HBase、Flink这些分布式系统的主从节点的名称、职责、以及默认的端口号
Flink工程Maven脚手架
# DarchetypeVersion可根据实际版本修改
mvn \
archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.9.2
参考:
网友评论