前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始部署一个高可用的 Flink Standalone 集群

从零开始部署一个高可用的 Flink Standalone 集群

作者头像
kk大数据
发布2020-02-14 16:43:28
3.8K0
发布2020-02-14 16:43:28
举报
文章被收录于专栏:kk大数据

知识体系导航

你当前所在的位置:计算引擎 - 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 也是一款真正意义上的流批统一的处理引擎。

基础环境准备

大家可以参考今日第二篇文章,从0开始在 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了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 KK架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档