您的位置:

jstorm实例的简单介绍

jstorm实例的简单介绍

更新:

本文目录一览:

Storm中进程,线程,任务和实例的关系

以一个具体的例子来阐述“Storm中进程,线程,任务和实例的关系”

假设现在有一个Topology实例,在该Topology实例中,配置为整个Topology实例服务的进程数量为10,配置了Spout单元和Bolt单元以及Spout单元和Bolt单元之间的数据流,为这些Spout和Bolt单元服务的线程和任务数量分别为:Spout单元,10个线程,20个任务;Bolt单元,20个线程,20个任务。

那么一旦将该Topology实例提交给Nimbus,接下来就会由Nimbus控制运行。

在Nimbus的控制下,有些Supervisor会在所在的worker node上建立一个进程,整个Supervisor集群中共建立10个进程,这些进程都为该Topology实例服务。这些进程可以运行在多个worker node上,也可以运行在同一台worker node上。每个进程都持有对项目JAR包的引用。

现在一共需要30个线程来为Spout和Bolt单元服务,那么10个进程中,每个进程上运行3个线程。一个进程中的3个线程可以分别为不同的Spout单元和Bolt单元服务。每个线程都创建一份Spout单元或者Bolt单元的实例。

Spout单元共有10个线程,20个任务为其服务,那么每个线程上运行2个任务,同理为Bolt单元服务的20个线程中的每个线程上运行1个任务。

每个线程中的任务使用线程所持有的Spout实例或者Bolt实例,同一个线程中的多个任务间是串行执行的关系,因而在一个线程有多个任务的情况下,不会产生并发问题。

比如某个线程中持有一个Spout实例spoutInstance,配置该线程中需要运行5个任务,那么Storm的框架代码有可能是这么实现的:

for(int i=0;i5;i++)

{

spoutInstance.nextTuple();

}

storm基本概念

流式计算中,各个中间件产品对计算过程中的角色的抽象都不尽相同,实现方式也是千差万别。本文针对storm中间件在进行流式计算中的几个概念做个概括总结。

storm分布式计算结构称为topology(拓扑)由stream,spout,bolt组成。

spout代表一个storm拓扑中的数据入口,连接到数据源,将数据转化为一个个tuple,并发射tuple

stream是由无限制个tuple组成的序列。tuple为storm的核心数据结构,是包含了一个或多个键值对的列表。

bolt可以理解为计算程序中的运算或者函数,bolt的上游是输入流,经过bolt实施运算后,可输出一个或者多个输出流。

bolt可以订阅多个由spout或者其他bolt发射的数据流,用以构建复杂的数据流转换网络。

上述即为storm最基本的组成元素,无论storm如何运行,都是以stream,spout,bolt做为最基本的运行单元。而这三者则是共同构成了一个storm拓扑topology。

首先需要明确一个概念,bolt,spout实例,都属于任务,spout产生数据流,并发射,bolt消费数据流,进行计算,并进行落地或再发射,他们的存在以及运行过程都需要消耗资源,而storm集群是一个提供了资源的集群,我们要做的就是将spout/boult实例合理分配到storm集群提供的计算资源上,这样就可以让spout/bolt得以执行。

worker为JVM进程,一个topology会分配到一个或者多个worker上运行。

executor是worker内的java线程,是具体执行bolt/spout实例用的。下篇文章在介绍如何提供storm并行计算能力时会介绍worker以及executor的配置。

在storm中,worker是由supervisor进程创建,并进行监控的。storm集群遵循主从模式,主为nimbus,从为supervisor,storm集群由一个主节点(确实有单点问题),和多个工作节点(supervisor)组成,并使用zookeeper来协调集群中的状态信息,比如任务分配情况,worker状态,supervisor的拓扑度量。

通过配置可指定supervisor上可运行多少worker。一个worker代表一个slot。

nimbus守护进程的主要职责是管理,协调和监控在集群上运行的topology.包括topology的发布,任务指派,事件处理失败时重新指派任务。

supervisor守护进程等待nimbus分配任务后生成并监控workers执行任务。supervosior和worker都是运行在不同的JVM进程上。

了解了集群模式下,storm大致的分布概念,下面结合笔者做的一个实例,了解一下如何发布计算资源到storm集群上。

笔者定义了一个spout,两个bolt 运算过程如下:

其中streamMaking是一个不断生成随机数(5~30)的spout实例,Step1Bolt会过滤掉15以下的随机数(过滤),15以上的随机数会乘以16(计算),再将结果向后发射。Step2Bolt订阅Step1Bolt发射的数据,接收数据后,打印输出。流程结束。

笔者在定义spout/bolt实例时,配置了spout,bolt的并行执行数。其中

streamMaking:4   Step1Bolt:2  Step2Bolt 1

这样,发布成功后,storm会根据我的配置,分配足够的计算资源给予spout/bolt进行执行。

发布:

发布时,spout和bolt都是在一起以jar的形式发布到nimbus上的,分配后,内部定义的spout和bolt将以组件的形式被nimbus分配至worker进程中执行。

