从零开始搭建一个高可用的 Flink Standalone 集群

一、知识体系导航


你当前所在的位置:计算引擎 - Flink - 环境部署
在这里插入图片描述
二、Flink 这么牛逼 它到底能干嘛


本来打算在安装好的 Flink 集群上直接修改的,这样我增加个配置,这篇文章就完成了,考虑到大家可能对 Flink 不太了解,也不一定有兴趣从 0 开始装个 Linux 环境,所以我索性就从0开始配置一整套的环境。

然后简单的描述一下什么是 Flink,它能干嘛。

现在的互联网公司,数据呈指数级增长,大部分公司都会成立大数据部门,一开始会搭建一个离线的数据仓库,一般会使用 Hadoop + Hive + 调度工具 + Hue 构建一个离线数仓,为公司其他部门提供数据报表,数据决策。但有时候离线的数据往往满足不了实时性的要求,比如下面的需求:

  • 小张,你看能不能做个监控大屏实时查看促销活动销售额(GMV)?
  • 小李,搞促销活动的时候能不能实时统计下网站的 PV/UV 啊?
  • 小孙,我们现在搞促销活动能不能实时统计销量 Top5 啊?
  • 小王,我们 1 元秒杀促销活动中有件商品被某个用户薅了 100 件,怎么都没有风控啊?

我们归纳一下需求,大致就是下面的图
在这里插入图片描述
初看一下是不是挺难的?但我们把问题剖开,主要有下面三个小问题
(1)数据实时采集 - 数据从哪来
(2)数据实时计算
(3)数据实时下发 - 告警 或者 直接存储(消息队列、数据库、文件系统)
在这里插入图片描述
那么 Flink 就是一款实时计算引擎,它可以针对批数据和流数据来进行分布式计算,代码主要由 Java 实现,提供了 Scala、Python、Java 接口供调用。
对 Flink 而言,其主要的处理场景就是流式处理,批处理也是流处理的一个极限特例了,所以 Flink 也是一款真正意义上的流批统一的处理引擎。

三、基础环境准备


大家可以参考《Linux就该这么学》的那本书中,在Windows上安装Linux虚拟机,一定要按照步骤操作
再自己依次安装好基础环境、java 1.8 环境、zookeeper 环境

四、Flink 集群环境准备


(1)单机模式体验
https://flink.apache.org/downloads.html#apache-flink-191
在这里插入图片描述
下载完后,使用 xshell 工具把包上传到服务器 hadoop001 上
在这里插入图片描述
在这里插入图片描述
先 cd /usr/local
输入 put,然后选择刚下载的 flink 文件
解压缩 tar -zxvf flink-1.9.1-bin-scala_2.11.tgz
进入 flink 目录 cd /usr/local/flink-1.9.1
先体验一下 单机模式,什么都不用做
cd /usr/local/flink-1.9.1/bin
./start-cluster.sh
它会在本地启动 JobManager 和 TaskManager
在这里插入图片描述
然后在浏览器上访问:
http://192.168.193.128:8081/
可以看到它启动了一个 TaskManager ,一个 Task Slot
在这里插入图片描述
(2)集群模式体验
首先 kill 掉 hadoop001 的 进程
在这里插入图片描述
kill -9 4182
kill -9 4617

首先
进入到 hadoop001 机器
cd /usr/local/flink-1.9.1/conf
vi flink-conf.yaml
修改几个配置:
jobmanager.rpc.address: hadoop001
jobmanager.rpc.port: 6123
jobmanager.heap.size: 1024m
taskmanager.heap.size: 1024m
taskmanager.numberOfTaskSlots: 3

vi slaves
修改为:
hadoop001
hadoop002
hadoop003

vi masters
hadoop001:8081

然后把整个 flink 目录使用 scp 拷贝到其他机器上
scp -r flink-1.9.1 root@hadoop002:/usr/local/
scp -r flink-1.9.1 root@hadoop003:/usr/local/

启动集群,在hadoop001上
cd /usr/local/flink-1.9.1/bin
./start-cluster.sh

再次访问:
http://192.168.193.128:8081/
在这里插入图片描述
可以看到,现在启动了 3 个 TaskManager,9 个 Task Slots
已经是集群模式了

(3)高可用集群搭建
我们现在的集群就只有一个 JobManager,是单点的,高可用就是增加一个 JobManager 作为备用,当主 JobManager 宕机之后,备用 JobManager 顶上,等宕机的 JobManager 恢复之后,又变成备用
在这里插入图片描述
在这里插入图片描述
修改配置文件
vi /usr/local/flink-1.9.1/conf/flink-conf.yaml

high-availability: zookeeper
high-availability.zookeeper.quorum: 192.168.193.128:2181,192.168.193.129:2181,192.168.193.130:2181
high-availability.storageDir: file:///usr/local/flink-1.9.0/ha-dir

(注意,这里应该配置为 hdfs ,但我们没有装,所以暂时配置为本地,不然没法启动集群)

vi /usr/local/flink-1.9.1/conf/masters
hadoop001:8081
hadoop002:8081

修改好的配置发送到其他两台机器
scp flink-conf.yaml root@hadoop002:/usr/local/flink-1.9.1/conf/
scp flink-conf.yaml root@hadoop003:/usr/local/flink-1.9.1/conf/

scp masters root@hadoop002:/usr/local/flink-1.9.1/conf/
scp masters root@hadoop003:/usr/local/flink-1.9.1/conf/

