一、Flink概述

1、基础简介

Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink不仅可以运行在包括YARN、Mesos、Kubernetes在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。

这里要说明两个概念:

  • 边界:无边界和有边界数据流,可以理解为数据的聚合策略或者条件;
  • 状态:即执行顺序上是否存在依赖关系,即下次执行是否依赖上次结果;

2、应用场景

Data Driven

事件驱动型应用无须查询远程数据库,本地数据访问使得它具有更高的吞吐和更低的延迟,以反欺诈案例来看,DataDriven把处理的规则模型写到DatastreamAPI中,然后将整个逻辑抽象到Flink引擎,当事件或者数据流入就会触发相应的规则模型,一旦触发规则中的条件后,DataDriven会快速处理并对业务应用进行通知。

Data Analytics

和批量分析相比,由于流式分析省掉了周期性的数据导入和查询过程,因此从事件中获取指标的延迟更低。不仅如此,批量查询必须处理那些由定期导入和输入有界性导致的人工数据边界,而流式查询则无须考虑该问题,Flink为持续流式分析和批量分析都提供了良好的支持,实时处理分析数据,应用较多的场景如实时大屏、实时报表。

Data Pipeline

与周期性的ETL作业任务相比,持续数据管道可以明显降低将数据移动到目的端的延迟,例如基于上游的StreamETL进行实时清洗或扩展数据,可以在下游构建实时数仓,确保数据查询的时效性,形成高时效的数据查询链路,这种场景在媒体流的推荐或者搜索引擎中十分常见。

二、环境部署

1、安装包管理

[root@hop01 opt]# tar -zxvf flink-1.7.0-bin-hadoop27-scala_2.11.tgz
[root@hop02 opt]# mv flink-1.7.0 flink1.7

2、集群配置

管理节点

[root@hop01 opt]# cd /opt/flink1.7/conf
[root@hop01 conf]# vim flink-conf.yamljobmanager.rpc.address: hop01

分布节点

[root@hop01 conf]# vim slaveshop02
hop03

两个配置同步到所有集群节点下面。

3、启动与停止

/opt/flink1.7/bin/start-cluster.sh
/opt/flink1.7/bin/stop-cluster.sh

启动日志:

[root@hop01 conf]# /opt/flink1.7/bin/start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host hop01.
Starting taskexecutor daemon on host hop02.
Starting taskexecutor daemon on host hop03.

4、Web界面

访问:http://hop01:8081/

三、开发入门案例

1、数据脚本

分发一个数据脚本到各个节点:

/var/flink/test/word.txt

2、引入基础依赖

这里基于Java写的基础案例。

<dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.7.0</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.11</artifactId><version>1.7.0</version></dependency>
</dependencies>

3、读取文件数据

这里直接读取文件中的数据,经过程序流程分析出每个单词出现的次数。

public class WordCount {public static void main(String[] args) throws Exception {// 读取文件数据readFile () ;}public static void readFile () throws Exception {// 1、执行环境创建ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment();// 2、读取数据文件String filePath = "/var/flink/test/word.txt" ;DataSet<String> inputFile = environment.readTextFile(filePath);// 3、分组并求和DataSet<Tuple2<String, Integer>> wordDataSet = inputFile.flatMap(new WordFlatMapFunction()).groupBy(0).sum(1);// 4、打印处理结果wordDataSet.print();}// 数据读取个切割方式static class WordFlatMapFunction implements FlatMapFunction<String, Tuple2<String, Integer>> {@Overridepublic void flatMap(String input, Collector<Tuple2<String, Integer>> collector){String[] wordArr = input.split(",");for (String word : wordArr) {collector.collect(new Tuple2<>(word, 1));}}}
}

4、读取端口数据

在hop01服务上创建一个端口,并模拟一些数据发送到该端口:

[root@hop01 ~]# nc -lk 5566
c++,java

通过Flink程序读取并分析该端口的数据内容:

public class WordCount {public static void main(String[] args) throws Exception {// 读取端口数据readPort ();}public static void readPort () throws Exception {// 1、执行环境创建StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();// 2、读取Socket数据端口DataStreamSource<String> inputStream = environment.socketTextStream("hop01", 5566);// 3、数据读取个切割方式SingleOutputStreamOperator<Tuple2<String, Integer>> resultDataStream = inputStream.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>(){@Overridepublic void flatMap(String input, Collector<Tuple2<String, Integer>> collector) {String[] wordArr = input.split(",");for (String word : wordArr) {collector.collect(new Tuple2<>(word, 1));}}}).keyBy(0).sum(1);// 4、打印分析结果resultDataStream.print();// 5、环境启动environment.execute();}
}

四、运行机制

FlinkClient

客户端用来准备和发送数据流到JobManager节点,之后根据具体需求,客户端可以直接断开连接,或者维持连接状态等待任务处理结果。

JobManager

在Flink集群中,会启动一个JobManger节点和至少一个TaskManager节点,JobManager收到客户端提交的任务后,JobManager会把任务协调下发到具体的TaskManager节点去执行,TaskManager节点将心跳和处理信息发送给JobManager。

TaskManager

任务槽(slot)是TaskManager中最小的资源调度单位,在启动的时候就设置好了槽位数,每个槽位能启动一个Task,接收JobManager节点部署的任务,并进行具体的分析处理。

五、源代码地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

大数据系列

  • Hadoop框架