其中worker都是由supervisor创建的,创建出来的worker进程与supervisor是分开的不同进程。一个supervisor可创建多少worker可通过修改storm安装目录下的storm.yaml进行配置。

task是执行的最小单元。spout/bolt实例在定义中指定了,要起多少task,以及多少executor。也即一个topology发布之前已经定义了task总量,和需要多少资源来执行我的task总量。nimbus将根据已有的计算资源进行分配。

下图中:  nimbus左边代表着计算任务量,和所需计算配置

nimbus右边代表着计算资源

nimbus将根据计算资源信息,合理的分发计算任务量。

发布成功后,通过storm自带的UI功能,可以查看你发布的topology运行以及其中每个组件的分布执行情况。

监控图像中清晰的显示了,目前部署的topology,以及topology中每个组件所分配的计算资源所在host,以及每个组件发射了多少tuple,接收了多少tuple,以及有多少个executor在并行执行。

本文讲述了storm内的基本元素以及基本概念,后续将讲述storm的重点配置信息,以及如何提高并发计算能力,窗口概念等高级特性,后续会进行源码分析,以及与其他实时计算中间件的比较。

请教,icestorm的实例实现,出现了问题

问题现象:安装MSDE2000时,提示指定的实例名无效 问题原因:安装MSDE2000时,采用的数据库默认实例名,如果以前已经安装过,默认实例名已经被占用,无论数据库MSSQLSERVER服务是否启动,则出现此提示。 解决方案:如果已安装的数据库可正常启动...

如何在Windows下搭建Storm

安装JAVA:

下载JDK(Storm 需要的环境是JDK6/7),在这个步骤中,我使用JDK 7,大家可以自行到Oracle官网下载。

我将它安装在:

C:\Java\jdk1.7.0_45\

安装Python:

为了测试python的安装,我将部署"word count"来自storm-starter project 的例子,一个用python写的multi-lang bolt。我使用的python2.7.6可以从这里下载。

我将python安装在这里:

C:\Python27\

安装以及执行Zookeeper:

下载 Apache Zookeeper 3.3.6并且解压它。按照如下命令进行配置以及执行:

cd zookeeper-3.3.6

copy conf\zoo_sample.cfg conf\zoo.cfg

.\bin\zkServer.cmd

安装Storm

允许storm部署到windows下的官方正式版本现在还没有发布,但是你可以下载并且编译包含了这个功能的版本,点击这里下载。

(源码分支参考这里)。

解压压缩包到你想要的位置。我选择 C盘。

配置环境变量

在windows下需要配置两个环境变量: STORM_HOME 以及 JAVA_HOME ,并且同样要将安装路径配置到PATH中。

JAVA_HOME

C:\Java\jdk1.7.0_45\

STORM_HOME

C:\storm-0.9.1-incubating-SNAPSHOT-12182013\

PATH Add:

%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;

PATHEXT Add:

.PY

Start Nimbus, Supervisor, and Storm UI Daemons

为每一个运行实例打开一个命令行:

Nimbus

cd %STORM_HOME%

storm nimbus

Supervisor

cd %STORM_HOME%

storm supervisor

Storm UI

cd %STORM_HOME%

storm ui

通过浏览器 验证一下Storm是否已经跑起来了。

部署“Word Count” 拓扑:

编译 storm-starter 项目。

部署 Word Count 拓扑到你的本地集群中:

storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology WordCount -c nimbus.host=localhost

刷新UI页面,就可以看到任务已经跑起来了。

jstorm实例的简单介绍

本文目录一览: 1、Storm中进程,线程,任务和实例的关系 2、storm基本概念 3、请教,icestorm的实例实现,出现了问题 4、如何在Windows下搭建Storm Storm中进程,线程

2023-12-08
javascript入门笔记1的简单介绍

2022-11-18
python使用笔记23的简单介绍

2022-11-10
javascript简要笔记,JavaScript读书笔记

2022-11-17
java包笔记,Java语言包

2022-11-18
c到c语言笔记的简单介绍

2022-11-24
java客户端学习笔记(java开发笔记)

2022-11-14
印象笔记记录java学习(Java成长笔记)

2022-11-12
java基础知识学习笔记一,Java基础笔记

2022-11-21
重学java笔记,java笔记总结

2022-11-23
java基础第一天学习笔记(java课程笔记)

2022-11-09
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
java学习笔记(java初学笔记)

2022-11-14
重拾python笔记三的简单介绍

2022-11-13
java笔记,大学java笔记

2022-11-28
发篇java复习笔记(java课程笔记)

2022-11-09
java方向综合笔试题的简单介绍

2022-11-23
js修改cssimportant的简单介绍

本文目录一览: 1、js如何直接修改css里面的属性值呢? 2、笔记:JS设置CSS样式的几种方式 3、如何用JS修改已加载的CSS样式表样式? 4、JS修改CSS设置的样式 5、如何使用jquery

2023-12-08
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
java笔记,尚硅谷java笔记

2022-12-01