温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ubuntu单机版搭建storm环境的示例分析

发布时间:2021-11-15 17:20:27 来源:亿速云 阅读:106 作者:小新 栏目:云计算

这篇文章将为大家详细讲解有关ubuntu单机版搭建storm环境的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1 参考博文

http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%8E%92%E8%A1%8C/5364.shtml

http://jingpin.jikexueyuan.com/article/36537.html

http://my.oschina.net/mingdongcheng/blog/43009?fromerr=Mni4Cbek

http://stackoverflow.com/questions/22216433/java-home-not-set-when-install-storm

http://www.xuebuyuan.com/1932716.html

2 Storm简介

storm的集群跟hadoop的集群非常像。但是在hadoop上面你运行的是mapreduce的job, 而在storm上面你运行的是topology。

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

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

ubuntu单机版搭建storm环境的示例分析

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的集群来运行。

ubuntu单机版搭建storm环境的示例分析

在整个数据流之间有一个zeromq组件,它主要负责消息传递工作的,通过

此文来自: 马开东博客  转载请注明出处 网址:  http://www.makaidong.com  

协调可以避免数据传输中的排队阻塞现象。

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

3 安装准备

1.     Ubuntu 14.04

2.     JDK 版本 1.7

3.     Python 2.7

4.     zookeeper 3.4.7

5.     ZeroMQ 2.1.7

6.     jzmq

7.     storm 0.10.0

4 安装步骤

4.1 Linux 安装

  因为设备数量有限,所以在本地使用的是VMware Workstation虚拟机搭建的一个Ubuntu 64位Server版本。网上资料很多就不多做详述,需要花费些时间。

4.2 JDK安装

4.2.1 JDK下载

  本地选择的是 JDK  1.7下在地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

4.2.2 JDK安装

  下载好后放入指定位置(如/home/geyg/storm/install),使用如下命令安装

tar zxvf jdk-7u79-linux-x64.tar.gz

为了方便管理,可将解压后的文件移至另一个文件夹。

sudo mv jdk1.7.0_79/ /usr/lib/jdk1.7/

4.2.3 JDK配置

  1.进入/etc目录

  2.将JDK配置信息加入profile文件

# The following configuration is for Java
export JAVA_HOME=/usr/lib/jdk1.7
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib

  3.使用下面组合命令使配置生效

chmod +x profile (这条命令需要超级权限)  
source profile

  4.使用下面,验证JDK安装

java -version

  如果安装版本信息显示则安装成功

备注:JDK配置也可在~/.bashrc中进行配置,配置后source ~/.bashrc使其生效

4.3 Python安装

Ubuntu系统默认已安装,可通过下面shell命令查看版本号:

python -V

若系统中尚未安装Python,可按下面步骤安装:

4.3.1 Python下载

wget  http://www.python.org/ftp/python/2.7.2/python-2.7.2.tgz

4.3.2 Python安装

tar zxvf python-2.7.2.tgz
cd python-2.7.2 
./configure   //配置依赖之类的,生成makefile
make       //编译makefile
make install  //安装

4.3.3 Python配置

vi /etc/ld.so.conf

在该文件最后/usr/local/lib/

执行下面命令使Python生效

sudo ldconfig

至此,Python安装完毕。

4.4 zookeeper 安装

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

4.4.1 zookeeper下载

wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.4.7/zookeeper-3.4.7.tar.gz

4.4.2 zookeeper安装

tar zxvf zookeeper-3.4.7.tar.gz
cp -r zookeeper-3.4.7 /usr/local/
cd /usr/local
mv zookeeper-3.4.7 zookeeper

4.4.3 zookeeper配置

vi ~/.bashrc

该文件末尾追加下面代码

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bi

修改zoo.cfg文件内容

cp /usr/local/zookeeper/conf/zoo_sample.cfg  /usr/local/zookeeper/conf/zoo.cfg

该文件内dataDir为:

dataDir=/usr/local/zookeeper/zookeeperdir/zookeeper-data

创建目录/usr/local/zookeeper/zookeeperdir/zookeeper-data

cd /usr/local/zookeeper
mkdir zookeeperdir
cd zookeeperdir
mkdir zookeeper-data

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

4.5 ZeroMQ安装

zeromq是用来做底层通信的

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

4.5.1 ZeroMQ下载

wget http://download.zeromq.org/zeromq-2.1.7.tar.gz

4.5.2 ZeroMQ安装

tar zxvf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./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编译器。

解决方法是:# apt-get install gcc*

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

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

解决方法是:# apt-get install uuid*

# apt-get install e2fsprogs*

# apt-get install libuuid*

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

解决办法

#apt-get install g++

#./configure

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

4.6 jzmq安装

4.6.1 jzmq下载

git clone git://github.com/nathanmarz/jzmq.git

//如果没有git,安装即可:sudo apt-get install git

4.6.2 jzmq安装

./autogen.sh

  //可能会报缺包,首先安装: sudo apt-get install libtool auto-make

可能会报缺少:pkg-config工具

wget  http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz

 tar  zxf  pkg-config-0.23.tar.gz

 cd  pkg-config-0.23

./configure --prefix=/usr/local/pkg-config-0.23 --datarootdir=/usr/share

 make

 sudo make install

安装完成后设置PATH:(后面要用到pkg-config)

 export  PATH=.:/usr/local/pkg-config-0.23/bin:$PATH

