大数据流式计算 storm 基础
·
一、目标
- 分清流式计算和批量计算各自的适用场景
- 使用storm开发流式计算程序
- 知道流式计算中时效性和正确性的取舍
二、storm是什么?
开源的、分布式、流式计算系统
三、分布式起源
- 数据量大+增长太快–>分布式
- 把一个任务拆解给多个计算机去执行,对外只提供一个接口
- google发表了三篇论文:Google File System、Big Table、MapReduce,大神被启发开发出了Hadoop,Hadoop成为分布式的代表,形成Hadoop生态系统。
四、批量计算与流式计算的对比
流式计算+批量计算的API:推特的summing bird、谷歌的CloudDataFlow,接口均开源。
五、storm组件
主从结构:简单、高效,但主节点存在单点问题
对称结构:复杂、效率较低,但无单点问题,更加可靠
- Nimbus:主节点、只负责整体分配工作、不具体干活、老板
- Superior:从节点、直接管理干活的Worker、小组经理
- Worker:真正干活(Task)的进程
六、Storm作业提交流程
1.用户编写Storm Topolgy
2.使用Client提交Topology给Nimbus
3.Nimbus指派Tast给Supervisor
4.Supervisor为Task启动Worker
5.Worker执行Task
作业=Topology=拓扑
七、并发机制
- Task数量 :逻辑数量
- Worker数量 :进程数
- Executor数量:线程数
八、grouping分组方式
九、数据可靠性
分布式计算经常需要保证任意的worker挂掉之后,数据依然能够正确的处理。
故障处理:
Nimbus故障,换台机器重启即可
Superior挂掉,迁移其上Worker即可
Worker挂掉,迁移走数据能正确处理吗?
Spout数据保障:
如何保证数据正确的恢复?
如何保证数据不被重复计算?
- 不丢:Acker机制保证数据如果未成功处理,可以及时发现并通知Spout重发
- 不重:使用msgID去重
更多推荐
已为社区贡献1条内容
所有评论(0)