这篇文章将为大家详细讲解有关ubuntu单机版搭建storm环境的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站设计、外贸营销网站建设、蓬溪网络推广、微信小程序定制开发、蓬溪网络营销、蓬溪企业策划、蓬溪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供蓬溪建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
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
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://www.makaidong.com
协调可以避免数据传输中的排队阻塞现象。
topology里面的每一个节点都是并行运行的。 在你的topology里面, 你可以指定每个节点的并行度,storm则会在集群里面分配那么多线程来同时计算。
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
因为设备数量有限,所以在本地使用的是VMware Workstation虚拟机搭建的一个Ubuntu 64位Server版本。网上资料很多就不多做详述,需要花费些时间。
本地选择的是 JDK 1.7下在地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
下载好后放入指定位置(如/home/geyg/storm/install),使用如下命令安装
tar zxvf jdk-7u79-linux-x64.tar.gz
为了方便管理,可将解压后的文件移至另一个文件夹。
sudo mv jdk1.7.0_79/ /usr/lib/jdk1.7/
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使其生效
Ubuntu系统默认已安装,可通过下面shell命令查看版本号:
python -V
若系统中尚未安装Python,可按下面步骤安装:
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/
执行下面命令使Python生效
sudo ldconfig
至此,Python安装完毕。
目的:协调整个集群,主要是做nimbus和supervisor的联系中介,管理集群中的组件的作用
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.4.7/zookeeper-3.4.7.tar.gz
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
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的单机安装已经完成了。
zeromq是用来做底层通信的
zeromq是网络栈中新的一层,它是个可伸缩层,分散在分布式系统间。因此,它可支持任意大的应用程序。zeromq不是简单的点对点交互,相反,它定义了分布式系统的全局拓扑。zeromq应用程序没有锁,可并行运行。此外,它可在多个线程、内核和主机盒之间弹性伸缩。
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
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。
git clone git://github.com/nathanmarz/jzmq.git
//如果没有git,安装即可:sudo apt-get install git
./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!
wget http://apache.fayea.com/storm/apache-storm-0.10.0/apache-storm-0.10.0.zip
unzip apache-storm-0.10.0.zip mv -r apache-storm-0.10.0 /usr/local/
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就安装完毕了。
bin/zkserver.sh start
#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运行期间的相关信息。
整个平台插件安装系统配置在~/.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环境的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。