Storm
-
什么是实时(流式)计算?
1)信息时效性的要求越来越高,随着时间的流逝,数据也在流逝
2)目标是随着数据流的实时到达,实时处理
3)采集:Kafka/Flume/Scribe/TimeTunnel/Chukwa
计算:Storm/Spark/Samza/S4/Puma/JStorm
查询:Redis/Memcache/MongoDB/BerkeleyDB/HBase -
公司里为什么需要实时计算?
1)在数据持久性建模不满足现状的情况下,急需数据流的瞬时建模或计算处理
2)应用实例有金融服务、网络监控、电信数据管理、Web应用、生产制造、传感检测等
3)对于大型互联网网站来说具有重大实际意义,实时的数据计算和分析可以动态实时
地刷新用户访问数据,展示网站实时流量的变化情况,例如网站的访问PV/UV、用
户访问的内容、搜索的内容、页面服务的质量、带宽使用情况等 -
公司里为什么需要实时计算?
1)随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架 MapReduce 已经不能满足业务,大量的场景需要实时的数据处理结果来进行分析,决策。例如实时的用户推荐,在 618 这样的刺激环境下普通历史数据的推荐已经不能满足场景,就需要采集前分钟,甚至式前几秒的数据进行分析。实时计算适用于这种对历史数据依赖不强,短时间内变化较大的数据。用户行为分析,舆情分析,等等不断随环境和时间实时变化的数据都可能用到实时计算。 -
什么是Storm?
1)Storm是实时流计算的一员,具备了与Hadoop MapReduce不同角色的能力—低延迟、高可靠性和容错
2)2011年由Twitter开源,使用Clojure语言实现的。Lisp,JVM
3)支持多语言
4)Storm保证每个消息都会得到很快处理,一个小集群中,每秒可以处理数以百计的消息
5)Storm的处理速度非常惊人:经测试,每个节点每秒可以处理100万个数据元组 -
解决了哪些问题?
• 互联网广告实时流量统计
• 互联网数据质量实时监控
• 交通超速频发路段监控
• 交通基于GPS的实时路况分析
• 移动互联语音实时墙
• 运营商网络流量流向实时分析
• 中国移动小区基站预警 -
Storm架构是什么?
• Nimbus:负责资源分配和任务调度。
• Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。—通过配置文件设置当前supervisor上启动多少个worker。
• Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。
• Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。