storm是java还是python_storm local mode 需要安装python吗?

Storm的简单介绍与安装":

关键词: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组件,它主要负责消息传递工作的,通过此文来自: 马开东博客 转载请注明出处 网址: http//wwwmakaidong.com协调可以避免数据传输中的排队阻塞现象。

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

storm安装

storm的依赖软件比较多,需要装python、zookeeper、zeromq以及jzmq,然后才是storm的安装。

storm的单机版安装过程

第一步,安装python2.7.2

# wget http//wwwpython.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

目的:协调整个集群,主要是做nimbus和supervisor的联系中介,管理集群中的组件的作用#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-datadatalogdir=/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是网络栈中新的一层,它是个可伸缩

此文来自: 马开东博客 转载请注明出处 网址: http//wwwmakaidong.com层,分散在分布式系统间。因此,它可支持任意大的应用程序。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 $pathsee '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

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

2)安装jzmq

这个找不到清楚的解释,目测是绑定java与zeromq# 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.1export path=$path:$storm_home/bin

#vim /etc/hosts

在127.0.0.1 后面加上本机名(juefan),如果不加上去的话可能导致supervisor启动失败到此为止单机版的storm就安装完毕了。

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

首先启动zookeeper

#bin/zkserver.sh start

然后再分别启动storm的nimbus和supervisor

#bin/storm nimbus

#bin/storm supervisor

如果想要监视storm的topology的运行状态,要先运行#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: {},

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值