Twitter Storm:单机环境的安装与配置
好久没写博客了,这一段时间一直被导师push着做毕业设计。由于目前的方向偏向于图像识别检索,毕设打算做一个基于分布式计算平台的图像检索系统,查阅相关资料发现Hadoop不适用于实时的计算环境,而Twitter Storm却能够满足自己的需求。我花了大概3~4天的时间,才将一个单机环境下的Storm平台部署好,期间经历了各种各样的“奇葩”的错误,此外,网上相关的Storm配置文章各种各样,叙述得多少有些不完整,为此我特下下这篇博客,记录整个安装过程,和大家分享。
1 准备阶段
在配置一个Storm环境之前,我们首先需要一个Linux操作系统。我使用的是Ubuntu 12.04,系统最好是全新安装的,以防止各种各种别的问题。因为我手头上有两个版本的Ubuntu:11.10和12.04,。在11.10上安装后,supervisor进程总是抛出异常,也搞不清楚是操作系统版本的问题还是别的软件的影响。因此,为了减少问题的出现,我建议系统使用全新的。此外,尽量保证操作系统处于联网状态,否则Storm在运行时会抛出网络不可达的SocketException。
PS:CentOS也可以,但是我没有在上面尝试过。有兴趣的读者可以自行尝试一下。
Storm需要JVM的支持,选择Java 1.6或者Java 1.7都可以。下面是Java的安装过程与环境变量的配置,如果你不知道的话或者不像去其他地方查阅资料的话,可以参考下面的安装步骤。
1.1(a) Java 1.6的安装与配置
(1)下载,在http://www.oracle.com/technetwork/indexes/downloads里下载需要的linux的java版本
(2)安装(假设下载的文件为java1.6.0_37.bin,放在/home/chenny目录下)
a.将下载的安装文件授权为可以执行:
>>sudo chmod u+x java1.6.0_37.bin
b.改变工作目录到你要安装java的地方,我的是/usr/lib,所以是cd /usr/lib
c.运行安装文件:
>>/home/chenny/java1.6.0_37.bin
(3)环境设置,打开/etc/profile文件:
>>sudo gedit /etc/profile
在文件最后增加如下几行:
export JAVA_HOME=/usr/lib/jdk1.6.0_37
export JRE_HOME=/usr/lib/jdk1.6.0_37/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
(4)替换系统原有的OpenJDK
>>sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk1.6.0_37/bin/java 300
>>sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk1.6.0_37/bin/javac 300
>>sudo update-alternatives --config java
然后输入我们需要的那个JDK作为默认即可。注意,如果在终端中输入命令的时候,系统提示没有权限操作,那我们使用sudo以超级用户的身份运行即可。
(5)注销系统或者重启机器,在终端中键入java -version得到java version "1.6.0_37"的话表示安装好java环境了.
1.1(b) Java 1.7的安装配置
(1)去官网下载JDK,我下载的版本是最新的,jdk-7u21-linux-i586.tar.gz。
(2)解压其到我们想要存放的目录:
>>sudo mkdir /usr/lib/jvm
>>tar zxvf ./jdk-7u21-linux-i586.tar.gz -C /usr/lib/jvm
(3)此后的步骤与1.1(a)中的(3)-(5)相同。
1.2 Python 2.7+的安装
Ubuntu 12,.04中已经自带了Python 2.7.3,无需再安装;对于其他系统或者Python版本较低的,此步骤需要安装Python 2.7+的版本。
1.3 其他相关软件的安装
在我们安装Storm的过程中,需要其他一些小的软件包,例如,automake、g++、build-essential、uuid-dev、unzip、autoconf等等,这些软件在之后的过程如果缺失的话,会出现相关的提示,那样的话,提示缺少哪些软件,就安装相应的软件包即可。
2 ZooKeeper的安装配置
Ubuntu12.04中自带的有一个zookeeper,不知道干什么用的,不放心的话,可以使用sudo apt-get remove zookeeper先将其移除。我使用的版本是zookeeper 3.3.5,下载之后,我们将其解压到相应位置,为了使用方便,我们可以按照安装Java的过程为ZooKeeper配置环境变量:
>>sudo gedit /etc/profile
在其中添加:
export ZOOKEEPER_HOME=/home/chenny/Storm/zookeeper-3.3.5
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$JRE_HOME/bin:$PATH
将zookeeper-3.4.5/conf目录下面的 zoo_sample.cfg修改为zoo.cfg,配置文件内容如下所示:
tickTime=2000
dataDir=/home/chenny/Storm/tmp/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
每个变量的含义可以参见配置文件中的注释。在此不再赘述。使用:
>>zkServer.sh start
来启动ZooKeeper服务器,如果在启动过程中,提示找不到/etc/zookeeper/zoo.cfg这个配置文件,我们就需要将上面修改过的zoo.cfg拷贝到/etc/zookeeper下:
>>sudo cp -R /home/chenny/Storm/zookeeper-3.3.5/conf/zoo.cfg /etc/zookeeper
然后再次启动服务,此时就可以了。然后使用:
>>zkServer.sh status
来查看服务器状态,此时服务器的模式(Mode)应该是standalone。我们可以使用
>>zkCli.sh
来连接服务器,如果在这个过程中没有抛出异常的话,就说明我们能够正确地配置了Zookeeper。
3 ZeroMQ的安装
我使用的版本是zeromq-2.1.7,下载,解压,进入目录,输入:
>>./autogen.sh
>>./configure
>>make
>>sudo make install
4 jzmq的安装
>>git clone https://github.com/nathanmarz/jzmq.git
>>cd jzmq
>>./autogen.sh
>>./configure
>>make
>>sudo make install
安装时,可能碰到两个错误:
(1).make[1]: *** 没有规则可以创建“org/zeromq/ZMQ.class”需要的目标“classdist_noinst.stamp”。 停止
修正方法,创建classdist_noinst.stamp文件:
touch src/classdist_noinst.stamp
(2).错误:无法访问 org.zeromq.ZMQ
修正方法,进入src目录,手动编译相关java代码:
javac -d ./src/org/zeromq/*.java
5 Storm
我使用的Storm版本是最新的稳定版0.8.2,下载,解压,修改/conf/storm.yaml配置文件:
storm.zookeeper.servers:
- "192.168.1.117"
nimbus.host: "192.168.1.117"
storm.local.dir: "/home/chenny/Storm/tmp/storm"
java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"
topology.debug: "true"
需要注意的是Storm读取此配置文件,要求每一行开始都要有一个空格,每一个冒号后面也要有一个空格,否则就会出现错误,造成启动失败。我们同样可以为Storm添加环境变量,来方便我们的启动、停止。
5.1 启动Storm
>>storm nimbus&
>>storm supervisor&
>>storm ui&
如果我们没有为storm添加环境变量,那么在启动的时候,我们就需要使用绝对路径或相对路径来定位/chenny/Storm/storm-0.8.2/bin/storm这个程序。启动完成后,我们可以使用jps来查看进程状态:
>>jps
在没有运行任务时,我们必须应该要看到5个进程:QuorumPeerMain、nimbus、core、Jps、supervisor。否则就需要检查是否正确地启动,如果启动之后没有过多久就停止了,我们就需要查看~/storm-0.8.2/logs下面的对应的log文件,查看引起异常的原因是什么,然后解决后再次启动。
同时,我们可以在浏览器中输入http://127.0.0.1:8080来进入Storm UI的界面,可以查看Storm运行期间的相关信息。
6 运行第一个Topology程序
网上别的资料介绍了许多方式来编译可执行的Topology程序,我们这里提供一个简单的办法,只需要使用Eclipse和相关的Jar包即可,Ubuntu或者Windows环境下均可。我们需要从github上下载下来一个供初学者学习的storm-starter,同时,我们还需要有commons-collections-3.2.1-bin.tar.gz、twitter4j-2.2.6.zip和storm-0.8.2.zip等软件包,如果没有的话,需要去下载。以Windows XP下的Eclipse为例。首先我们将所有需要的包解压放到桌面,打开Eclipse,新建Java Project,名字任意取,我取名叫做MyFirstStormApp,然后点击Finish。
在MyFirstStormApp上右键,选择Import,然后选择File System:
在From Directory中输入相应的路径或者点击Browse,选择路径:
我们依次展开storm-starter-master/src/jvm/storm,选中jvm文件夹,点击确定,然后勾选jvm,点击finish:
这样,我们就在左侧看到Project的结构:
拖动storm到src中,然后安装同样的方式将storm-starter-master/storm-starter-master/multilang导入到项目中,然后我们就在左侧看到如下图所示的结构:
可以看到上面有很多红叉,此时,我们就需要导入项目所依赖的jar包,在项目上右键,选择Properties,然后Java Build Path,切换到Libraries选项夹下,点击Add External JARs:
将storm-0.8.2/lib目录下的所有jar包都加入到项目中,将commons-collections-3.2.1.jar添加到项目中,将twitter4j-2.2.6/lib中的所有jar包加入到项目中,将storm-0.8.2/storm-0.8.2.jar加入到项目中,然后点击OK,这个时候,可以看到项目中的所有错误都消失了。接下来,我们将PrintSampleStream.java和TwitterSampleSpout.java中的注释取消,或者将这两个文件删除。
在项目上选择Export,然后选择JAR file,在下一页,我们将项目导出,勾选如下图所示:
点击finish后,如果没有错误,只有warning的话,就不用管了,否则我们需要检查错误,然后重新打包。打包后的jar包是MyFirstStormApp.jar,将它拷贝到部署有Storm的机器上,然后在终端中输入:
>>storm jar MyFirstStormApp.jar storm.starter.WordCountTopology test2
如果没有错误,就成功提交了,在浏览器中输入http://127.0.0.1:8080,可以看到这个Topology已经在运行了,点击它的名字,可以进入Topology summary:
如果看到有Emiited等数据,就说明我们正确地完成了配置。Enjoy~
作者:Chenny Chen
出处:http://www.cnblogs.com/XjChenny/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Twitter Storm:单机环境的安装与配置的更多相关文章
- storm单机环境部署
前面说过storm集群的部署,这篇主要介绍storm单机环境部署,其实他们之间很类似,就是将之前配置文件中所有的集群条目改成本机的地址即可,部署之前应该按前面solr和zookeeper单机环境部署那 ...
- 【C#】VS2015开发环境的安装和配置(二)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 按下面介绍的步骤安装即可. 一.安装JDK和Android SDK ...
- 【C#】VS2015开发环境的安装和配置(一)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 一.简介 为了避免网上乱七八糟的过时介绍,避免误导初学者,这次把至2 ...
- Java环境的安装与配置
Java环境的安装与配置 环境:Java8,win10 推荐oracle官网oracle官网https://www.oracle.com/index.html下载JDK进行安装 选择自己需要的版本下载 ...
- Appium环境的安装与配置,Python测试脚本测试
Appium自动化测试系列1 - Appium环境的安装与配置 发表于4个月前(2015-01-27 14:34) 阅读(803) | 评论(0) 0人收藏此文章, 我要收藏 赞0 寻找 会’偷懒 ...
- go 语言开发环境的安装与配置
go 语言开发环境的安装与配置 编辑器选择 一直以来都是用sublime,但是听说sublime对于golang的插件支持并不是特别完善,并且VS Code只要在自身所带的扩展商店里安装go插件就可以 ...
- linux环境jdk安装及配置
linux环境jdk安装及配置 linux环境jdk安装及配置 1.下载jkd( http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- Ubuntu16.04下LAMP环境的安装与配置
Ubuntu16.04下LAMP环境的安装与配置 最近做个实验需要用到Ubuntu环境的靶场,所以这里介绍下Ubuntu环境下LAMP的安装与配置,话不多说,我们gkd! 1.Apache2的安装 首 ...
- 在Linux环境下安装和配置phpmyadmin
phpmyadmin是一种MySQL的图形化管理工具,该工具允许你在web界面上管理你的mysql数据库,不可谓不方便快捷. 此次安装与配置是在centos 6.4系统下,该系统已部署lnmp环境.关 ...
随机推荐
- java中IO写文件工具类
以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足 ...
- C语言练手自己编写学生成绩管理系统
#include<stdio.h> #include<stdlib.h> /*定义学生结构体*/ struct Student { ]; ]; float Mark1; flo ...
- Java对象比较器对泛型List进行排序-Demo
针对形如:字段1 字段2 字段3 字段n 1 hello 26 7891 world 89 5562 what 55 4562 the 85 452 fuck 55 995 haha 98 455 以 ...
- WCF与Web API 区别
WCF与Web API 区别(应用场景) Web api 主要功能: 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, ...
- Linux分配给该用户没有权限登陆
Linux分配给该用户没有权限登陆 sudo visudo username ALL=(ALL) NOPASSWD:ALL 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- C# TextBox实现全选
A. 设置全局变量: 1.定义了个全局变量放本次点击的textbox的名字,默认为空. 2.textbox的Enter事件里SelectAll()一下 3.Click事件里判断全局变量是否是该text ...
- ADS-B显示终端5.9
更改日志 1 更新背景地图.增加了全国范围内的VOR电台.DME.NDB导航台信息,包含有坐标信息.代码信息.频率等内容. VOR电台.DME.NDB导航台信息来自中国民航局公布的航行情况资料汇 ...
- PhotoShop基本工具 -- 移动工具
艺术或学习的东西吧, 爱好 比学编程还难 PS版本号 : PhotoShop CS6 1. 移动工具 (1) 工具栏和属性栏 工具栏 和 属性栏 : 左側的是工具栏, 每选中一个工具, 在菜单条的 ...
- QTP特点有哪些?
QTP特点有哪些? 浏览:77 | 更新:2013-06-19 12:35 QTP是一个侧重于功能的回归自动化测试工具:提供了很多插件,如:.NET的,Java的,SAP的,Terminal Emul ...
- Smarty注释代码
所有的smarty模板标签都被加上了定界符. 默认情况下是 { 和},但它们是可被改变的. 例如,我们假定你在使用默认定界符. 在smarty里,所有定界符以外的内容都是静态输出的,或者称之为不可改变 ...