<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单之美 &#187; Category &#187; Storm</title>
	<atom:link href="http://shiyanjun.cn/archives/category/opensource/storm/feed" rel="self" type="application/rss+xml" />
	<link>http://shiyanjun.cn</link>
	<description>简单之美，难得简单，享受简单的唯美。</description>
	<lastBuildDate>Wed, 04 Mar 2026 07:04:53 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.2</generator>
	<item>
		<title>Apache Storm内部原理分析</title>
		<link>http://shiyanjun.cn/archives/1472.html</link>
		<comments>http://shiyanjun.cn/archives/1472.html#comments</comments>
		<pubDate>Wed, 17 Feb 2016 13:42:58 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Storm]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=1472</guid>
		<description><![CDATA[<p>本文算是个人对Storm应用和学习的一个总结，由于不太懂Clojure语言，所以无法更多地从源码分析，但是参考了官网、好多朋友的文章，以及《Storm Applied: Strategies for real-time event processing》这本书，以及结合自己使用Storm的经历，希望对于想深入一点了解Storm原理的朋友能有所帮助，有不足之处欢迎拍砖交流。
Storm集群架构
Storm集群采用主从架构方式，主节点是Nimbus，从节点是Supervisor，有关调度相关的信息存储到ZooKeeper集群中，架构如下图所示：

具体描述，如下所示：

Nimbus

Storm集群的Master节点，负责分发用户代码，指派给具体的Supervisor节点上的Worker节点，去运行Topology对应的组件（Spout/Bolt）的Task。

Supervisor

Storm集群的从节点，负责管理运行在Supervisor节点上的每一个Worker进程的启动和终止。通过Storm的配置文件中的supervisor.slots.ports配置项，可以指定在一个Supervisor上最大允许多少个Slot，每个Slot通过端口号来唯一标识，一个端口号对应一个Worker进程（如果该Worker进程被启动）。

ZooKeeper

用来协调Nimb</p>]]></description>
	<p>本文算是个人对Storm应用和学习的一个总结，由于不太懂Clojure语言，所以无法更多地从源码分析，但是参考了官网、好多朋友的文章，以及《Storm Applied: Strategies for real-time event processing》这本书，以及结合自己使用Storm的经历，希望对于想深入一点了解Storm原理的朋友能有所帮助，有不足之处欢迎拍砖交流。
Storm集群架构
Storm集群采用主从架构方式，主节点是Nimbus，从节点是Supervisor，有关调度相关的信息存储到ZooKeeper集群中，架构如下图所示：

具体描述，如下所示：

Nimbus

Storm集群的Master节点，负责分发用户代码，指派给具体的Supervisor节点上的Worker节点，去运行Topology对应的组件（Spout/Bolt）的Task。

Supervisor

Storm集群的从节点，负责管理运行在Supervisor节点上的每一个Worker进程的启动和终止。通过Storm的配置文件中的supervisor.slots.ports配置项，可以指定在一个Supervisor上最大允许多少个Slot，每个Slot通过端口号来唯一标识，一个端口号对应一个Worker进程（如果该Worker进程被启动）。

ZooKeeper

