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

一.Storm的学习路线

  1.数据的操作方式

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

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

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

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

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

    两者的选用:

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

  2.Storm 的原始操作步骤

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

    ②需要对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只是简单的了解了,知道大概,更深层次还需要进一步的学习。大学在学习过程中遇到什么问题,欢迎一起来探讨。

storm学习路线指南的更多相关文章

  1. Linux学习路线指南

    转载的,感觉写的挺好的,我自己知识复制了下,忘记了转载地址,抱歉! Linux学习路线指南 很多同学接触Linux不多,对Linux平台的开发更是一无所知.而现在的趋势越来越表明,作为一个优秀的软件开 ...

  2. C# BS方向 该如何规划学习?【学习路线指南】

    C#学习路线指南 花费了几天时间整理了C#学习路线图,可以说是纯野生C#程序员成长路线规划,在这里分享下,希望可以帮助到想从事C#开发的同学们.本人阅历尚浅,有些知识点可能分享不正确,希望广大网友评论 ...

  3. Android学习路线指南

    看到这位大牛的博文,不禁得感概,我最近也遇到了很多问题,内心彷徨不堪,转载大牛这篇博文,是为了更好的勉励自己.原文地址在最后面. 前言 看到一篇文章中提到"最近几年国内的初级Android程 ...

  4. CTF学习路线指南(附刷题练习网址)

    PWN,Reverse:偏重对汇编,逆向的理解: Gypto:偏重对数学,算法的深入学习: Web:偏重对技巧沉淀,快速搜索能力的挑战: Mic:则更为复杂,所有与计算机安全挑战有关的都算在其中 常规 ...

  5. 经验总结:超详细的 Linux C/C++ 学习路线!大厂面试指南

    ❝ 文章每周持续更新,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ❞ 最近在知乎经常被邀请回答类似如何学习C++和C++后台开 ...

  6. 程序员大佬推荐的java学习路线

    作为我的第一篇博客,我第一个想到的就是在校时就看到的这篇文章.并且在之后的时间里自己都反复观看过,有时候这不单单是一篇学习路线,也是审视自己技术能力的里程碑,和激励自己的鞭挞绳. 先来个书籍清单: & ...

  7. 想了解Java后端学习路线?你只需要这一张图!

    前言 学习路线图往往是学习一样技术的入门指南.网上搜到的Java学习路线图也是一抓一大把. 今天我只选一张图,仅此一图,足以包罗Java后端技术的知识点.所谓不求最好,但求最全,学习Java后端的同学 ...

  8. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  9. Java Web 学习路线

    实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...

随机推荐

  1. SYN4104型 数字网同步时钟

    SYN4104型 数字网同步时钟 产品概述 SYN4104型数字网同步时钟是由西安同步电子科技有限公司精心设计.自行研发生产的一款高精度锁相时钟频率源,接收GPS信号,使恒温晶振输出频率同步于GPS卫 ...

  2. abp(net core)+easyui+efcore仓储系统——创建应用服务(五)

    abp(net core)+easyui+efcore仓储系统目录 abp(net core)+easyui+efcore仓储系统——ABP总体介绍(一) abp(net core)+easyui+e ...

  3. raft算法解析

    一.raft算法引入 在寻找一种易于理解的一致性算法的研究(In Search of an Understandable Consensus Algorithm-extended version) 论 ...

  4. 第六章 Fisco Bcos 多服务器分布式部署

    想了解相关区块链开发,技术提问,请加QQ群:538327407 前提概要 前面几章,我们通过单机部署,在单台服务器上搭建四个节点,完成Fisco Bcos 底层搭建,并完成相关合约开发.sdk 开发. ...

  5. JS 数据类型分析及字符串的方法

    1.js数据类型分析 (1)基础类型:string.number.boolean.null.undefined (2)引用类型:object-->json.array... 2.点运算  xxx ...

  6. 线性模型之LDA和PCA推导

    线性模型之LDA和PCA 线性判别分析LDA LDA是一种无监督学习的降维技术. 思想:投影后类内方差最小,类间方差最大,即期望同类实例投影后的协方差尽可能小,异类实例的投影后的类中心距离尽量大. 二 ...

  7. 分布式全局ID生成方案

    传统的单体架构的时候,我们基本是单库然后业务单表的结构.每个业务表的ID一般我们都是从1增,通过AUTO_INCREMENT=1设置自增起始值,但是在分布式服务架构模式下分库分表的设计,使得多个库或多 ...

  8. JavaScript 之有趣的函数(函数声明、调用、预解析、作用域)

    前言:“函数是对象,函数名是指针.”,函数名仅仅是指向函数的指针,与其他包含函数指针的变量没有什么区别,话句话说,一个函数可能有多个名字. -1.函数声明,function+函数名称.调用方法:函数名 ...

  9. HDU 4819:Mosaic(线段树套线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=4819 题意:给出一个矩阵,然后q个询问,每个询问有a,b,c,代表(a,b)这个点上下左右c/2的矩形区域内的( ...

  10. 玲珑OJ 1082:XJT Loves Boggle(爆搜)

    http://www.ifrog.cc/acm/problem/1082 题意:给出的单词要在3*3矩阵里面相邻连续(相邻包括对角),如果不行就输出0,如果可行就输出对应长度的分数. 思路:爆搜,但是 ...