启动集群
在这里插入图片描述
浏览器上打开:
http://192.168.193.128:8081/

发现 JobManager 在 hadoop001 上启动了
现在我们 kill 掉 hadoop001 上的 JobManager 进程
在这里插入图片描述
kill -9 15107

他应该会在 hadoop002 上把备用的 JobManager 变成 主 JobManager,我们再在浏览器上访问一下
hadoop001 上的 JobManager 已经无法访问了
在这里插入图片描述
hadoop002 上的 JobManager 可以访问到了
在这里插入图片描述
说明高可用已经ok了

到此为止,我们已经从零开始搭建了一个 Flink 高可用集群,后续案例都会提交到集群上演示,有兴趣的可以在自己电脑上安装一下,体验一下。


欢迎各位小伙伴来咨询,想要工程源码的加群:797853299

### 回答1: Flink standalone集群搭建步骤如下: 1. 下载Flink安装包并解压缩到指定目录。 2. 配置Flink集群的masters和workers节点,可以在conf目录下的masters和workers文件中进行配置。 3. 启动Flink集群的masters节点,可以使用bin/start-cluster.sh命令启动。 4. 启动Flink集群的workers节点,可以使用bin/taskmanager.sh start命令启动。 5. 验证Flink集群是否正常运行,可以使用bin/flink list命令查看当前运行的Flink作业。 6. 在Flink集群中提交作业,可以使用bin/flink run命令提交作业。 7. 监控Flink集群的运行状态,可以使用Flink的Web UI或者JMX监控工具进行监控。 以上就是Flink standalone集群搭建的基本步骤,希望对您有所帮助。 ### 回答2: Apache Flink一个处理流和批量数据的通用分布式计算引擎,可在大规模数据集上快速实现低延迟和高吞吐量。Flink提供了一个Standalone集群模式,使开发人员可以在自己的本地机器上测试和验证他们的应用程序,而无需构建一个完整的分布式环境。在本文中,我们将介绍如何搭建一个Flink Standalone集群。 1. 确保你的环境满足Flink的要求,比如安装Java环境等。 2. 下载Flink二进制文件。从Flink官网下载最新的tar文件,然后解压到一个目录下。 3. 配置Flink。打开conf/flink-conf.yaml文件,配置Flink的参数,比如jobmanager.rpc.address(JobManager监听的主机地址),taskmanager.numberOfTaskSlots(每个TaskManager能够执行的任务数)等。 4. 启动JobManager。在Flink的bin目录下执行以下命令: ./start-cluster.sh 这将启动JobManager和TaskManager进程。 5. 访问Flink Web Dashboard。在浏览器中输入http://localhost:8081,可以访问Flink Web Dashboard。这里可以查看集群的状态、运行中的任务、日志等。 6. 启动应用程序。使用Flink提供的运行脚本(bin/flink run)来提交应用程序。 7. 观察应用程序的运行状态。可以在Flink Web Dashboard中查看应用程序的运行状态和日志,还可以监控各种指标,如吞吐量、延迟、资源使用情况等。 8. 停止集群。在bin目录下执行以下命令: ./stop-cluster.sh 这将停止JobManager和TaskManager进程。 总之,通过Flink Standalone集群,您可以在本地机器上测试和验证您的应用程序,并且几乎没有任何成本。值得注意的是,Standalone集群并不适合生产环境,但当您需要在本地机器上调试应用程序时,它是一个很好的选择。 ### 回答3: Apache Flink一个开源的分布式流处理系统。它以高效、可伸缩和容错为设计目标,因此广泛应用于大数据领域。Flink可以运行在各种集群上,包括Hadoop YARN和Apache Mesos等。在本文中,我们将讨论如何在Flink standalone集群搭建分布式流处理系统。 Flink standalone集群搭建的准备工作: 在搭建Flink standalone集群之前,需要确保已经完成以下准备工作: 1. 安装Java 8或更高版本。 2. 下载Flink发行版,并解压缩至安装目录。 Flink standalone集群搭建的步骤: 1. 在主节点上启动Flink集群管理器。在Flink所在目录下,输入以下命令: ./bin/start-cluster.sh 2. 查看集群状态。在Flink所在目录下,输入以下命令: ./bin/flink list 如果输出结果为空,则说明集群状态正常。 3. 在从节点上启动TaskManager。在从节点所在机器上,输入以下命令: ./bin/taskmanager.sh start 4. 查看TaskManager状态。在从节点所在机器上,输入以下命令: ./bin/taskmanager.sh status 如果输出结果为“正常运行”,则说明TaskManager已经成功启动。 5. 提交Flink作业。在Flink所在目录下,输入以下命令: ./bin/flink run ./examples/streaming/SocketWindowWordCount.jar --port 9000 其中,SocketWindowWordCount.jar是一个简单的Flink作业,用于计算流式数据的词频统计。 6. 监控作业运行情况。在浏览器中输入以下地址: http://localhost:8081 可以查看作业的运行状态、性能指标等信息。 总结: 通过以上步骤,我们已经成功搭建Flink standalone集群,并提交了一个简单的流处理作业。需要注意的是,本文仅提供了基础的搭建步骤,实际生产环境中还需要进行更加细致的配置和管理。同时,Flink具有丰富的API和生态系统,可以灵活应对不同的数据处理场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值