频道栏目
首页 > 网络 > 云计算 > 正文

Storm学习总结,离线计算是什么?

2017-11-14 11:08:32      个评论    来源:长胖的wo一定特美的博客  
收藏   我要投稿

有一个星期没有更新啦,说明是好事,至少开始做项目了,把所有的知识点放在项目上,果然会让人成长的更快;项目的隐私度比较高就不公开了~

今天总结一下新的内容,学习都有一个过程:从菜鸟到鸟人到大神;所以fighting就对了!

1.离线计算是什么?

离线计算:批量获取数据,批量传输数据,周期性批量计算数据,数据展示

代表技术:sqoop批量导入数据,HDFS批量存储数据,MapReduce批量计算数据,Hive批量计算数据

2.流式计算是什么??

流式计算:数据实时产生,数据实时传输,数据实时计算,实时展示

代表技术:Flume实时获取数据,kafka/metaQ实时数据存储,Storm/JStorm实时数据计算,Redis实时结果缓存,持久化存储(mysql)

Storm是什么??

Flume实时采集,低延迟

kafka消息队列,低延迟

storm实时计算,低延迟

Redis实时存储,低延迟

Storm用来实时处理数据,特点:低延迟,高可用,分布式,可扩展,数据不丢失

Storm与Hadoop的区别?

1.Storm用来实时计算,Hadoop用来离线计算

2.Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批

3.Storm的数据通过网站传输进来;Hadoop的数据保存在磁盘中

这里写图片描述

nimbus:负责资源分配和任务调度

Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程

通过配置文件设置当前supervisor上启动多少个Worker

Worker:运行具体处理组件逻辑的进程;worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务

Task:worker中每一个spout/bolt的线程称为一个task.不同的spout/bolt的task可能会共享一个物理线程,该线程称为executor

Storm编程:

1.Topology:Storm中运行的一个实时应用程序的名称(拓扑)

2.spout:在一个topology中获取源数据流的组件

通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据

3.Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作

4.tuple:一次信息传递的基本单元,理解为一组消息就是一个tuple

5.stream:表示数据的流向

流式计算一般架构图:

网站系统 ← Flume集群 → kafka集群 → storm集群 → Redis集群

1.其中flume用来获取数据

2.kafka用来临时保存数据

3.storm用来计算数据

4.Redis是个内存数据库,用来保存数据

Storm集群部署:

1.下载安装包

2.解压安装包

tar -zxvf apache-storm-0.9.6.tar.gz -C /usr/local

mv apache-storm-0.9.6.tar.gz storm

vi /usr/local/storm/conf/storm.yaml

输入内容:

#指定storm使用的zk集群

storm.zookeeper.servers:

- "minimaster"

- "miniSlave1"

- "miniSlave2"

#指定storm集群中的nimbus节点所在的服务器

nimbus.host: "minimaster"

#指定nimbus启动JVM最大可用内存大小

nimbus.childopts: "-Xmx1024m"

#指定supervisor启动JVM最大可用内存大小

supervisor.childopts: "-Xmx1024m"

#指定supervisor节点上,每个worker启动JVM最大可用内存大小

worker.childopts: "-Xmx768m"

#指定ui启动JVM最大可用内存大小,ui服务一般与nimbus同在一个节点上。

ui.childopts: "-Xmx768m"

#指定supervisor节点上,启动worker时对应的端口号,每个端口对应槽,每个槽位对应一个worker

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

3.分发安装包

scp -r /usr/local/storm miniSlave1:/usr/local

scp -r /usr/local/storm miniSlave2:/usr/local

4.启动集群

1.在nimbus.host所属的机器上启动nimbus服务

cd /usr/local

nohup ./storm nimbus &

2.在nimbus.host所属的机器上启动ui服务

nohup ./storm ui &

3.在其他各点击上启动supervisor服务

nohup ./storm supervisor &

5.查看集群

提交任务格式:

l storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】

bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar

Storm 消息容错机制:

对于每个Spout Tuple保存一个ack-val的校验值,它的初始值为0,然后每发射一个tuple或者ack一个tuple,tuple的id都要跟这个校验值异或一下,并且把得到的值更新为ack-val的新值

ack val 表示了整棵树的状态,无论这棵树多大,只需要这个固定大小的数字就可以跟踪整棵树;当消息被创建和被应答的时候都会有相同的消息id发送过来做异或;每当acker发现一棵树的ack val 值为0的时候,它就知道这棵树已经被完全处理了

总体介绍:

1.在storm中,可靠的信息处理机制是从spout开始的

2.一个提供了可靠的处理机制的spout需要记录他发射出去的tuple,当下游bolt处理tuple或者子tuple失败时spout能够重新发射

3.Storm通过调用Spout的nextTuple()发送一个tuple;为实现可靠的消息处理,首先要给每个发出的tuple带上唯一的ID,并且将ID作为参数传递给SpoutOutputCollector的emit()

给每个tuple指定ID告诉storm系统,无论处理成功还是失败,spout都要接收tuple树上所有节点返回的通知;如果处理成功,spout的ack()方法将会对编号是msgId的消息应答确认;如果处理失败或者超时,会调用fail()方法

上一篇:决策树的使用介绍
下一篇:关联规则算法简介和应用
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站