用来协调Nimb</p>			<content:encoded><![CDATA[<p>本文算是个人对Storm应用和学习的一个总结，由于不太懂Clojure语言，所以无法更多地从源码分析，但是参考了官网、好多朋友的文章，以及《Storm Applied: Strategies for real-time event processing》这本书，以及结合自己使用Storm的经历，希望对于想深入一点了解Storm原理的朋友能有所帮助，有不足之处欢迎拍砖交流。
Storm集群架构
Storm集群采用主从架构方式，主节点是Nimbus，从节点是Supervisor，有关调度相关的信息存储到ZooKeeper集群中，架构如下图所示：

具体描述，如下所示：

Nimbus

Storm集群的Master节点，负责分发用户代码，指派给具体的Supervisor节点上的Worker节点，去运行Topology对应的组件（Spout/Bolt）的Task。

Supervisor

Storm集群的从节点，负责管理运行在Supervisor节点上的每一个Worker进程的启动和终止。通过Storm的配置文件中的supervisor.slots.ports配置项，可以指定在一个Supervisor上最大允许多少个Slot，每个Slot通过端口号来唯一标识，一个端口号对应一个Worker进程（如果该Worker进程被启动）。

ZooKeeper

用来协调Nimb</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/1472.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>JStorm-0.9.6.2安装配置</title>
		<link>http://shiyanjun.cn/archives/1019.html</link>
		<comments>http://shiyanjun.cn/archives/1019.html#comments</comments>
		<pubDate>Sat, 24 Jan 2015 04:07:37 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Storm]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[JStorm]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=1019</guid>
		<description><![CDATA[<p>JStorm是由Alibaba开源的实时计算系统，它使用Java重写了Apache Storm（使用Clojure+Java混编），而且在原来的基础上做了很多改进的地方。使用Java重写，对于使用Java的开发人员来说，可以通过阅读源码来了解JStorm内部的原理和实现，而且可以根据运行错误日志来排查错误。
下面通过安装配置，以及简单使用的验证，来说明JStorm宏观上与Apache Storm的不同之处。
安装配置JStorm Server
首先，要保证JDK成功安装配置，然后在一个节点上下载、安装、配置JStorm。例如，我在hadoop1节点上，下载并解压缩：
修改配置文件conf/storm.yaml，内容修改如下：
要保证ZooKeeper集群已经成功启动，并在ZooKeeper中创建/jstorm，执行如下命令：
然后创建/jstorm，执行如下命令：
配置环境变量JSTORM_HOME，修改~/.bashrc文件，增加如下内容：
使环境变量生效：
配置完上面内容后，需要创建~/.jstorm目录，并将配置好的storm.yaml文件拷贝到该目录下：
最好在每个节点都执行上述配置，尤其是在提交Topology的时候，如果没有这个就会报错的。
最后，要将JStorm安装文件拷贝到集群</p>]]></description>
	<p>JStorm是由Alibaba开源的实时计算系统，它使用Java重写了Apache Storm（使用Clojure+Java混编），而且在原来的基础上做了很多改进的地方。使用Java重写，对于使用Java的开发人员来说，可以通过阅读源码来了解JStorm内部的原理和实现，而且可以根据运行错误日志来排查错误。
下面通过安装配置，以及简单使用的验证，来说明JStorm宏观上与Apache Storm的不同之处。
安装配置JStorm Server
首先，要保证JDK成功安装配置，然后在一个节点上下载、安装、配置JStorm。例如，我在hadoop1节点上，下载并解压缩：

wget http://42.121.19.155/jstorm/jstorm-0.9.6.2.zip
unzip jstorm-0.9.6.2.zip
cd jstorm-0.9.6.2

修改配置文件conf/storm.yaml，内容修改如下：

########### These MUST be filled in for a storm configuration
 storm.zookeeper.servers:
     - &quot;10.10.4.128&quot;
     - &quot;10.10.4.129&quot;
     - &quot;10.10.4.130&quot;

 storm.zookeeper.root: &quot;/jstorm&quot;

# %JSTORM_HOME% is the jstorm home directory
 s</p>			<content:encoded><![CDATA[<p>JStorm是由Alibaba开源的实时计算系统，它使用Java重写了Apache Storm（使用Clojure+Java混编），而且在原来的基础上做了很多改进的地方。使用Java重写，对于使用Java的开发人员来说，可以通过阅读源码来了解JStorm内部的原理和实现，而且可以根据运行错误日志来排查错误。
下面通过安装配置，以及简单使用的验证，来说明JStorm宏观上与Apache Storm的不同之处。
安装配置JStorm Server
首先，要保证JDK成功安装配置，然后在一个节点上下载、安装、配置JStorm。例如，我在hadoop1节点上，下载并解压缩：
修改配置文件conf/storm.yaml，内容修改如下：
要保证ZooKeeper集群已经成功启动，并在ZooKeeper中创建/jstorm，执行如下命令：
然后创建/jstorm，执行如下命令：
配置环境变量JSTORM_HOME，修改~/.bashrc文件，增加如下内容：
使环境变量生效：
配置完上面内容后，需要创建~/.jstorm目录，并将配置好的storm.yaml文件拷贝到该目录下：
最好在每个节点都执行上述配置，尤其是在提交Topology的时候，如果没有这个就会报错的。
最后，要将JStorm安装文件拷贝到集群</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/1019.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Storm实时计算：流操作入门编程实践</title>
		<link>http://shiyanjun.cn/archives/977.html</link>
		<comments>http://shiyanjun.cn/archives/977.html#comments</comments>
		<pubDate>Fri, 28 Nov 2014 05:16:10 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Storm]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=977</guid>
		<description><![CDATA[<p>Storm是一个分布式是实时计算系统，它设计了一种对流和计算的抽象，概念比较简单，实际编程开发起来相对容易。下面，简单介绍编程实践过程中需要理解的Storm中的几个概念：

Topology

Storm中Topology的概念类似于Hadoop中的MapReduce Job，是一个用来编排、容纳一组计算逻辑组件（Spout、Bolt）的对象（Hadoop MapReduce中一个Job包含一组Map Task、Reduce Task），这一组计算组件可以按照DAG图的方式编排起来（通过选择Stream Groupings来控制数据流分发流向），从而组合成一个计算逻辑更加负责的对象，那就是Topology。一个Topology运行以后就不能停止，它会无限地运行下去，除非手动干预（显式执行bin/storm kill ）或意外故障（如停机、整个Storm集群挂掉）让它终止。

Spout

Storm中Spout是一个Topology的消息生产的源头，Spout应该是一个持续不断生产消息的组件，例如，它可以是一个Socket Server在监听外部Client连接并发送消息，可以是一个消息队列（MQ）的消费者、可以是用来接收Flume Agent的Sink所发送消息的服务，等等。Spout生产的消息在Storm中被抽</p>]]></description>
	<p>Storm是一个分布式是实时计算系统，它设计了一种对流和计算的抽象，概念比较简单，实际编程开发起来相对容易。下面，简单介绍编程实践过程中需要理解的Storm中的几个概念：

Topology

Storm中Topology的概念类似于Hadoop中的MapReduce Job，是一个用来编排、容纳一组计算逻辑组件（Spout、Bolt）的对象（Hadoop MapReduce中一个Job包含一组Map Task、Reduce Task），这一组计算组件可以按照DAG图的方式编排起来（通过选择Stream Groupings来控制数据流分发流向），从而组合成一个计算逻辑更加负责的对象，那就是Topology。一个Topology运行以后就不能停止，它会无限地运行下去，除非手动干预（显式执行bin/storm kill ）或意外故障（如停机、整个Storm集群挂掉）让它终止。

Spout

Storm中Spout是一个Topology的消息生产的源头，Spout应该是一个持续不断生产消息的组件，例如，它可以是一个Socket Server在监听外部Client连接并发送消息，可以是一个消息队列（MQ）的消费者、可以是用来接收Flume Agent的Sink所发送消息的服务，等等。Spout生产的消息在Storm中被抽</p>			<content:encoded><![CDATA[<p>Storm是一个分布式是实时计算系统，它设计了一种对流和计算的抽象，概念比较简单，实际编程开发起来相对容易。下面，简单介绍编程实践过程中需要理解的Storm中的几个概念：

Topology

Storm中Topology的概念类似于Hadoop中的MapReduce Job，是一个用来编排、容纳一组计算逻辑组件（Spout、Bolt）的对象（Hadoop MapReduce中一个Job包含一组Map Task、Reduce Task），这一组计算组件可以按照DAG图的方式编排起来（通过选择Stream Groupings来控制数据流分发流向），从而组合成一个计算逻辑更加负责的对象，那就是Topology。一个Topology运行以后就不能停止，它会无限地运行下去，除非手动干预（显式执行bin/storm kill ）或意外故障（如停机、整个Storm集群挂掉）让它终止。

Spout

Storm中Spout是一个Topology的消息生产的源头，Spout应该是一个持续不断生产消息的组件，例如，它可以是一个Socket Server在监听外部Client连接并发送消息，可以是一个消息队列（MQ）的消费者、可以是用来接收Flume Agent的Sink所发送消息的服务，等等。Spout生产的消息在Storm中被抽</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/977.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Kafka+Storm+HDFS整合实践</title>
		<link>http://shiyanjun.cn/archives/934.html</link>
		<comments>http://shiyanjun.cn/archives/934.html#comments</comments>
		<pubDate>Tue, 21 Oct 2014 11:24:19 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Hadoop/Hive/ZooKeeper]]></category>
		<category><![CDATA[Storm]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[HDFS]]></category>
		<category><![CDATA[Kafka]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=934</guid>
		<description><![CDATA[<p>在基于Hadoop平台的很多应用场景中，我们需要对数据进行离线和实时分析，离线分析可以很容易地借助于Hive来实现统计分析，但是对于实时的需求Hive就不合适了。实时应用场景可以使用Storm，它是一个实时处理系统，它为实时处理类应用提供了一个计算模型，可以很容易地进行编程处理。为了统一离线和实时计算，一般情况下，我们都希望将离线和实时计算的数据源的集合统一起来作为输入，然后将数据的流向分别经由实时系统和离线分析系统，分别进行分析处理，这时我们可以考虑将数据源（如使用Flume收集日志）直接连接一个消息中间件，如Kafka，可以整合Flume+Kafka，Flume作为消息的Producer，生产的消息数据（日志数据、业务请求数据等等）发布到Kafka中，然后通过订阅的方式，使用Storm的Topology作为消息的Consumer，在Storm集群中分别进行如下两个需求场景的处理：

直接使用Storm的Topology对数据进行实时分析处理
整合Storm+HDFS，将消息处理后写入HDFS进行离线分析处理

实时处理，只要开发满足业务需要的Topology即可，不做过多说明。这里，我们主要从安装配置K</p>]]></description>
	<p>在基于Hadoop平台的很多应用场景中，我们需要对数据进行离线和实时分析，离线分析可以很容易地借助于Hive来实现统计分析，但是对于实时的需求Hive就不合适了。实时应用场景可以使用Storm，它是一个实时处理系统，它为实时处理类应用提供了一个计算模型，可以很容易地进行编程处理。为了统一离线和实时计算，一般情况下，我们都希望将离线和实时计算的数据源的集合统一起来作为输入，然后将数据的流向分别经由实时系统和离线分析系统，分别进行分析处理，这时我们可以考虑将数据源（如使用Flume收集日志）直接连接一个消息中间件，如Kafka，可以整合Flume+Kafka，Flume作为消息的Producer，生产的消息数据（日志数据、业务请求数据等等）发布到Kafka中，然后通过订阅的方式，使用Storm的Topology作为消息的Consumer，在Storm集群中分别进行如下两个需求场景的处理：

直接使用Storm的Topology对数据进行实时分析处理
整合Storm+HDFS，将消息处理后写入HDFS进行离线分析处理

实时处理，只要开发满足业务需要的Topology即可，不做过多说明。这里，我们主要从安装配置K</p>			<content:encoded><![CDATA[<p>在基于Hadoop平台的很多应用场景中，我们需要对数据进行离线和实时分析，离线分析可以很容易地借助于Hive来实现统计分析，但是对于实时的需求Hive就不合适了。实时应用场景可以使用Storm，它是一个实时处理系统，它为实时处理类应用提供了一个计算模型，可以很容易地进行编程处理。为了统一离线和实时计算，一般情况下，我们都希望将离线和实时计算的数据源的集合统一起来作为输入，然后将数据的流向分别经由实时系统和离线分析系统，分别进行分析处理，这时我们可以考虑将数据源（如使用Flume收集日志）直接连接一个消息中间件，如Kafka，可以整合Flume+Kafka，Flume作为消息的Producer，生产的消息数据（日志数据、业务请求数据等等）发布到Kafka中，然后通过订阅的方式，使用Storm的Topology作为消息的Consumer，在Storm集群中分别进行如下两个需求场景的处理：

直接使用Storm的Topology对数据进行实时分析处理
整合Storm+HDFS，将消息处理后写入HDFS进行离线分析处理

实时处理，只要开发满足业务需要的Topology即可，不做过多说明。这里，我们主要从安装配置K</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/934.html/feed</wfw:commentRss>
		<slash:comments>156</slash:comments>
		</item>
		<item>
		<title>CentOS 6.4单机环境下安装配置Storm</title>
		<link>http://shiyanjun.cn/archives/241.html</link>
		<comments>http://shiyanjun.cn/archives/241.html#comments</comments>
		<pubDate>Fri, 30 Aug 2013 21:03:41 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Storm]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=241</guid>
		<description><![CDATA[<p>Storm是一个分布式的、高容错的实时计算系统，在实时性要求比较强的应用场景下，可以用它来处理海量数据。我们尝试着搭建Storm平台，来实现实时计算。下面，我们在CentOS 6.4上安装配置Storm系统。
安装配置
安装配置过程，按照如下步骤进行：
1、安装配置sunjdk
下载sunjdk，并安装Java运行环境：
配置Java运行时环境：
2、安装zeromq
执行如下命令，进行下载配置安装：
3、安装jzmq
安装jzmq需要使用Git下载源码，从源代码编译安装：
4、安装Storm
下载解压缩Storm软件包即可：
然后配置环境变量：
5、安装构建storm-starter
首先需要下载代码，并使用Maven构建：
如果需要把Storm的示例代码导入到Eclipse环境中，需要执行如下命令：
6、配置Storm
修改配置文件conf/storm.yaml内容如下所示：
启动运行
1、启动Storm相关服务

启动ZooKeeper


启动Nimbus

查看日志，确定Nimbus启动是否成功：

启动Supervisor

查看日志，确定Supervisor启动是否成功：
2、提交一个Topology
上面，已经使用Maven构建storm-starter工程，在target目录下生成一个jar文件，然后将该</p>]]></description>
	<p>Storm是一个分布式的、高容错的实时计算系统，在实时性要求比较强的应用场景下，可以用它来处理海量数据。我们尝试着搭建Storm平台，来实现实时计算。下面，我们在CentOS 6.4上安装配置Storm系统。
安装配置
安装配置过程，按照如下步骤进行：
1、安装配置sunjdk
下载sunjdk，并安装Java运行环境：

wget http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin
chmod +x jdk-6u45-linux-x64-rpm.bin
./jdk-6u45-linux-x64.bin

配置Java运行时环境：

vi ~/.bashrc
export JAVA_HOME=/usr/java/jdk1.6.0_45/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar
. ~/.bashrc
java -version

2、安装zeromq
执行如下命令，进行下载配置安装：

wget http://download.zeromq.org/zeromq-2.2.0.tar.gz
tar -zvxf zeromq-2.2.0.tar.gz
cd zeromq-2.2.0/
./configure
sudo make
sudo make install

3、安装jzmq
安装jzmq需要使用Git下载源码，从源代码编译安装：

sudo yum insta</p>			<content:encoded><![CDATA[<p>Storm是一个分布式的、高容错的实时计算系统，在实时性要求比较强的应用场景下，可以用它来处理海量数据。我们尝试着搭建Storm平台，来实现实时计算。下面，我们在CentOS 6.4上安装配置Storm系统。
安装配置
安装配置过程，按照如下步骤进行：
1、安装配置sunjdk
下载sunjdk，并安装Java运行环境：
配置Java运行时环境：
2、安装zeromq
执行如下命令，进行下载配置安装：
3、安装jzmq
安装jzmq需要使用Git下载源码，从源代码编译安装：
4、安装Storm
下载解压缩Storm软件包即可：
然后配置环境变量：
5、安装构建storm-starter
首先需要下载代码，并使用Maven构建：
如果需要把Storm的示例代码导入到Eclipse环境中，需要执行如下命令：
6、配置Storm
修改配置文件conf/storm.yaml内容如下所示：
启动运行
1、启动Storm相关服务

启动ZooKeeper


启动Nimbus

查看日志，确定Nimbus启动是否成功：

启动Supervisor

查看日志，确定Supervisor启动是否成功：
2、提交一个Topology
上面，已经使用Maven构建storm-starter工程，在target目录下生成一个jar文件，然后将该</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/241.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
