centos7安装flink集群_Flink在阿里的现状及集群安装

1、什么是Flink?

(1)、分布式的 计算引擎

(2)、支持 批处理,即处理静态的数据集、历史的数据集

(3)、支持 流处理,即实时地处理一些实时数据流;

(4)、支持 基于事件 的应用

2、Apache Flink® — Stateful Computations over Data Streams

a692bd76d9d650852a518dd51f54a80f.png

Stateful Computations over Data Streams ,即数据流上的有状态的计算。

Data Streams: FlinK认为 有界数据集 是无界数据流的一种特列,所以说有界数据集也是一种数据流,事件流也是一种数据流,Everything is streams,即flink可以用来处理任何的数据,可以支持批处理、流处理、AI、MacheineLearning等等。

Stateful Computations,即 有状态计算。有状态计算是最近几年越来越被用户需求的一个功能。比如说一个网站一天内访问UV数,那么这个UV数便为 状态。Flink提供了内置的对状态的一致性的处理,即如果任务发生了Failover,其状态不会丢失、不会被多算少算,同时提供了非常高的性能。

无界流 : 意思很明显,只有开始没有结束,必须连续的处理无界流数据,也即使在事件注入之后立即要对其进行处理。不能等待数据到达了再去全部处理,因为数据是无界的并且永远不会结束数据注入。处理无界流数据往往要求时间注入的时候有一定的顺序性,例如可以以事件产生的顺序注入,这样会使得处理结果完整。

有界流 :即使有明确的开始和结束的定义,有界流可以等待数据全部注入完整了在开始处理。注入的顺序不是必须的,因为对于一个静态的数据集,我们可以对其进行排序的。有界的处理也可以称为 批处理。

3、Flink的特点:

性能优秀(尤其在流计算领域)

高可扩展性

支持容错

纯内存式 的计算引擎,做了内存管理方面的大量优化

支持 eventime 的处理

支持超大状态的Job(在阿里巴巴中作业的state大小超过TB的是非常常见的)

支持 exactly-once 的处理。

4、 Flink在阿里的现状

基于Apache Flink在阿里巴巴搭建的平台于2016年正式上线,并从阿里巴巴的 搜索 和 推荐 这两大场景开始实现。

目前阿里巴巴所有的业务,包括阿里巴巴所有子公司都采用了基于Flink搭建的实时计算平台。

同时Flink计算平台运行在开源的Hadoop集群之上。

采用Hadoop的 YARN 做为资源管理调度,以 HDFS 作为数据存储。

因此,Flink可以和开源大数据软件Hadoop无缝对接。

目前,这套基于Flink搭建的实时计算平台不仅服务于阿里巴巴集团内部,而且通过阿里云的云产品API向整个开发者生态提供基于Flink的云产品支持。

6e4f2de23c64d2b78e1f617b4256e0c5.png

5、Flink在阿里巴巴的大规模应用,表现如何?

规模:一个系统是否成熟,规模是重要指标,Flink最初上线阿里巴巴只有数百台服务器,目前规模已达上万

台,此等规模在全球范围内也是屈指可数;

状态数据:基于Flink,内部积累起来的状态数据已经是PB级别规模;

Events:如今每天在Flink的计算平台上,处理的数据已经超过万亿条;

TPS:在峰值期间可以承担每秒超过4.72亿次的访问,最典型的应用场景是 阿里巴巴双11大屏 ;

38873cd96ee021b4a8ccac4bd84c2d8c.png
cf59dae2d5133d4391654e01c5138420.png

6、Flink分支

阿里自15年起开始调研开源流计算引擎,最终决定基于Flink打造新一代计算引擎

阿里贡献了数百个commiter,并对Flink进行高度定制,并取名为 Blink

阿里是 Flink SQL 的最大贡献者,一半以上的功能都是阿里的工程师开发的

7、Flink 有三种部署模式,分别是 Local、Standalone Cluster 和 Yarn Cluster。

(1)、local(本地)----单机模式,一般不使用;

(2)、Standalone ----独立模式,Flink 自带集群,开发测试环境使用;

(3)、Yarn----计算资源统一由Hadoop Yarn管理,生成测试环境使用;

7.1、伪分布式环境部署

7ff3bf8bed76af680b9f1b8c23432f00.png

Flink程序需要提交给 Job Client

Job Client将作业提交给 Job Manager

