`
wbj0110
  • 浏览: 1604526 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Storm的介绍与安装(简单)

阅读更多

Storm的集群跟hadoop的集群非常像。但是在Hadoop上面你运行的是MapReduce的Job, 而在Storm上面你运行的是Topology。

在Storm的集群里面有两种节点: 控制节点(master node)和工作节点(worker node)。控制节点上面运行一个后台程序: Nimbus, 它的作用类似Hadoop里面的JobTracker。Nimbus负责在集群里面分布代码,分配工作给机器, 并且监控状态。

 每一个工作节点上面运行一个叫做Supervisor的节点。Supervisor会监听分配给它那台机器的工作,根据需要 启动/关闭工作进程。每一个工作进程执行一个Topology的一个子集;一个运行的Topology由运行在很多机器上的很多工作进程组成。

Nimbus和Supervisor之间的所有协调工作都是通过一个Zookeeper集群来完成。

Stream是storm里面的关键抽象。一个stream是一个没有边界的tuple序列。storm提供一些原语来分布式地、可靠地把一个stream传输进一个新的stream。比如: 你可以把一个tweets流传输到热门话题的流。

storm提供的最基本的处理stream的原语是spout和bolt。你可以实现Spout和Bolt对应的接口以处理你的应用的逻辑。

Spout的流的源头。比如一个Spout可能从Kestrel队列里面读取消息并且把这些消息发射成一个流。

Bolt可以接收任意多个输入stream,作一些处理, 有些Bolt可能还会发射一些新的stream。一些复杂的流转换, 比如从一些tweet里面计算出热门话题, 需要多个步骤, 从而也就需要多个Bolt。 Bolt可以做任何事情: 运行函数, 过滤tuple, 做一些聚合, 做一些合并以及访问数据库等等。

Spout和Bolt所组成一个网络会被打包成Topology, Topology是Storm里面最高一级的抽象,相当于Hadoop的MapReduce,你可以把Topology提交给Storm的集群来运行。

在整个数据流之间有一个ZeroMQ组件,它主要负责消息传递工作的,通过协调可以避免数据传输中的排队阻塞现象。

Topology里面的每一个节点都是并行运行的。 在你的Topology里面, 你可以指定每个节点的并行度,Storm则会在集群里面分配那么多线程来同时计算。

Storm安装

Storm的依赖软件比较多,需要装Pythonzookeeperzeromq以及jzmq,然后才是storm的安装。

Storm的单机版安装过程

第一步,安装Python2.7.2

 

复制代码
# wget  http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
# tar zxvf Python-2.7.2.tgz
# cd Python-2.7.2
# ./configure   //配置依赖之类的,生成makefile
# make       //编译makefile
# make install  //安装
# vi /etc/ld.so.conf
在最后面追加/usr/local/lib/
# sudo ldconfig
复制代码

    至此,Python2.7.2就安装完毕了。

第二步,安装zookeeper

目的:协调整个集群,主要是做NimbusSupervisor的联系中介,管理集群中的组件的作用

复制代码
#wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
# tar zxf zookeeper-3.4.5.tar.gz
# cp -R zookeeper-3.4.5 /usr/local/
# ln -s /usr/local/zookeeper-3.4.5/ /usr/local/zookeeper
# vi ~./bashrc (设置ZOOKEEPER_HOME和ZOOKEEPER_HOME/bin) 
          追加:
          export ZOOKEEPER_HOME="/path/to/zookeeper"
          export PATH=$PATH:$ZOOKEEPER_HOME/bin
#cp /usr/local/zookeeper/conf/zoo_sample.cfg  /usr/local/zookeeper/conf/zoo.cfg
#cp /usr/local/zookeeper/conf/zoo_sample.cfg  /usr/local/zookeeper/conf/zoo.cfg 
复制代码

(zoo_sample.cfg制作$ZOOKEEPER_HOME/conf/zoo.cfg)

修改zoo.cfg文件内容

复制代码
#vim zoo.cfg
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper/zookeeperdir/zookeeper-data
dataLogDir=/usr/local/zookeeper/zookeeperdir/logs
# sudo mkdir /tmp/zookeeper
# sudo mkdir /var/log/zookeeper
复制代码

      至此,zookeeper的单机安装已经完成了。

第三步,安装zeromq以及jzmq

jzmq的安装貌似是依赖zeromq的,所以应该先装zeromq,再装jzmq

1)安装zeromq

zeromq是用来做底层通信的

zeromq是网络栈中新的一层,它是个可伸缩层,分散在分布式系统间。因此,它可支持任意大的应用程序。zeromq不是简单的点对点交互,相反,它定义了分布式系统的全局拓扑。zeromq应用程序没有锁,可并行运行。此外,它可在多个线程、内核和主机盒之间弹性伸缩。

复制代码
# wget http://download.zeromq.org/zeromq-3.2.2.tar.gz
# tar zxf zeromq-3.2.2.tar.gz
# cd zeromq-3.2.2
# ./configure
# make
# make install
# sudo ldconfig (更新LD_LIBRARY_PATH)
复制代码

这里要说一下在./configure中可能会遇到的问题:

configure:error:in '/usr/local/download/zeromq-2.1.7':

congifure:error:no acceptable C compiler found in $PATH 

See 'config.log' for more details

这是因为没有安装C编译器。

解决方法是:# yum install gcc*

之后遇到的问题是:Error:cannot link with -luuid, install uuid-dev

这是因为没有安装uuid相关的package

解决方法是:# yum install uuid*

# yum install e2fsprogs*

# yum install libuuid*

本人遇到的问题是出现了C++编译问题

解决办法

#apt-get install g++

#./configure

问题解决了以后就可以makemake install了,如此这般,zeromq就安装好了,接下来即可安装jzmq

2)安装jzmq   

这个找不到清楚的解释,目测是绑定javazeromq

复制代码
# yum install git      //这一步出现问题,找不到包,换用apt-get命令即可
# git clone git://github.com/nathanmarz/jzmq.git
# cd jzmq
# ./autogen.sh
# ./configure
# make
# make install
复制代码

然后,jzmq就装好了,这里有个网站上参考到的问题没有遇见,遇见的话可以参考下。在./autogen.sh这步如果报错:autogen.sh:error:could not find libtool is required to run autogen.sh,这是因为缺少了libtool,可以用#yum(apt-get) install libtool*来解决

除了上面的错误,还有一个错误could not find autoreconf.  autoconf and automake are required to run autogen.sh.

解决办法是apt-get install automake

make错误信息:

make[1]: *** No rule to make target `classdist_noinst.stamp',

needed by `org/zeromq/ZMQ.class'. Stop.

解决方法:手动创建classdist_noinst.stamp空文件。

touch src/classdist_noinst.stamp

make错误信息:

error: cannot access org.zeromq.ZMQ

class file for org.zeromq.ZMQ not found

javadoc: error - Class org.zeromq.ZMQ not found.

解决方法:手动编译,然后重新make即可通过。

cd src

javac -d . org/zeromq/*.java

 

第五步,安装Storm

复制代码
# wget http://github.com/downloads/nathanmarz/storm-0.7.1.zip
# unzip storm-0.7.1.zip
# cp -R storm-0.7.1 /usr/local/
#vi ~/.bashrc

          追加export STORM_HOME=/usr/local/storm-0.7.1

          export PATH=$PATH:$STORM_HOME/bin
#vim /etc/hosts
复制代码

127.0.0.1 后面加上本机名(JueFan),如果不加上去的话可能导致supervisor启动失败

到此为止单机版的Storm就安装完毕了。

 

第六步,测试一下本地模式的WordCount

首先启动zookeeper

#bin/zkServer.sh start

然后再分别启动StormNimbusSupervisor

#bin/storm nimbus
#bin/storm supervisor

如果想要监视StormTopology的运行状态,要先运行

#bin/storm ui

然后在网页上的8080端口即可看到运行状态

Github里有一个例子叫做storm_starter,我们可以用它来做测试。

安装maven

复制代码
#wget http://mirror.bjtu.edu.cn/apache/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz
#cp apache-maven-3.0.4-bin.tar.gz /usr/local
#cd /usr/local
#tar -zxvf apache-maven-3.0.4-bin.tar.gz
#ln -s apache-maven-3.0.4 maven
#vim /etc/profile 
export M2_HOME=/usr/local/maven
PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
#Source /etc/profile
#mvn -v 查看是否安装成功
复制代码

按照http://github.com/nathanmarz/storm-starter,执行这个程序需要用lein,我们用eclipse代替lein。打包后进行上传。

执行命令:# storm jar StormStarter.jar storm.starter.WordCountTopology

如果出现下面的文字,说明运行成功了~

11367 [Thread-25] INFO  backtype.storm.daemon.task  - Emitting: class storm.starter.ExclamationTopology$ExclamationBolt source: 2:3, stream: 1, id: {}, [golda!!!]

....

本人自己是按以下代码执行的:#storm jar storm-start.jar mytest.LogProcess tmp.txt , out.txt false

分享到:
评论

相关推荐

    细细品味Storm_Storm简介及安装

    ### Storm简介及安装知识点梳理 #### 一、Storm简介 **Storm** 是一款由BackType公司开发的分布式实时计算系统,后被...通过本文介绍的知识点,读者可以对Storm有一个全面的了解,并掌握其安装和配置的基本方法。

    webservice测试工具storm

    2. Storm工具介绍: Storm是一个强大的Web服务测试工具,它提供了对SOAP、RESTful API等不同类型的Web服务进行全面测试的能力。这款工具支持创建复杂的测试场景,包括单个请求、脚本化的测试序列,以及负载和性能...

    storm组件应用说明书

    **一、Storm的安装与配置** 1. **Zookeeper集群搭建**:Zookeeper是Storm集群中的关键组件,用于协调和管理各个节点。在安装Storm前,需要先部署Zookeeper集群,确保所有节点之间的通信稳定可靠。安装步骤包括配置...

    Flume+kafka+Storm整合

    本篇内容重点介绍了如何利用Flume、Kafka与Storm这三个开源工具实现一套完整的实时数据流处理系统。 **Flume** 是一个高可靠、高性能的服务,用于收集、聚合和移动大量日志数据。它具有简单灵活的架构,基于流的...

    storm1.0 搭建

    本文将详细介绍如何搭建一个简单的 Storm 1.0 集群。 #### 二、搭建前的准备工作 在搭建 Storm 1.0 集群之前,有几个重要的前提条件需要满足: 1. **安装 Zookeeper 集群**:Storm 1.0 使用 Zookeeper 来管理集群...

    flume+kafka+storm搭建

    Storm的安装和配置较为简单,主要包括下载对应版本的包并解压缩。由于Storm是使用Java编写的,因此需要安装Java环境。然后下载Python,并设置Python环境变量,因为Storm的部分功能依赖Python脚本。最后执行Storm的...

    Storm实战构建大数据实时计算( 带书签目录 高清完整版)

    书中会详细介绍Storm的安装、配置、部署和监控方法,帮助读者在实际环境中运行和管理Storm集群。 9. **最佳实践** 作者会分享如何优化拓扑性能、调整资源分配,以及如何设计可扩展和高可用的实时处理系统等实践...

    storm集群部署文档

    Apache Storm 是一款开源的分布式实时计算系统,它提供了简单而强大的API来处理无限的数据流。Storm的设计使其能够支持各种类型的流处理应用,包括实时分析、在线机器学习、持续计算、分布式RPC以及ETL等。 #### 二...

    jstorm storm入门demo

    4. **JStorm的安装与配置**:指导如何安装JStorm,配置环境变量,以及如何配置storm.yaml等关键配置文件。 5. **创建和运行示例**:详细解释压缩包中的代码结构,包括四个类的功能,如何编译源代码,以及如何启动...

    Storm实战构建大数据实时计算

    还有可能介绍Storm Trident与Spark Streaming、Flink等其他实时处理框架的对比,帮助读者更好地选择适合项目的技术栈。 总而言之,《Storm实战构建大数据实时计算》旨在为读者提供一套全面的Storm学习资源,从理论...

    基于Storm的分布式流计算集群详细配置

    以下步骤介绍了ZooKeeper的安装和配置: 1. **JDK安装**:所有服务器都需要安装Java开发环境(JDK),这里是JDK 7。下载并解压后,设置环境变量,并使改动生效。 2. **ZooKeeper安装**:下载ZooKeeper的tar包,解压...

    storm集群搭建Java客户端测试代码.zip

    下面将详细介绍Storm集群的搭建步骤以及Java客户端的相关知识。 1. **Storm集群环境搭建**: - **安装JDK**:首先确保系统安装了Java Development Kit (JDK) 8或以上版本,因为Storm依赖Java环境运行。 - **下载...

    【46】2018年最新java大数据基于storm开发实时流处理器视频教程 .txt

    通过以上介绍可以看出,Storm为开发者提供了一个灵活高效的框架来处理实时数据流,特别是在大规模分布式环境下展现出其独特的优势。无论是对于初学者还是资深开发者而言,《2018年最新Java大数据基于Storm开发实时流...

    大数据技术与应用基础-第9、10章流实时处理系统Storm、企业级、大数据流处理Apex.pptx

    **二、Storm安装与配置** 安装Storm通常需要先搭建ZooKeeper集群,因为Storm依赖ZooKeeper进行协调和管理。具体步骤如下: - 下载并解压ZooKeeper到指定目录。 - 配置ZooKeeper的配置文件`zoo.cfg`,包括设置`...

    大数据分析架构师顶级培训课程 Storm基础理论与案例 共57页.pptx

    #### Storm简单介绍 - **起源与发展**:Storm最初由BackType公司开发,底层采用Clojure语言实现。2011年,Twitter收购BackType后,进一步利用Storm解决实时数据处理问题。在中国,阿里巴巴基于Storm的核心部分使用...

    Storm本地模式WordCount亲测可用

    本教程将详细介绍如何使用Java实现一个基于Storm的WordCount应用,并在本地模式下运行。WordCount是最基础的数据处理范例,旨在统计输入文本中的单词出现次数。 首先,我们需要理解Storm的基本组件。Storm的核心...

    Storm+Zookeeper 流模式大数据处理部署手册

    2. Storm的安装与部署: - 下载Storm源码:`wget https://mirrors.tuna.tsinghua.edu.cn/apache/storm/apache-storm-2.2.0/apache-storm-2.2.0.tar.gz` - 解压:`tar -zxvf apache-storm-2.2.0.tar.gz ~/` - 配置...

Global site tag (gtag.js) - Google Analytics