技术分享

最火爆的大数据计算引擎——Flink

时至今日,大数据生态已经日趋完善和庞大,要说当前最火爆的大数据技术是什么?Flink称第二的话,没谁敢称第一。阿里巴巴已经将Flink做为统一的通用大数据引擎,几乎所有阿里子公司都在用Flink实时计算平台,其重要性由此可见一斑。
废话不多说,先来看看Flink到底是哪路神仙。
Apache Flink是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算。可部署在各种集群环境,对各种大小的数据规模进行快速计算。
flink-01.jpg
Flink技术初接触
上图大致可以分为三块内容:左边为数据输入、右边为数据输出、中间为Flink数据处理。
Flink支持消息队列的Events(支持实时的事件)的输入,上游源源不断产生数据放入消息队列,Flink不断消费、处理消息队列中的数据,处理完成之后数据写入下游系统,这个过程是不断持续的进行。
数据源:1. Clicks:即点击流,比如打开搜狐网站,搜狐网站页面上埋有很多数据采集点或者探针,当用户点击搜狐页面的时候,它会采集用户点击行为的详细信息,这些用户的点击行为产生的数据流我们称为点击流。

flink-02.jpg


2. Logs:比如web应用运行过程中产生的错误日志信息,源源不断发送到消息队列中,后续Flink处理为运维部门提供监控依据
3. IOT:即物联网,英文全称为Internet of things。物联网的终端设备,比如华为手环、小米手环,源源不断的产生数据写入消息队列,后续Flink处理提供健康报告。
4. Transactions:即交易数据。比如各种电商平台用户下单,这个数据源源不断写入消息队列,后续Flink处理为用户提供购买相关实时服务。
数据输入系统:Flink既支持实时(Real-time)流处理,又支持批处理。实时流消息系统,比如Kafka。批处理系统有很多,DataBase(比如传统MySQL、Oracle数据库),KV-Store(比如HBase、MongoDB数据库),File System(比如本地文件系统、分布式文件系统HDFS)。
Flink数据处理:Flink在数据处理过程中,资源管理调度可以使用K8s(Kubernetes 简称K8s,是Google开源的一个容器编排引擎)、YARN、Mesos,中间数据存储可以使用HDFS、S3、NFS等,Flink详细处理过程后续章节详细讲解。
数据输出:Flink可以将处理后的数据输出下游的应用(Application),也可以将处理过后的数据写入消息队列(比如Kafka),还可以将处理后的输入写入Database、File System和KV-Store。
大家需要注意的是,Flink计算平台运行在开源的Hadoop集群之上。采用Hadoop的YARN做为资源管理调度,以 HDFS作为数据存储。因此,Flink可以和开源大数据框架Hadoop无缝对接
上来就写技术,有的同学是不是有点儿脑瓜疼?希望不会浇灭了大家的学习热情。我们还是来了解一下Flink在大数据生态中的位置吧。
目前开源大数据计算引擎有很多的选择,比如流处理有Storm、Samza、Flink、Spark等,批处理有Spark、Hive、Pig、Flink等。既支持流处理又支持批处理的计算引擎只有Apache Flink和Apache Spark。
虽然Spark和Flink都支持流计算,但Spark是基于批来模拟流的计算,而Flink则完全相反,它采用的是基于流计算来模拟批计算。从技术的长远发展来看,Spark用批来模拟流有一定的技术局限性,并且这个局限性可能很难突破。而Flink基于流来模拟批,在技术上有更好的扩展性。所以大家把Flink称之为下一代大数据计算引擎。
从长远发展来看,阿里已经使用Flink作为统一的通用的大数据引擎,并投入了大量的人力、财力、物力。目前阿里巴巴所有的业务,包括阿里巴巴所有子公司都采用了基于Flink搭建的实时计算平台。其实青睐Flink的何止阿里,国内很多大的互联网公司的技术大拿都被Flink技术征服。
flink-03.jpg
Flink技术征服N多公司
限于篇幅,今天初步介绍一下Flink大数据计算引擎的基本情况,