(注意:请选择pkg-config-0.23.tar.gz或之前版本安装,我选择了0.25或0.26最新版本make是折腾了很久通不过,请不要再重复掉到这个坑里,pkg-config-0.23之前版本的安装也是有些小陷阱的,请参阅下面)

小陷阱——安装 pkg-config<=0.23需要注意的地方:

./configure  --prefix=/usr/local/pkg-config-0.23  --datarootdir=/usr/share

--prefix=/usr/local/pkg-config-0.23指定pkg-config安装路径,这不是重点;

重点是--datarootdir=/usr/share它直接关系到你后面能否成功编译jzmq.它指明了pkg.m4将要存放 的位置,jzmq在编译的过程中需要调用 PKG_CHECK_MODULES() 宏(Macro),这个Macro是pkg-config和Autoconf/Automake/aclocal交互的主要接口

参阅英文资料:

The main interface between autoconf and pkg-config is the PKG_CHECK_MODULES macro, which provides a very basic and easy way to check for the presence of a given package in the system. Nonetheless, there are some caveats that require attention when using the macro.

大概意思就是:

autoconf和pkg-config的之间的主要的交互接口是通过PKG_CHECK_MODULES宏,它提供了一个非常基本的和简单的方法来检查系统中的一个给定的包是否存在。然而使用宏时,也有一些需要注意的事项。

语法:

PKG_CHECK_MODULES(prefix, list-of-modules, action-if-found, action-if-not-found)

参数的意思参阅:

prefix
Each call to PKG_CHECK_MODULES should have a different prefix value (with a few exceptions discussed later on). This value, usually provided in uppercase, is used as prefix to the variables holding the compiler flags and libraries reported by pkg-config.
 
For instance, if your prefix was to be FOO you'll be provided two variables FOO_CFLAGS and FOO_LIBS.
 
This will also be used as message during the configure checks: checking for FOO....
 
list-of-modules
A single call to the macro can check for the presence of one or more packages; you'll see later how to make good use of this feature. Each entry in the list can have a version comparison specifier, with the same syntax as the Requires keyword in the data files themselves.
 
action-if-found, action-if-not-found
As most of the original autoconf macros, there are boolean values provided, for the cases when the check succeeded or failed. In contrast with almost all of the original macros, though, the default action-if-not-fault will end the execution with an error for not having found the dependency.

本例中生成的pkg.m4文件应该存在于 /usr/share/aclocal下。这个关系到autoconf和pkg-config的之间通过CALL PKG_CHECK_MODULES宏来检查给定依赖包是否存在,否则在编译JZMQ时将会报告”Syntax error  ./configure: line 15272:  PKG_CHECK_MODULES(' ` ".

cd   ~/jzmq
 
./configure 
 
$ ........ chechking  for  .......
 
ok,success!
 
$ make
 
...
 
make[1]: *** No rule to make target `classdist_noinst.stamp', needed by `org/zeromq/ZMQ.class'.  Stop.
 
make: *** [all-recursive] Error 1


 然后,touch “classdist_noinst.stamp”:

$ touch src/classdist_noinst.stamp
$ make
...
make[1]: *** No rule to make target `org/zeromq/ZMQException.class, needed by `all'.  Stop.
make: *** [all-recursive] Error 1
 然后, 编译class:

 然后, 编译class:

$ cd src/org/zeromq/
$ /jzmq/src/org/zeromq]$ javac  *.java
$ cd ..
$ make
...  success!
$ sudo make install

so then jzmq has installed  successfully and enjoy  it yourself!

4.7 Storm安装

4.7.1 storm下载

wget http://apache.fayea.com/storm/apache-storm-0.10.0/apache-storm-0.10.0.zip

4.7.2 storm安装

unzip apache-storm-0.10.0.zip
mv -r apache-storm-0.10.0 /usr/local/

4.7.3 storm配置

vi ~/.bashrc

该配置文件末尾追加如下内容:

export storm_home=/usr/local/apache-storm-0.10.0
export PATH=$PATH:$storm_home/bin
vi /etc/hosts

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

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

5 启动

5.1 启动zookeeper

bin/zkserver.sh start

5.2 启动storm

#bin/storm nimbus
#bin/storm supervisor
#bin/storm ui

启动完成后,我们可以使用jps来查看进程状态:

#jps

在没有运行任务时,我们必须应该要看到5个进程:QuorumPeerMain、nimbus、core、Jps、supervisor。否则就需要 检查是否正确地启动,如果启动之后没有过多久就停止了,我们就需要查看~/apache-storm-0.10.0/logs下面的对应的log文件,查看引起异常的原因是什么,然后解决后再次启动。

同时,我们可以在浏览器中输入http://127.0.0.1:8080来进入Storm UI的界面,可以查看Storm运行期间的相关信息。

6 Test

7 备注

整个平台插件安装系统配置在~/.bashrc中进行配置,最终配置如下(供参考):

export JAVA_HOME=/usr/lib/jdk1.7

export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

export ZOOKEEPER_HOME=/usr/local/zookeeper

export CLASSPATH=${JAVA_HOME}/lib

export storm_home=/usr/local/apache-storm-0.10.0

export PATH=$PATH:$storm_home/bin

关于“ubuntu单机版搭建storm环境的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI