Storm概念、原理详解及其应用(二)Storm Cluster

前述:

本章内容借鉴官文和一些资料,有问题的地方希望大家指出。同样,内容中不会给出部署Storm集群的方法和步骤,因为部署只是我们使用它的基础,个人认为集群部署维护属于运维层面;也不会详解Command line client;更不会贴出yaml配置文件。所以不包含上述内容,希望不会浪费到大家时间。

那文章内容会有什么呢?

在完成上述工作以后,却不理解Storm是如何通过storm.yaml这个文件进行工作,集群之间是如何运行、每个守护进程都做了什么、代码怎么分配到每个节点、Storm的代码逻辑怎么写才会符合Stream、如何Storm集成到其他系统中、甚至想要重编译Storm;通过了解以下内容,可以理解并解决刚才的问题,举一反三。

当然这个必须自己部署一遍,熟悉过程,因为后期的topology结构定义可以不用写入代码内,而走flux配置来完成。这意味这什么呢?

概念:

特点介绍:

Storm 采用云计算框架中最实用的master/slave结构,静态设置。

主节点为nimbus,半容错;从节点supervisor;中间关系通过Zookeeper维护。

半容错:由于Nimbus不参与数据处理过程,且topology不会自动停止。所以只能对topology初始化、任务分发和监控,不会影响任务处理过程。但如果supervisor挂掉,nimbus不能再重新指派任务。

当然,可以使用HA nimbus,这个我们以后谈###############。

进程组件:

如果大家还记得上一章的Storm框架吗?本章就是围绕该架构来分析机理,首先,来看下每个进程组件的功能。

Nimbus:

Nimbus守护进程主要负责管理(类似于namenode+ResourceManager,因为Storm不需要hdfs),协调+监控 = topology的发布、任务指派、失败重新指派等。

Nimbus会记录所有supervisor节点的状态和分配给它们的task;如果supervisor没有heartbeat或不可达,它会将故障supervisor中的task重新分配到其他节点。

Supervisor:

Supervisor守护进程等待nimbus分配任务后,生成并监控workers(JVM进程)的执行。

Supervisor和worker都是运行在不同的JVM进程上(一个节点上可以运行多个JVM,每个JVM为一个进程,即worker),worker失败是由supervisor重启。

保障传输机制:当打开了可靠传输选项,传输到故障节点的tuple将不会收到应答确认,spout会因为超时而重新发射原始tuple(问题5),直到topology从故障中回复开始正常处理数据。

Zookeeper:

Storm 主要使用ZooKeeper 来协调一个集群中的状态信息,比如任务的分配情况,worker的状态,supervisor之间的nimbus的拓扑度量。nimbus 和supervisor节点之间的通信主要是结合 ZooKeeper 的状态变更通知和监控通知来处理的。(Zookeeper的在集群中最重要的应用!)1、Zookeeper原理、结构——Kuring 经典

Thrift:

对于重量级的数据传输操作,比如发布topology 时传输jar 包,Storm 依赖Thirft 进行通信。(在以后的源码分析中会有详解)

在理解每个守护进程后,我们来看看他们之间是如何工作的。

集群运行机制:

Storm的集群主要由三部分组成:nimbus、zookeeper、supervisor。

master是不会与每个slaver直接通信,他们之间的交流是通过zk,其中包括:代码下载、心跳机制、任务分配、同步集群等等。

这里简单提一下zk的主要功能:1、同步少量数据。2、有监听触发机制。

感兴趣的朋友可以自行学习zk,这里默认大家使用过zk。

nimbus的元数据存储在zk中,由于supervisor并不会直接与其通信,所以才会有半容错的存在。

1、实际上,nimbus在获取代码后运行代码,解析配置和topology结构,得到需要分配多少worker、executor、task等等,topology运行时需要的资源。

2、把相关信息提交给zk。这里其实就是修改zk中的tree文件内容,至于zk中的Storm tree是什么样的接下来会讲到。

3、zk作为中间服务系统,会触发消息到对应的supervisor。

4、每个supervisor得到信息后,会根据信息分配资源,首先是worker的建立、开启多少个executor、提交对应的tasks。

至于并发度、并行度,这些在提交代码、配置时已经定义好了,不用多说,如何做到这点请参考上一章Storm概念、原理详解及其应用(一)BaseStorm

zookeeper:

Storm在zookeeper中生成的树型目录结构如下图:
image.png

可以看出,根目录为/storm,其下的每一个叶子目录都是Storm存储元数据的地方。

下面分别介绍ZooKeeper中每项数据的具体含义:

/storm/workerbeats/<topology-id>/node-port:它存储由node和port指定的Worker的运行状态和一些统计信息,主要包括storm-id(也即topology-id)、当前Worker上所有Executor的统计信息(如发送的消息数目、接收的消息数目等)、当前Worker的启动时间以及最后一次更新这些信息的时间。在一个topology-id下面,可能有多个node-port节点。它的内容在运行过程中会被更新。

/storm/storms/<topology-id>:它存储Topology本身的信息,包括它的名字、启动时间、运行状态、要使用的Worker数目以及每个组件的并行度设置。它的内容在运行过程中是不变的。

/storm/assignments/<topology-id>:它存储了Nimbus为每个Topology分配的任务信息,包括该Topology在Nimbus机器本地的存储目录、被分配到的Supervisor机器到主机名的映射关系、每个Executor运行在哪个Worker上以及每个Executor的启动时间。该节点的数据在运行过程中会被更新。

/storm/supervisors/<supervisor-id>:它存储Supervisor机器本身的运行统计信息,主要包括最近一次更新时间、主机名、supervisor-id、已经使用的端口列表、所有的端口列表以及运行时间。该节点的数据在运行过程中也会被更新。

/storm/errors/<topology-id>/<component-id>/e<sequential-id>:它存储运行过程中每个组件上发生的错误信息。<sequential-id>是一个递增的序列号,每一个组件最多只会保留最近的10条错误信息。它的内容在运行过程中是不变的(但是有可能被删除)。

转自:https://blog.csdn.net/kuring_k/article/details/51887340

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容