zoukankan      html  css  js  c++  java
  • storm学习路线指南

    关于对storm的介绍已经有很多了,我这里不做过多的介绍,我介绍一下我自己的学习路线,希望能帮助一些造轮子的同学走一些捷径,毕竟我也是站在前人总结整理的基础上学习了,如果有不足之处,还请大家不要喷我。

    一.Storm的学习路线

      1.数据的操作方式

        storm对数据的操作有2种方式,一种是原始的spout bolt topology 操作(storm入门demo),另一种是trident操作(storm trident 的介绍与使用)

        我们要掌握这2种数据的操作方式,原始的操作是storm本身底层对数据的操作,trident是将原始操作进行了抽象、封装,其底层还是靠原始操作完成的。

        storm的原始操作与trident操作区别:

          原始操作只是简单的对数据流进行了处理,中间不带有任务事务性的操作,以及是否保证数据确保被处理的问题,而trident是对原始操作更高的抽象,不用了再写

          spoutbolt,而是添加了聚合、DRPC、事务、数据持久化(stateQuery),以及确保了数据如何被处理的操作,在整体性能的稳定性上更稳定、更可靠。

        两者的选用:

          如果对性能的要求比较高,可以采用原始的操作,如果对性能的操作要求不是特别高,希望拥有可靠性、稳定性,可以采用trident操作。

      2.Storm 的原始操作步骤

        ①topologyspoutbolt 的编写。(编写各个类的实现,以及数据源输入的编写)

        需要对topology的并行度进行设置。(也就是你需要让Strom按多少个进程、多少个线程、多少个task来处理数据)

        ③对数据流的流向进行设置.(分组)

          (设置完并行度后需要对数据流的流向进行设置,你是按流中数据的某个字段来区分不同的流,还是按 随机分组、全局分组、无分组、直接分组、自定义分组等等)

        ④数据源输出的设置 (对数据处理完后是否要存到DB、file、消息中间件等等操作)

      3.Trident 操作

        ①topology的编写、以及各种function的编写

        ②需要对topology的并行度进行设置。

        ③对数据流向进行设置(分组)

        ④对数据流中的数据进行stateQuery操作(向流中添加数据、查询数据操作)

        ⑤数据源输出的设置 (对数据处理完后是否要存到DB、file、消息中间件等等操作)

        ⑥是否设置成DRPC远程调用接口

        在trident中不需要编写bolt,但是需要编写各类function来实现对数据的各种操作。

      4.事务

        在你实现了以上操作后,你需要对trident做进一步的了解,trident是如何实现batch事务的,如何保证强一致性的,如何保证数据被处理等等这些关键的实现原理,以及storm的原始操作,它是如何保证担保数据被处理的,这都需要我们做深一层次的学习和掌握,只有修炼好了内功,才能有更好的提高。

      

    二.与Storm集成的架构学习 

      1.整体介绍

        storm是实时处理数据的框架,强烈不建议读file,你想一下,你往一个文件里写数据,再把写入的数据读出来,这不是多此一举,不仅影响性能,整体的架构设计也不合理,因此需要一些数据采集框架去采集数据,然后交给storm来处理,storm处理完后,你可以把它写入任何你想要保存的地方。

      2.与storm集成的框架

        ①filebeat(日志采集工具) + logstash(日志采集处理) + storm  ==> db、file、kafka 

          如果采集的日志量比较大可以在filebeat 和logsash中间添加redis 集群 或者kafka集群,以起到缓冲的作用

        ②filebeat(日志采集工具) +redis/kafka + logstash(日志采集处理) + storm  ==> db、file、kafka   

          在采集过程中可以通过添加中间层来缓冲logstash 的压力,让logstash平稳有序的将数据发送给storm进行处理

        ③flume + kafka + storm ==> db、file、kafka

           由于本人没有学习过flume,只是简单的了解过,也是日志采集的一种框架,这个需要大家根据个人情况学习掌握

        本人用了将近二个月的时间算是将storm学习了一遍,至于掌握的程度只能说算是一般,对一些概念、trident 函数的编写、reduce操作、stataQuery、transaction只是简单的了解了,知道大概,更深层次还需要进一步的学习。大学在学习过程中遇到什么问题,欢迎一起来探讨。

  • 相关阅读:
    arcgis 图幅结合图表工具
    Geoprocessor clip
    Spring Boot总结,核心功能,优缺点
    代码下载python 简体和繁体的转换
    电话错误fmxl Missing handler script
    nullnull使用ps绘制像word里面的箭头
    nullnulljava把过滤掉的 % 号拿回来
    问题总结两天来两场实习面试(中科创达、华为)
    模板拷贝【便利贴】Struts性能优化
    匹配优先级Spring攻略学习笔记(3.04)指定Aspect优先级
  • 原文地址:https://www.cnblogs.com/MrRightZhao/p/11251252.html
Copyright © 2011-2022 走看看