linux运维、架构之路-Flink集群部署
一、介绍
Flink 是一个开源的分布式流式处理框架,Flink标准的实时处理引擎。用于在无边界和有边界数据流上进行有状态的计算。
- 提供准确的结果,甚至在出现无序或者延迟加载的数据的情况下。
- 它是状态化的容错的,同时在维护一次完整的的应用状态时,能无缝修复错误。
- 大规模运行,在上千个节点运行时有很好的吞吐量和低延迟。
二、特性
- Flink灵活的窗口。
- Exactly once语义保证。
三、Flink集群部署
1、前置条件
- 配置从master到worker节点的SSH无密登录,并保持保节点上相同的目录结构。
- Flink要求在主节点和所有工作节点上设置JAVA_HOME环境变量,并指向Java安装的目录。
①配置SSH免秘钥
ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.56.175 #Master ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.56.176 #worker1 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.56.182 #worker2
②配置JAVA环境变量(所有节点)
vi ~/.bash_profile export JAVA_HOME=/app/jdk1.8.0_181 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH source ~/.bash_profile
2、下载Flink安装包
官方地址:https://flink.apache.org/downloads.html
wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.12.2/flink-1.12.2-bin-scala_2.11.tgz
①解压软件
tar xf flink-1.12.2-bin-scala_2.11.tgz -C /app/ #修改配置文件: [root@k8s-node1 conf]# egrep -v "#|^$" flink-conf.yaml env.java.home: /app/jdk1.8.0_181 # 配置java环境 jobmanager.rpc.address: 192.168.56.175 # 配置主节点主机名,指向master节点 jobmanager.rpc.port: 6125 jobmanager.memory.process.size: 1600m #定义允许JVM在每个节点上分配的最大主内存量 taskmanager.memory.process.size: 1728m taskmanager.numberOfTaskSlots: 4 #你希望每台机器能并行运行多少个slot, 机器上一个核可以运行一个slot parallelism.default: 4 #整个集群最大的可并行度,slave的节点数*节点cpu核数 jobmanager.execution.failover-strategy: region rest.port: 8081 #UI页面访问端口
修改文件/conf/masters、worekers文件
[root@k8s-node1 conf]# cat masters 192.168.56.175:6125 [root@k8s-node1 conf]# cat workers 192.168.56.176 192.168.56.182
②分发修改后的文件
scp -rp flink-1.12.2 192.168.56.176:/app/ scp -rp flink-1.12.2 192.168.56.182:/app/
3、启动集群(只需要在主节点启动即可)
[root@k8s-node1 app]# /app/flink-1.12.2/bin/start-cluster.sh Starting cluster. Starting standalonesession daemon on host k8s-node1. Starting taskexecutor daemon on host k8s-node2. Starting taskexecutor daemon on host k8s-node3. [root@k8s-node1 app]# jps 25673 Jps 25453 StandaloneSessionClusterEntrypoint
节点查看:
[root@k8s-node2 ~]# jps 10458 TaskManagerRunner 11020 Jps
4、页面访问
①创建一个Flink自带的流处理程序
./bin/flink run examples/streaming/SocketWindowWordCount.jar --hostname 192.168.56.175 --port 9000
成功最有效的方法就是向有经验的人学习!