大数据培训面试题讲解- Storm的组件介绍

发布时间:2020年01月22日作者:atguigu浏览次数:565

Storm 是什么

如果只用一句话来描述 Storm 的话,可能会是这样:分布式实时计算系统。按照 Storm 作者的说法, Storm 对于实时计算的意义类似于hadoop对于批处理的意义。

1.流数据处理:Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到数据库中。
2.连续计算:Storm可以进行连续查询并把结果即时反馈给客户,比如将热门话题发送到客户端,网站指标等。
3.分布式RPC:由于Storm的处理组件都是分布式的,而且处理延迟都极低,所以可以Storm可以做为一个通用的分布式RPC框架来使用。
开发组件

1)nimbus主节点:相当于hadoop 的JobTracker、yarn的ResourceManager,主要进行计算任务分配信息,哪些worker启动在哪些supervisor上,哪些worker运行那些线程上来执行task。

2)supervisor工作节点:相当于hadoopr的TaskTracker、yarn的NodeManager,负责接受nimbus分配的任务,启动或关闭属于自己管理的worker,每个工作节点都是topology的一个子集的实现,nimbus 和supervisor之间通过zookeeper集群进行协调。

3)zookeeper 集群:是完成nimbus和supervisor之间的协调服务。nimbus启动会将配制信息写入zookeeper,zookeeper的watch机制会通知supervisor,然后supervisor下载任务并启动worker,supervisor启动时也会将服务器上的配置信息写入zookeeper。

4)worker:运行具体处理组件逻辑的进程

5)task:worker中的每一个spout/bolt的线程称之为task,在storm8.0之后task不再与物理线程对接,同一个spout/bolt的task可能会共享一个物理线程,这个线程就是executor。
运行组件

1)topology:storm中运行的一个实时程序,因为各个组件的消息流动形成一个逻辑上的一个拓扑结构,一个topology是由spouts和bolts 组成的,通过Stream Grouping将spouts和bolts 连接起来。

2)spout:在一个topology中产生源数据的组件,通常spout会从外部的数据源中读取数据,然后转换为topology内部数据,spout分为可靠和不可靠两种,当Storm接收失败时,可靠的spout会对tuple(元组、数据项组成的列表)进行重发;而不可靠的spout不会考虑成功与否只发送一次。Spout最主要的方法是nextTuple()该方法会发送一个新的tuple到topology,没有新的tuple会返回,而且nextTuple()方法不能阻塞,因storm在同一个线程上会调用所有消息源的spout的方法。另外两个比较重要的方法是ack()和fail() storm在检测一个tuple被整个topology成功处理的时候会调用ack(),否则会调用fail(),storm只会对可靠的spout调用ack()和fail()。

3)Bolt:topology的所有处理都有Bolt完成,即所有的消息处理逻辑都封装在bolt中,比如执行过虑、函数操作、合并、写入数据库等任何操作。

Bolt从spout中接收数据并处理,如果遇到复杂流的处理也可以将Tuple发送给另一个Bolt处理,bolt可以发送多条消息流,其中最重要的方法是executor()以新的tuple作为参数接收,不管是spout还是bolt,如果将tuple发送成多个流,这些流都可以用declareStream()来声明。

4)tuple:一个消息转递的基本单元,本来是以键值对存在的map,但是各个组件之间传递的tuple字段名已经事先定义好,所以tuple按序填入各个value就行了,所以就是一个value list。

5)stream:源源不断的tuple组成了stream,一个消息流是一个没有边界的tuple序列, 而这些tuple序列会以一种分布式的方式并行地创建和处理。通过对stream中tuple序列中每个字段命名来定义stream。在默认的情况下,tuple的字段类型可以是:integer,long,short, byte,string,double,float,boolean和byte array。你也可以自定义类型(只要实现相应的序列化器)。

想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训 UI/UE设计培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)