Storm学习笔记(1) - 初识实时流处理Storm

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bingdianone/article/details/85257846

Strom是什么

为什么使用storm

Apache Storm是一个免费的开源分布式实时计算系统。Storm使得可靠地处理无边界的数据流变得非常容易,就像Hadoop处理批处理一样,能够实时处理数据流。Storm很简单,可以和任何编程语言一起使用,使用起来很有趣!

Storm有很多用例:实时分析、在线机器学习、连续计算、分布式RPC、ETL等等。Storm非常快**:一个基准测试记录了它在每个节点每秒处理超过一百万元组**。它是可伸缩的,容错的,保证您的数据都被处理,并且易于设置和操作

Storm集成了您已经使用的排队和数据库技术。Storm拓扑使用数据流,并以任意复杂的方式处理这些流,当你需要的时候,可以在计算的每个阶段之间重新划分流。

小结:Strom能实现高频数据和大规模数据的实时处理

Storm发展历史

从Twitter说起

Storm产生于BackType(被Twitter收购)公司

storm开发时的需求:大数据的实时处理

自己来实现实时系统,要考虑的因素:

  1. 健壮性
  2. 扩展性/分布式
  3. 如何使得数据不丢失,不重复
  4. 高性能、低延时

Storm的成长

Storm开源
2011.9
Apache
底层源码Clojure 开发语言Java

Storm技术网站

  1. 官网: storm.apache.org
  2. GitHub: github.com/apache/storm
  3. wiki: https://en.wikipedia.org/wiki/Storm (event_processor)
    在这里插入图片描述

Storm和Hadoop的区别

Storm vs Hadoop

  • 数据源/处理领域
    Hadoop批处理/mapreduce;Storm实时处理/Spout Bolt
  • 处理过程
    • Hadoop: Map Reduce
    • Storm: Spout Bolt
  • 进程是否结束
    Hadoop进程结束后会停掉;Storm进程是实时流7*24小时运行
  • 处理速度
    Storm实时必须快速处理数据;Hadoop离线速度无所谓
  • 使用场景
    实时和离线

Storm和Spark Streaming的区别

在这里插入图片描述
在这里插入图片描述
上半部分是从大方向来说sparkstreaming;下半部分是从内部分析saprkstreaming;它是把数据分为一个个batch交给engine来处理的;严格来讲它并不是实时流计算。

storm延迟是毫秒级别;虽然sparkstreaming目前也是可以设置秒级别,但是它需要设置微批的时间;到达时间周期后才会执行。

spark是一栈式的计算框架,解决各种环境各种需求,比如数据离线处理和实时处理,结果出来后又进行图计算和机器学习,spark可以在数据不落地的情况下进行下一步。而storm处理过的数据需要先落地再加入其他机器学习和图计算的框架工具。

实时要求很高,并且数据出来后没有其他操作,建议使用storm;实时要求不高可以忍受一两秒,或者数据出来后有其他操作如机器学习和图计,建议使用spark。

Storm的优势

编程模型:简易的接口,可以让java工程师快速上手
扩展性:分布式处理可横向扩展
可靠性:数据源发出的每一条数据都会进行处理,不会丢失;节点挂掉可以自动进行切换
容错性:硬件问题导致机器宕掉对应用程序没影响

Storm当前现状与发展趋势

发展趋势
1) 社区的发展、活跃度
2) 企业的需求
3) 大数据相关的大会, Storm主题的数量上升
4) 互联网 JStorm(阿里)

猜你喜欢

转载自blog.csdn.net/bingdianone/article/details/85257846