赞
踩
在程序计算当中,同一节点或者不同节点之间的数据的传递是实时传递还是延迟传递,这就引出了两个概念。其实在非大数据领域这两个概念所起的作用也是很有限,但是在大数据领域,处理上亿级别的时候,效果就很明显了。尤其是实时计算领域。Hadoop的缺陷就是高延迟,因此他不可能用于低延迟领域或者场景。
以为的理解,流处理就是不同节点之间数据的传输是实时传递。比如节点1计算完成之后,将数据存储到内存或者文件系统当中,然后节点2立马获取数据源进行计算,传递下一个节点。这个过程是节点2处理上一个数据之后立马处理传递进来的新的数据源!
上述就是流处理的基本模型。那么批处理呢?什么是批处理。很简单,我们将数据存储到内存或者文件系统,规定数据量或者处理时间的阈值,超过阈值就开始下一个节点处理。
当DSF文件系统设置存储数据为上一个系统处理完之后的10s内的数据,一旦超过这个时间段的数据,那么下一个节点就从DFS获取这些数据,开始处理。
Storm是专门流处理框架。而Apache Flink和Apache Spark则都可以处理。其实从纯正的角度来看,只有Flink两者都可以处理,虽然Spark Stream都可以处理,但是从设计的原理来看,Spark Stream并不是正真的流处理框架。因为Spark是将待处理的出具通过micro-batch进行细粒度切割,从而多个任务同时计算处理。给用户的感知就好像实时处理计算一样。
为什么Flink就可以做到正真的;流处理和批处理呢?这是因为Flink有一个处理时间的阈值的设置。当阈值为0就是流处理,不是0就是批处理。让我们可以灵活的对数据根据实际场景来处理。
上图就是一个简单的Flink的一个处理流程。应用到实际场景,比如人脸抓拍,和目标人员做相似度比对,超过阈值告警等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。