Job Manager负责协调资源分配和作业执行。 资源分配完成后,任务将提交给相应的 Task Manager

Task Manager启动一个线程以开始执行。Task Manager会向Job Manager报告状态更改。例如开始执行,正在进行或已完成。

作业执行完成后,结果将发送回客户端(Job Client)。

环境准备:

下载安装包flink-1.6.0-bin-scala_2.11.tgz

服务器: mini (192.168.116.3)

安装步骤:

1. 上传压缩包

2. 解压

tar -zxvf flink-1.6.0-bin-scala_2.11.tgz -C /usr/local/src

cd /usr/local/src/flink-1.6.0

./bin/start-cluster.sh

d5dd0e23b366e38d2f232d17c95c29c5.png

使用JPS可以查看到下面两个进程

TaskManagerRunner

StandaloneSessionClusterEntrypoint

4. 访问web界面

slot 在flink里面可以认为是资源组,Flink是通过将任务分成子任务并且将这些子任务分配到slot来并行

执行程序。

18163cff68dcb7bd73e340adf694fe76.png

5. 运行测试任务

[root@mini1 bin]# ./flink run /usr/local/src/flink-1.6.0/examples/batch/WordCount.jar --input /usr/local/src/zookeeper.out --output /usr/local/src/flink-1.6.0/flink_datasrc/flink-1.6.0/flink_data

65eb56e74b29be43f54e95af137c530f.png

控制台输出:

Starting execution of program

Program execution finished

Job with JobID bb53dc79d510202e8abd95094791a32b has finished.

Job Runtime: 9539 ms

观察WebUI

72707d6d86ec9e5cc26b282bd315d43c.png

7.2. Standalone模式集群安装部署

da7cf98c88dd944694ffae3f73b52c37.png

client客户端提交任务给JobManager

JobManager负责Flink集群计算资源管理,并分发任务给TaskManager执行

TaskManager定期向JobManager汇报状态

环境准备:

服务器: mini11(Master + Slave)

服务器: mini2(Slave)

服务器: mini3(Slave)

安装步骤:

1. 上传flink压缩包到指定目录

2. 解压缩flink到 /usr/local/src 目录

tar -zxvf flink-1.6.0-bin-scala_2.11.tgz -C /usr/local/src

3. 使用vi修改slaves文件

mini1

mini2

mini3

5. 使用vi修改 /etc/profile 系统环境变量配置文件,添加HADOOP_CONF_DIR目录

export HADOOP_CONF_DIR=/usr/local/src/hadoop-2.6.4/etc/hadoop

6. 分发/etc/profile到其他两个节点

scp -r /etc/profile mini2:/etc

scp -r /etc/profile mioni3:/etc

7. 每个节点重新加载环境变量

source /etc/profile

8. 使用scp命令分发flink到其他节点

scp -r /usr/local/src/flink-1.6.0/ mini2:/usr/local/src

scp -r /usr/local/src/flink-1.6.0/ mioni3:/usr/local/src

启动/停止flink集群

启动:./bin/start-cluster.sh

停止:./bin/stop-cluster.sh

启动/停止jobmanager 如果集群中的jobmanager进程挂了,执行下面命令启动

bin/jobmanager.sh start

bin/jobmanager.sh stop

启动/停止taskmanager 添加新的taskmanager节点或者重启taskmanager节点

bin/taskmanager.sh start

bin/taskmanager.sh stop

10. 启动HDFS集群

cd /usr/local/src/hadoop-2.6.4/sbin

start-all.sh

11. 在HDFS中创建/test/input目录

hdfs dfs -mkdir -p /test/input

12. 上传wordcount.txt文件到HDFS /test/input目录

hdfs dfs -put /usr/local/src/flink-1.6.0/README.txt /test/input

13. 并运行测试任务

bin/flink run /usr/local/src/flink-1.6.0/examples/batch/WordCount.jar --input

hdfs://miini1:8020/test/input/README.txt --output

hdfs://mini1:8020/test/output2/result.txt

14. 浏览Flink Web UI界面

http://mini1:8081

6e0e9dcefd1b12fc352e41fb8f7cb562.png
918b8d4e4f3e4e020b6d0dcb666d9530.png

好了,至此,Flink的单机模式和独立模式安装已经完成。由于内容比较多,我们日常工作中经常用到的 Flink的Standalone高可用HA模式和Yarn集群环境将在下一篇文章中呈现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值