Storm_应用设计

  1. 理解Storm

    ① storm中的spout、bolt都可以是并行的,它将逻辑上不相互依赖的同一层处理关系复制成多份同时执行,并且,多个执行间的相互协调由storm框架本身提供。

    ② 对于前后依赖的层级间关系,storm提供的强关联性保证只有前面的处理顺利执行完毕,后面的逻辑才能得到执行。

    ③ Storm的实时性一方面源于不对历史数据作过多关注,也正因此,storm作为数据处理框架不提供对历史数据的保存。当然,通过保存tuple值到指定大小queue中,storm可以进行近期批量提交处理,即作为批量和实时的折衷。而批量的大小,取决于内存的大小。

    ④ 为保证storm实时处理,计算逻辑应尽量只依赖于当前数据,且不宜在处理过程中出现过多的交互,如数据的入库出库。变化应尽量只出现在数据本身,而并非交互。当出现交互时,尽量将交互次数降低,例如,通过批量数据与数据库进行交互。

    ⑤ 较好的例子是:Kafka——storm——Kafka,源数据不断的写入到Kafka,storm spout消费者组多点消费以提高并行度、bolt视逻辑复杂度以合适的并行度进行处理,最后由storm bolt将处理后的数据写入Kafka。在此,Kafka充当了两次数据缓冲的作用。第一次缓冲,解决了源数据写入和storm消费之间的耦合和速度不匹配;第二次缓冲解决了storm数据处理和最终数据写入数据库之间的耦合和速度不匹配。

    ⑥ Kafka——storm——Kafka模式,将处理逻辑中的强依赖关系锁在storm topology中;将处理逻辑中的弱依赖关系锁在storm<——>Kafka之间,具体表现为:storm topology1从Kafka topic1中获取源数据进行处理并将结果写入Kafka topic2,storm topology2从Kafka topic2中获取topology1处理的结果进行进一步处理并将结果写入Kafka topic3,以此类推。此时,可根据各topology处理逻辑的复杂度提高相应的并行度,同时,由于Kafka的缓冲作用,弱依赖关系中的某一环节可容忍一定时间的失败,最后,Kafka topic的广播消费可使得数据被同时批量写入数据库而不影响storm处理速度。

    ⑦ Kafka——storm——Kafka模式同时也解耦了不同topology之间的弱依赖关系,一方面Kafka阻塞监听式的消费保证了弱依赖关系下前后处理的实时性,另一方面,保证了各处理逻辑的独立性。

    ⑧ Storm特征分析

    适用场景    不依赖于历史数据的计算
    数据量      每一条数据单独处理或小批量处理(具体视内存大小而定)
    逻辑关系的处理     强依赖由topology内部控制,弱依赖由Kafka解耦
    优势          因为处理的是实时数据,因此保持了计算的实时性
    
  2. Storm与Hadoop,实时与离线处理:以日志分析为例

    在网站或者应用的各个页面的事件中嵌入Tracker 系统的API ,设置一定的策略发送到日志服务器,然后再同步到Kafka 等消息队列。对于需要实时日志的应用, 一般通过Storm 等流式计算框架从消息队列中拉取消息,完成相关的过滤和计算, 最后存到HBase 、MySQL 等数据库中;对于实时性要求不高的应用,消息队列中的日志消息通过Cloudera 的Flume 系统Sink 到HDFS 中, 然后一般通过ETL 、Hive 或者批处理的Hadoop 作业等抽取到HBase、MySQL 等数据库中。当然,日志服务器的数据也可以通过Flume 系统Sink 到Kafka等消息队列中,供Storm 实时处理消息。

  3. 以Kafka作为数据缓冲或称数据暂存区的意义

    ① 数据源的产生往往是基于“推”的模式向其他分析程序传递数据,而storm是主动抓取数据进行分析处理,属于“拉”。而Kafka则同时支持了“推”和“拉”。
    ② 即使storm实现了一个接受“推”的模型(如在storm中增加内存队列等),当数据源突然增加时有可能导致storm上应用并发度不足而引起其他状态,此时相当于Dos攻击

  4. Storm topology设计

    ① 如果没有依赖关系,即多个bolt同时从spout获取数据并同时开始处理,此时,需要所有bolt处理结束才表示该tuple处理结束。这样的场景,对于多个bolt处理时间相差较大的逻辑,将浪费topology的处理时间。即使处理时间相当,多个处理逻辑将加大topology失败的风险,同时也不利于调试。建议将没有依赖关系的逻辑分离,由单独的topology进行处理。

    ② 当多个bolt处理逻辑具有依赖关系时,例如,bolt2需要将bolt1(过滤数据)处理的结果数据进行合并之后才能作进一步的处理,并且bolt1处理的结果数据只用于bolt2的处理。此时,将两个bolt设置为一个topology是合适的。如果bolt1和bolt处理时间上相差很大,应考虑重新设置处理逻辑。

    ③ 当多个bolt处理逻辑具有依赖关系且bolt1处理的结果数据存在多个使用场景时,可将该处理结果缓存至Kafka,只将耗时与bolt1相当的bolt2组成同一个topology。对于耗时过多的bolt可考虑以单独的topology从Kafka进行消费处理。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计,皆可应用在项目、毕业设计、课程设计、期末/期/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值