    • 大数据简介,技术体系分类整理
    • Hadoop框架:单服务下伪分布式集群搭建
    • Hadoop框架:集群模式下分布式环境搭建
    • Hadoop框架:HDFS简介与Shell管理命令
    • Hadoop框架:HDFS读写机制与API详解
    • Hadoop框架:NameNode工作机制详解
    • Hadoop框架:DataNode工作机制详解
    • Hadoop框架:HDFS高可用环境配置
    • Hadoop框架:MapReduce基本原理和入门案例
    • Hadoop框架:Yarn基本结构和运行原理
  • 基础组件

    • 数据仓库组件:Hive环境搭建和基础用法
    • 数据仓库组件:HBase集群环境搭建和应用案例
    • 数据采集组件:Flume基础用法和Kafka集成
    • 数据搬运组件:基于Sqoop管理数据导入和导出
    • 数据调度组件:基于Azkaban协调时序任务执行
    • 数据搬运组件:基于DataX同步数据和源码分析
  • 实时计算框架

    • 实时计算框架:Spark集群搭建与入门案例
  • OLAP分析引擎

    • OLAP分析引擎,基于Druid组件数据统计分析
    • OLAP分析引擎:基于Presto组件跨数据源分析
    • OLAP查询引擎:列式库ClickHouse集群管理

实时计算框架:Flink集群搭建与运行机制相关推荐

  1. 大数据“重磅炸弹”:实时计算框架 Flink

    你是不是经常体验或看到以下这些场景? 小田,你看能不能做个监控大屏实时查看促销活动销售额(GMV)? 小朱,搞促销活动的时候能不能实时统计下网站的 PV/UV 啊? 小鹏,我们现在搞促销活动能不能实时 ...

  2. Flink系列之Flink集群搭建

    title: Flink系列 二.Flink集群搭建 2.1 Flink的Standalone模式集群安装 1.上传解压重命名 [root@hadoop10 software]# tar -zxvf ...

  3. BATJ大数据架构师带你领略实时计算框架Flink的魅力!

    你是不是经常体验或看到以下这些场景? "小张,你看能不能做个监控大屏实时查看促销活动销售额(GMV)?" "小王,我们现在搞促销活动能不能实时统计销量 Top3 啊?&q ...

  4. Flink大数据实时计算系列-Flink的Operator Chains的优化机制

    Flink大数据实时计算系列-Flink的Operator Chains的优化机制 目录 Flink改变并行度 并行度改为3 并行度改为2 Flink Operator Chains Flink gr ...

  5. Flink集群搭建以及企业级yarn集群搭建

    Flink下载: Apache Flink: 下载 根据自己想要下载的版本,下载指定版本我下载的是7.2hadoop版本 解压后启动: 本地启动 [root@node01 flinkhadoop1.7 ...

  6. 实时计算框架 Flink 新方向:打造「大数据+AI」 未来更多可能

    2019-12-20 17:57 导语:如何将大数据与 AI 结合...... 自 Flink 开源以来,越来越多的开发者加入了 Flink 社区.仅仅 2019 年,Flink 在 GitHub 上 ...

  7. Flink 集群搭建安装 CentOS 7.x 版本

    基本准备: JDK 免密登录(不设置后期启动可以手动输入密码) Centos 7.x 一.下载Flink 下载地址:http://flink.apache.org/downloads.html 我这里 ...

  8. 流计算框架 Flink 与 Storm 的性能对比

    本文作者:孙梦瑶 | 美团点评 本文主要内容:通过将分布式实时计算框架 Flink 与 Storm 进行性能对比,为美团点评实时计算平台和业务提供数据参考. 一. 背景 Apache Flink 和 ...

  9. Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

    Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...

最新文章

  1. 基于RNN的语言模型与机器翻译NMT
  2. .net core 微服务_.NET 微服务实战之负载均衡(上)
  3. pytorch 笔记: 协同过滤user item bias 实现
  4. tensorflow随笔-求平均值的函数
  5. [转]emailjs-smtp-client
  6. 通过OleDB连接方式,访问Access,Excel数据库.
  7. 软件测试bug文档模板,软件bug测试记录模板
  8. HRNet论文阅读及部分代码标注
  9. oracle获取timestamp日期,oracle日期时间型timestamp的深入理解
  10. 用Python验证指数基金定投策略
  11. Linux禅道安装步骤以及测试初认知
  12. xbox无线适配器驱动_雷蛇推出两款适用于新 Xbox 的游戏耳机:Kaira、Kaira Pro
  13. 用I2C级联扩展器做一个时钟盒子
  14. java面试问题你遇到的难题_在Java面试中常遇到的技术问题汇总
  15. 后科技时代—赛博朋克2077
  16. 【GPU Gems 学习笔记】Rendering Water Caustics
  17. 华为云等保解决方案,全流程等保服务,帮助企业守护信息安全
  18. RBF论ADSE(千万别学英语)之合理性
  19. HorizontalScrollView实现Gallery
  20. dolphinscheduler搭建以及搭建使用中遇到的问题

热门文章

  1. java项目启动后运行方法_spring boot在启动项目之后执行的实现方法
  2. (软件工程复习核心重点)第五章详细设计习题
  3. matplotlib 快速绘图
  4. 使用和了解Valgrind核心:高级主题
  5. 总线的通信方式特点及同步通信的过程
  6. 等保制度与ISO27001的区别与联系
  7. C/C++的ide编译器CLion的安装及快捷键使用
  8. Python获取同目录下json文件内容
  9. 排序算法:希尔排序算法实现及分析
  10. [TJOI2015]弦论 后缀自动机