flink

FLINK

1.第一代计算引擎:Hadoop。它将计算分为两个部分,Map和Reduce,不支持DAG框架

2.第二代计算引擎:Tez,Oozie。大多数还是批处理的任务

3.第三代计算引擎:以Spark为代表。Job内部的DAG支持(不跨越JOB)。强调实时计算

4.第四代的计算引擎: Flink的诞生,就被归在了第四代。这应该主要表现在Flink对流计算的支持,以及更一步的实时性上面。当然Flink也可以支持批处理的任务,以及DAG的运算。

5.Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink可以在所有常见的集群环境中运行,以强大的内存速度和任何规模执行计算。

1.无界流和有界流:任何类型的数据都是作为事件流产生的。如信用卡交易,传感器测量,机器日志或网站或移动应用程序上的用户交互,所有这些数据都作为流生成。因此数据都可以作为无界或有界流处理。

无界流有一个开始但没有定义结束。它们不会在生成时终止并提供数据。它们必须持续处理无界流,即必须在摄取事件后立即处理事件。无法等待所有输入数据到达,因为输入是无界的,并且在任何时间点都不会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)摄取事件,以便能够推断结果完整性。

有界流具有定义的开始和结束。可以在执行任何计算之前通过摄取所有数据来处理有界流。处理有界流不需要有序摄取,因为可以始终对有界数据集进行排序。有界流的处理也称为批处理。

Apache Flink擅长处理无界和有界数据集。精确控制时间和状态使Flink能够在无界流上运行任何类型的应用程序。有界流由算法和数据结构内部处理,这些算法和数据结构专门针对固定大小的数据集而设计,从而产生出色的性能。

2.随处部署应用程序

Apache Flink是一个分布式系统,需要计算资源才能执行应用程序。Flink与所有常见的集群资源管理器(如Hadoop,YARN,Apache Mesos 和Kubernetes)集成,但也可以设置为作为独立集群运行。Flink旨在很好的适应这些资源管理器。部署Flink应用程序时,Flink 会根据应用程序配置的并行性自动识别所需资源,并从资源管理器请求它们。如果发生故障,Flink会通过请求新资源来替换发生故障的容器。

3.以任何比例运行应用程序

Flink旨在以任何规模运行有状态流应用程序。应用程序可以并行化为数千个在集群中分布和同时执行的任务。

4.利用内存中的性能

Flink应用程序针对本地状态访问进行了优化。任务状态始终保留在内存中,或者,如果状态大小超过可用内存,则保存在访问高效的磁盘上数据结构中。因此,任务通过访问本地(通常是内存中)状态来执行所有计算,从而产生非常低的处理延迟。Flink通过定期和异步检查本地状态到持久存储来保证在出现故障时的一次状态一致性。

5. Flink的架构

Flink支持本地的快速迭代,以及一些环形的迭代任务。并且Flink可以定制化内存管理。在这点,如果要对比Flink和Spark的话,Flink并没有将内存完全交给应用层。 这也是为什么Spark相对于 Flink,更容易出现00M的原因(out of memory)

6.Flink和Hadoop有一个最重要的区别就是TaskManager之间是流(Stream) 。其次,Hadoop这一代中,只有Map和Reduce之间的Shuffle(洗牌,计算),而对Flink而言,可能是很多级并且在TaskManager内部和TaskManager之间都会有数据传递,而不像Hadoop,是固定的Map到Reduce。

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值