《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)
上一篇 2022年3月4日 下午6:00
下一篇 2022年3月4日 下午7:00


相关推荐

  • 豆包本地文件问答上传的文件备份在哪

    豆包本地文件问答上传的文件备份在哪

    2026年3月12日
    2
  • 组合数学容斥原理答案_容斥原理例题精讲

    组合数学容斥原理答案_容斥原理例题精讲一.容斥原理就是人们为了不重复计算重叠部分,想出的一种不重复计算的方法。先来认识一下这两个符号:与(如图)蓝色的圈就是c1c2,红色的圈围起来的就是c1c2二.例题:组合数学1.题目1.1.题目描述八是个很有趣的数字啊。八=发,八八=爸爸,88=拜拜。当然最有趣的还是8用二进制表示是1000。怎么样,有趣吧。当然题目和这些都没有关系。某个人很无聊,他想找出[a,b…

    2025年7月5日
    4
  • dcgan(bigbang)

    来源:https://github.com/aymericdamien/TensorFlow-Examples#tutorials”””DeepConvolutionalGenerativeAdversarialNetwork(DCGAN).Usingdeepconvolutionalgenerativeadversarialnetworks(DCGAN)toge…

    2022年4月11日
    36
  • java除零异常_JAVA异常处理

    java除零异常_JAVA异常处理出bug是写代码的时候非常常见的情况,今天就来讲一下。首先明确一下什么是异常,代码正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行,就是异常。1.常见的异常有以下几种:1.System.out.println(1/0);//java.lang.ArithmeticException:/byzero除以零结果无穷大异常2.Stringstr=null;Syst…

    2022年5月18日
    70
  • idea配置远程debug_idea远程调试

    idea配置远程debug_idea远程调试在工作中经常会遇到本地运行没有问题,部署到环境上就会出现问题,很多时候也没有错误日志,所以可以使用远程debug的方式,像本地debug一样,debug服务器上部署的项目。一、idea设置1.在idea工具栏,EditConfigurations2.添加remote3.部署远程服务1:将项目打成jar包上传到服务器上,然后使用命令启动。复制上面生成的一段参数:-agentlib:jdwp=transport=dt_socket,server=y,…

    2025年10月18日
    12
  • JavaScript字符串截取

    JavaScript字符串截取一、常用方法说明1.substr2.substring3.slice二、举例说明1.substr2.substring3.slice

    2022年6月13日
    29

发表回复

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

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