《Storm企业级应用:实战、运维和调优》——1.3 Storm核心组件[通俗易懂]

《Storm企业级应用:实战、运维和调优》——1.3 Storm核心组件

大家好,又见面了,我是全栈君。

本节书摘来自华章计算机《Storm企业级应用:实战、运维和调优》一书中的第1章,第1.3节,作者:马延辉 陈书美 雷葆华著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 Storm核心组件

了解Storm的核心组件对于理解Storm原理非常重要,下面介绍Storm的整体,然后介绍Storm的核心。Storm集群由一个主节点和多个工作节点组成。主节点运行一个名为“Nimbus”的守护进程,工作节点都运行一个名为“Supervisor”的守护进程,两者的协调工作由ZooKeeper来完成,ZooKeeper用于管理集群中的不同组件。
每一个工作节点上运行的Supervisor监听分配给它那台机器的工作,根据需要启动/关闭工作进程,每一个工作进程执行一个Topology的一个子集;一个运行的Topology由运行在很多机器上的很多工作进程Worker组成。那么Storm的核心就是主节点(Nimbus)、工作节点(Supervisor)、协调器(ZooKeeper)、工作进程(Worker)、任务线程(Task)。
1.3.1 主节点Nimbus
主节点通常运行一个后台程序——Nimbus,用于响应分布在集群中的节点,分配任务和监测故障,这类似于Hadoop中的JobTracker。
Nimbus进程是快速失败(fail-fast)和无状态的,所有的状态要么在ZooKeeper中,要么在本地磁盘上。可以使用kill -9来杀死Nimbus进程,然后重启即可继续工作。
1.3.2 工作节点Supervisor
工作节点同样会运行一个后台程序——Supervisor,用于收听工作指派并基于要求运行工作进程。每个工作节点都是Topology中一个子集的实现。而Nimbus和Supervisor之间的协调则通过ZooKeeper系统。
同样,Supervisor进程也是快速失败(fail-fast)和无状态的,所有的状态要么在ZooKeeper中,要么在本地磁盘上,用kill -9来杀死Supervisor进程,然后重启就可以继续
工作。
1.3.3 协调服务组件ZooKeeper
ZooKeeper是完成Nimbus和Supervisor之间协调的服务。Storm使用ZooKeeper协调集群,由于ZooKeeper并不用于消息传递,所以Storm给ZooKeeper带来的压力相当低。在大多数情况下,单个节点的ZooKeeper集群足够胜任,不过为了确保故障恢复或者部署大规模Storm集群,可能需要更大规模的ZooKeeper集群。Nimbus、Supervisor与ZooKeeper的关系如图1-11所示。

image

1.3.4 其他核心组件
Storm的组件不止上面的,还有一些组件也是Storm的核心,缺一不可。下面简单介绍Worker和Task。
1)具体处理事务进程Worker:运行具体处理组件逻辑的进程。
2)具体处理线程Task:Worker中的每一个Spout/Bolt线程称为一个Task。在Storm 0.8之后,Task不再与物理线程对应,同一个Spout/Bolt的Task可能会共享一个物理线程,该线程称为Executor。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108376.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手把手教你制作网页导航栏

    手把手教你制作网页导航栏手把手教你制作网页导航栏众所周知,导航栏是网页的重要组成部分,本篇文章将会带你由浅入深的制作导航栏,子菜单,样式风格变化等。导航栏的重要部分——ul标签在导航栏中的文字,都是以无序列表ul和li标签实现的。下面通过几个小例子来为大家介绍如何实现网页导航栏的制作。1.用ul标签做一个简单般的菜单样式,首先在一个div盒子里创建一个无序列表,如图所示运行结果如下图所示:2.之后我们可以让列表横过来,需要用到css的浮动样式也就是float标签。我们需要让它向左浮动如图所示:运行结果如

    2022年7月22日
    5
  • python如何使用for循环_Python 中for循环的应用

    python如何使用for循环_Python 中for循环的应用1.for…in循环循环,遍历,迭代都是指把容器中的数据一个一个获取出来lst=[1,2,3,4,5]i=0whilei<len(lst): print(lst[i]) i+=1 #无法用while它的索引下标获取集合其中的值;setvar={“a”,”b”,”c”}for..in..应用而生语法:for变量in可迭代对象: code…可迭代对象(通常用到的是:容器类型数据,range对象,迭代器)2

    2022年8月12日
    9
  • 正则表达式 查找_正则表达式不能输入0

    正则表达式 查找_正则表达式不能输入0根据指定条件查找字符串。

    2022年9月19日
    2
  • 【Java入门练习100例】07.各数字的和——取余运算

    【Java入门练习100例】07.各数字的和——取余运算除法运算取余运算

    2022年5月1日
    60
  • ModelSimSE_10.2c破解

    ModelSimSE_10.2c破解我开始也是找的网上破解crack,但是生成license后打开软件提示:modelsim打开时候出现提示:“unabletocheckoutaviewerlicensenecessaryforuseofthemodelsimgraphicaluserinterface.Vsimisclosing”。说明license还是有问题;按照破解说明,需要pat…

    2022年5月22日
    32
  • datagrip2021激活码【注册码】

    datagrip2021激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    139

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号