Flink是新一代大数据流处理核心框架,也是领先厂商的重点投资点。下面,我们将详细讨论Flink大数据库框架@mikechen。
本文收录于mikechen的30万+字原文《阿里架构师进阶专题合集》。
Flink
Flink 是Apache 的开源流处理框架,用于无界和有界数据流上的状态计算。
为什么需要Flink
Flink 之前的计算框架是Hadoop和Spark,这是第一代大数据计算框架,后来的Spark基于Hadoop,进行内存计算,计算性能得到了显着提升。
然而,随着流处理概念的出现,而Spark并不擅长流处理,Flink流处理技术就诞生了。
Flink框架可以说实现了实时流处理,可以显着降低流计算的延迟,更好地满足当前大数据处理的需求。
Flink特点
Flink 功能包括:
1。 处理无界和有界数据
无界流有起点但没有定义的终点。这是无限的数据流。
有界流具有定义的开始和结束,可以通过在执行计算之前提取所有数据来进行处理。
Flink 擅长处理无界和有界数据集。
2. 去中心化
Flink程序可以在分布式环境中运行,并且具有高性能架构。
3、高可用
在分布式系统中,为了保证服务能够7x7、24小时可靠运行,Flink不仅提供故障处理功能,还可以维护服务内各个组件的当前状态。
4. 准确性
Flink可以保证数据处理的准确性。
Flink应用场景
Flink应用场景主要分为五类:
1.在线系统
实时计算各种数据指标,并利用实时结果快速调整在线系统的相关策略,并将其应用于内容分发和智能推送领域。
举例:淘宝双十一实时战报大屏采用流式计算获取实时结果,直接推送到前端应用。
2、监测预警
实时监控和分析系统和用户行为,及时发现危险行为,包括基于规则的警报。
3.数据分析
数据分析任务需要从原始数据中提取有价值的信息和指标以进行实时输出,例如通信网络的质量监控。
4.实时报告
实时采集、处理、流式数据存储,以及各种业务和客户指标的实时监控和展示,使数据库操作实时化。
5. 数据管道应用
数据管道允许您监视文件系统目录中的新文件并将该数据写入事件日志。其他应用程序可能包括将事件流具体化到数据库中或逐步构建和优化查询索引,例如用于电子商务中的连续处理。ETL。
Flink架构
Flink架构(如下图所示):
Flink架构主要体现四层:
1、应用层
应用层是使用Flink的最顶层,定义了数据源、转换操作、输出操作等Flink作业。
Flink 支持多种类型的数据源,包括本地文件、Kafka、Hadoop HDFS 等,并提供了许多内置的数据转换和输出操作。
2.API层
API层提供了Flink的核心功能,定义了数据流、状态、窗口等基本数据流概念和操作。
Flink 提供了两个API:DataStream API 和DataSet API。
DataStream API 用于处理流式数据,DataSet API 用于处理有限的数据集。
运行时层是Flink 的核心组件,负责运行您的应用程序。
Flink 将您的应用程序转换为数据流图,并将其分发到集群中的任务管理器来执行。
任务管理器负责将任务划分为子任务,并将子任务分配到特定的任务槽中执行。
4.分布式存储层
分布式存储层是Flink的数据存储组件,支持将数据存储在内存和磁盘中。
它还提供高级数据管理功能,例如状态后端、保存点和检查点。
Flink 支持多种存储后端,包括RocksDB、Hadoop HDFS 等。
Flink下载
您必须先安装Java 8 或Java 11,然后才能运行Flink。使用以下命令检查Java 是否安装正确:
命令:
java -version 如果看到以下JDK 版本信息:
Java 版本“1.8.0”表示Java 已安装,您可以开始下载Flink。
$ wget https://archive.apache.org/dist/flink/flink-1.15.3/flink-1.15.3-bin-scala_2.12.tgz
Flink安装
安装Flink 主要包括以下步骤:
1.眨眼减压
命令:
$ tar xzf flink-1.15.3-bin-scala_2.12.tgz2.Flink 设置
进入Flink目录,修改配置文件。
运行$ cd flink-1.15.3 修改配置文件。
$ vim conf/flink-conf.yaml 配置地址:将localhost改为具体IP地址
rest.address: xxx.xxx.xxx.xxxrest.bind-address: xxx.xxx.xxx.xxx3.Flink启动
Flink 附带了一个bash 脚本,您可以使用它来启动本地集群。
启动命令:
bin/start-cluster.sh 启动提示:
启动集群。在主机上启动独立会话守护程序。启动成功后,您可以访问Flink的Web UI。
http://上配置的ip:8081/访问地址如下图所示。
出现如上界面,说明Flink已经安装成功。
Flink使用示例
Flink支持流处理,包括数据流的实时处理,可以进行数据转换、聚合、计算等操作。
下面是一个简单的Flink 流示例,它在5 秒窗口内对来自Web 套接字的单词进行计数。
一个例子是:
公共类WindowWordCount { 公共静态void main(String[] args) 抛出异常{ StreamExecutionEnvironment env=StreamExecutionEnvironment.getDataStreamTuple2String, Integer dataStream=env .socketTextStream('localhost', 9999) 。 keyBy(value - value.f0) .window(TumbleProcessingTimeWindows.of(Time.seconds(5))) .sum(1); env.execute('Window WordCount');实现FlatMapFunctionString, Tuple2String, Integer { @Override public void flatMap(String text, CollectorTuple2String, Integer out) throws Exception { for (String word: text.split(' ')) { out.collect(new Tuple2String, Integer(word, 1) ); 以上是Flink,详细的Flink 教程,详细讲解了Flink 的架构、原理和使用方法。
本文收录于mikechen的30万+字原文《阿里架构师进阶专题合集》。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。