- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【技术】从Storm和Spark 学习流式实时分布式计算的设计
2014-08-10 软件定义世界(SDX)
???新用户请点击标题下【软件定义世界(SDX)】快捷关注
?【技术】从Storm和Spark 学习流式实时分布式计算的设计
文:DDYY、郑磊等,转载于知乎
背景
最近我在做流式实时分布式计算系统的架构设计,而正好又要参见CSDN博文大赛的决赛。本来想就写Spark源码分析的文章吧。但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量不够。因此,我将最近一直在做的系统架构的思路整理出来,形成此文。为什么要参考Storm和Spark,因为没有参照效果可能不会太好,尤其是对于Storm和Spark由了解的同学来说,可能通过对比,更能体会到每个具体实现背后的意义。
本文对流式系统出现的背景,特点,数据HA,服务HA,节点间和计算逻辑间的消息传递,存储模型,计算模型,与生产环境融合都有涉及。希望对大家的工作和学习有所帮助。
正文开始:
流式实时分布式计算系统在互联网公司占有举足轻重的地位,尤其在在线和近线的海量数据处理上。在线系统负责处理在线请求,因此低延时高可靠是核心指标。在线系统是互联网公司的核心,系统的好坏直接影响了流量,而流量对互联网公司来说意味着一切。在线系统使用的数据是来自于后台的计算系统产生的。
对于在线(区别于响应互联网用户请求的在线系统,这个在线系统主要是内部使用的,也就是说并不直接服务于互联网用户)/近线系统来说,处理的是线上产生的数据,比如在线系统产生的日志,记录用户行为的数据库等,因此近线系统也需要低延时高可靠的处理海量数据。对于那些时效性很强的数据,比如新闻热点,电商的促销,微博热词等都需要在很短的时间内完成数据处理以供在线系统使用。
而处理这些海量数据的,就是实时流式计算系统。Spark是实时计算的系统,支持流式计算,批处理和实时查询。它使用一个通用的stack解决了很多问题,毕竟任何公司都想要Unified的平台去处理遇到的问题,可以减少开发和维护的人力成本和部署平台的物力成本。除了Spark,流式计算系统最有名的就是Twitter的Storm和Yahoo的S4(其实Spark的流式计算还是要弱于Storm的,个人认为互联网公司对于Storm的部署还是多于Spark的)。
本文主要探讨流式计算系统的设计要点,并且通过对Spark和Storm的实现来给出实例。通过对于系统设计要点的梳理,也可以帮助我们更好的学习这些系统的实现。最后,看一下国内互联网公司对于这些流式系统的应用(仅限于公开发表的内容)。
流式计算的背景和特点
现在很多公司每天都会产生数以TB级的大数据,如何对这些数据进行挖掘,分析成了很重要的课题。比如:
电子商务:需要处理并且挖掘用户行为产生的数据,产生推荐,从而带来更多的流量和收益。最理想的推荐就是根据兴趣推荐给用户本来不需要的东西!而每天处理海量的用户数据,需要一个低延时高可靠的实时流式分布式计算系统。
新闻聚合:新闻时效性非常重要,如果在一个重大事情发生后能够实时的推荐给用户,那么肯定能增大用户粘性,带来可观的流量。
社交网站:大家每天都会去社交网站是为了看看现在发生了什么,周围人在做什么。流式计算可以把用户关注的热点聚合,实时反馈给用户,从而达到一个圈子的聚合效果。
交通监管部门:每个城市的交通监管部门每天都要产生海量的视频数据,这些视频数据也是以流的形式源源不断的输系统中。实时流式计算系统需要以最快的速度来处理这些数据。
数据挖掘和机器学习:它们实际上是互联网公司内部使用的系统,主要为线上服务提供数据支撑。它们可以说是互联网公司的最核心的平台之一。系统的效率是挖掘的关键,理想条件下就是每天产生的海量数据都能得到有效处理,对于原来的数据进行全量更新。
大型集群的监控:自动化运维很重要,集群监控的实时预警机制也非常重要,而流式系统对于日志的实时处理,往往是监控系统的关键。
等等。
流式实时分布式计算系统就是要解决上述问题的。这些系统的共同特征是什么?
非常方便的运行用户编写的计算逻辑:就如Hadoop定义了Map和Reduce的原语一样,这些系统也需要让用户关注与数据处理的具体逻辑上,他们不应该也不需要去了解这些usder defined codes是如何在分布式系统上运转起来的。因为他们仅仅关注与数据处理的逻辑,因此可以极大的提高效率。而且应该尽量不要限制编程语言,毕竟不同的公司甚至同一公司的不同部门使用的语言可能是千差万别的。支持多语言无疑可以抢占更多的用户。
Scale-out的设计:分布式系统天生就是scale-out的。
无数据丢失:系统需要保证无数据丢失,这也是系统高可用性的保证。系统为了无数据丢失,需要在数据处理失败的时候选择另外的执行路径
您可能关注的文档
- “长方体和正方体的复习课”教学设计与反思.doc
- 《Website Design》整体教学设计.doc
- 《XML》上机实践内容.docx
- 《中国石拱桥》教学设计(章发栋).doc
- 《主题酒店公寓营销推广策划案》(9页).doc
- 《事业单位人事管理转型与升级:养老保险并轨政策要点解读、绩效考核与绩效工资设计、劳务派遣用工与多元化用工管理》专题培训班.docx
- 《同音星空》项目设计报告-WebApp(2017.8.28).docx
- 《商业空间设计SHOPS NOW 国外购物 服装品牌商店设计》-布拉托•C.(Carles Broto).docx
- 《如何成为室内家庭中的设计签单高手》.doc
- 《学习与创业》第7周:MOOC学习浪潮 及 第一个实践作业要求.doc
文档评论(0)