【观察】常用的流式框架(二)-- Spark与Flink
Spark由加州大学伯克利分校于2009年开发,第二年开源,2014年成为Apache顶级项目。作为MapReduce的继任者,Spark可以提供高水准API(如RDD--可恢复分布式数据集;Dstream--离散无序的RDD),其社区在2015年就有超过1000名贡献者,知名的用户包括亚马逊、eBay、雅虎、IBM、百度等。 2013年Spark Streaming成为Spark的核心,严格意义上说它是跑微批量(Micro-Batching)的架构,所以会有几秒钟的延时,但Spark Streaming支持丰富的状态数据、无重复传输并且扩展性极佳。一般地,流式数据经过Spark Streaming被切分成微批量,再由Spark引擎处理。
Spark的一个应用就是统计网页访问量,可以用Python调取Spark Streming的接口,首先我们先读取服务端的站点地址(pageViews)并定义读取间隔,然后根据URL做Map算法将数据归类(ones--即每一个访问事件被定义为一个最小元素),最后使用Reduce算法将不同URL的GET事件聚合统计出浏览量。
最后登场的是Flink,它于2010年由柏林工业大学、柏林洪堡大学和德国波茨坦普拉特拉学院联合开发,起初名字叫Stratosphere,在2014年进入Apache孵化计划并更名为Flink,2015年成为Apache顶级项目。Flink作为原生的流处理器,延时小于100毫秒;可以为应用提供流式或批量的虚拟API;支持数据表/SQL,CEP,机器学习,Gelly等多种特征库;目前的用户包括阿里巴巴、爱立信、奥拓,ResearchGate,Zalando等。 Flink的架构将批量应用与流式应用在数据层汇聚,这个数据层可以分布式地部署在搭在Hadoop Yarn、Apache Mesos和Kubernetes上甚至可以单独作为集群搭建,无高可用之虞。此外Flink还提供多种API和库接口(有流式的及批量优化的)供第三方接入开发(Java/Scala/Python)
Flink适合支持日事务处理量达几万亿条的应用、需要维护TB级状态数据的应用及有数千节点的应用,在处理大型状态数据的时候,Flink会将状态数据按时序分窗口按批次存储,恢复的时候也会从分布式文件系统种按批次恢复。
当有任意Flink节点宕机时,系统是如何实现高可用的呢?Flink会将数据流按顺序切分成多个分区(Partition),然后为每个分区计算检查点(CheckPoints),在恢复节点时,只需重置检查点状态,然后将此检查点后的数据由别的节点上重播入宕机节点即可。
介绍完了五种(Storm和Storm Trident算作两种,尽管)框架,我们来比较下他们的优劣势。
对于数据的严密性,Storm和Samza都会检查至少一次;延时性角度Storm远小于100ms表现最优;但对于状态数据Storm和Trident只能处理小型数据,不及Samza、Spark Streaming和Flink;严格意义上说Trident和Spark Streaming是微批量的处理方式;由于Samza没有数据缓冲区,因此就不存在反压问题;除Storm外,另外四种架构都是能保证数据时序的;延展性方面,Strom、Trident和Spark Streaming表现更优,可以在运行时直接添加新的节点。 根据在雅虎研究所的测试报告显示:“Storm和Flink的处理延时最低,Spark支持高的数据吞吐量,但代价就是会有较大延时。” 除了这五大体系之外,还有一些非主流的流式处理系统,比如的google的Dataflow,IBM的InfoSphere Streams等,这里就不一一赘述了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【观察】常用的流式框架(一)-- Storm与Samza
相较数据处理的两大阵营,批量处理(Batch)和流式处理(Stream):批量处理比较经济,且只对全量数据进行处理;但数据延时较大,因为只有跑批之后数据才提供给应用系统。 流式处理延时小,但由于24小时运作,因此不许有宕机时间,并且由于只处理增量数据,所以难免会遗漏部分数据的处理。 在两相权宜之下,演化出了以下两种混合架构: Lambda架构:有流式处理以提供低延时的数据访问,同时定期跑批以覆盖流式处理中可能带来的不完整的数据。但这会造成企业中有两套代码库。 Kappa架构:在原有流式处理的管道中加入数据保留(Retention)以减小数据未处理的风险,但这就约束了使用者只能在处理中加入增量算法,不然无法识别新旧数据。 流式处理可以集成一些简单的算法,他们体量很小在完成算法的同时又不会影响到数据的实时性,例如: 数据的过滤与转换; 数据的分类; 简单的数学计算(求和、计数、求平均等)及逻辑运算 滑动窗口大小设定(比如只对过去5分钟的数据做运算等) Twitter有业界知名的流式处理框架(从Yahoo学来的),它需要定期汇报给客户广告投放的效果,怎么做呢?首先从Kafka中提取广告跟踪的...
- 下一篇
03月21日云栖号头条:阿里张勇:抓住数字新基建的机遇
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯: 3月20日,《人民日报》第5版刊发阿里巴巴董事会主席兼首席执行官张勇的署名文章《新型基础设施建设拓展创新发展空间》,呼吁抓住数字新基建的机遇;国家卫健委发布关于进一步推进分区分级恢复正常医疗服务工作的通知,通知指出,根据本地区划分的低风险、中风险、高风险等级,差异化推进医疗服务恢复工作。 一起来看最新的资讯: 阿里张勇:抓住数字新基建的机遇 阿里巴巴董事会主席兼首席执行官张勇在《人民日报》发表署名文章《新型基础设施建设拓展创新发展空间》,他认为,数字基建将为提升中小企业竞争力、消费驱动经济增长、创造更多就业机会等方面提供坚实支撑,同时,数字基建还将成为各地政府提升现代化治理能力的有力抓手。张勇表示,“新基建”作为新兴产业,一端连着巨大的投资与需求,另一端连着不断升级的消费市场,必将成为未来中国经济社会繁荣发展的重要支撑。 广电总局:分阶段分类别推进广电5G技术标准体系建设工作 广电总局副局长、党组成员朱咏雷研究部...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主