十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要讲解了“Storm集群的搭建与配置方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Storm集群的搭建与配置方法”吧!
克东网站建设公司创新互联,克东网站设计制作,有大型网站制作公司丰富经验。已为克东千余家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的克东做网站的公司定做!
安装Storm集群
这一章节将详细描述如何搭建一个Storm集群。下面是接下来需要依次完成的安装步骤:
搭建Zookeeper集群;
安装Storm依赖库;
下载并解压Storm发布版本;
修改storm.yaml配置文件;
启动Storm各个后台进程。
1、Zookeeper的搭建参考:http://my.oschina.net/u/2377453/blog/464739
搭建Zookeeper集群注意事项:
由于Zookeeper是快速失败(fail-fast)的,且遇到任何错误情况,进程均会退出,因此,最好能通过监控程序将Zookeeper管理起来,保证Zookeeper退出后能被自动重启。详情参考这里。
Zookeeper运行过程中会在dataDir目录下生成很多日志和快照文件,而Zookeeper运行进程并不负责定期清理合并这些文件,导致占用大量磁盘空间,因此,需要通过cron等方式定期清除没用的日志和快照文件。详情参考这里。具体命令格式如下:java -cp zookeeper.jar:log4j.jar:conf org.apache.zookeeper.server.PurgeTxnLog
2、安装Storm依赖库
接下来,需要在Nimbus和Supervisor机器上安装Storm的依赖库,具体如下:
ZeroMQ 2.1.7 – 请勿使用2.1.10版本,因为该版本的一些严重bug会导致Storm集群运行时出现奇怪的问题。少数用户在2.1.7版本会遇到"IllegalArgumentException"的异常,此时降为2.1.4版本可修复这一问题。
JZMQ
Java 6
Python 2.6.6
unzip
以上依赖库的版本是经过Storm测试的,Storm并不能保证在其他版本的Java或Python库下可运行。
注意:
安装过程中经常出现需要依赖,请务必使用yum安装各种依赖
YUM出现问题请参考这篇文章:http://my.oschina.net/u/2377453/blog/466141
3、安装ZMQ 2.1.7
下载后编译安装ZMQ:
#wget //http://download.zeromq.org/zeromq-2.1.7.tar.gz//下载 #tar -xzf zeromq-2.1.7.tar.gz //解压 #cd zeromq-2.1.7 //切换目录 //编译且安装 #./configure #make #make install
安装时可能出现如下依赖: 1.安装c++编译器 #sudo yum install gcc-c++ 2.下载libsodium //https://github.com/jedisct1/libsodium/archive/1.0.1.tar.gz 3.安装libtool #sudo yum install libtool 4.安装autoconf-2.68 #wget //http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz #./configure #make && make install
注意事项:
1. 如果安装过程报错uuid找不到,则通过如下的包安装uuid库: #yum install uuid* #yum install e2fsprogs* 2. 如果出现c++编译环境 #yum install gcc-c++
4、安装JZMQ
下载后编译安装JZMQ:
#wget // https://codeload.github.com/zeromq/jzmq/zip/master//下载 #unzip jzmq-master.zip //解压 #cd jzmq-maste //切换目录 //编译安装 #./autogen.sh #./configure #make #make install
为了保证JZMQ正常工作,可能需要完成以下配置:
正确设置 JAVA_HOME环境变量
安装Java开发包
注意事项:
1. 如果运行./configure
命令出现connot find zmq.h
加入两台export: export CPPFLAGS=-I/root/installs/zeromq/include export LDFLAGS=-L/root/installs/zeromq/lib/
5、 安装Java 6
1. 下载并安装JDK 6
2. 配置JAVA_HOME环境变量;
3. 运行java、javac命令,测试java正常安装。
6、安装Python2.7.10
1. 下载Python2.7.10:
wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz
2. 编译安装Python2.7.10:
#xz -d Python-2.7.10.tar.xz//可能需要安装xz,sudo yum install xz #tar –xvf Python-2.7.10.tar.gz #cd Python-2.7.10 #./configure #make #make install 注意: 1、python默认安装路径:/usr/local/bin/pythonN 2、新安装的python要替代系统自带的python必须将系统自带的python的链接文件删除:/usr/bin/python 3、使用命令创建自己的链接文件:ln -s /usr/local/bin/pythonN /usr/bin/python N位版本号
3. 测试Python2.7.10:
#python -V Python 2.7.10
7、安装unzip
1. 如果使用RedHat系列Linux系统,执行以下命令安装unzip:
apt-get install unzip
2. 如果使用Debian系列Linux系统,执行以下命令安装unzip:
yum install unzip
8、下载并解压Storm发布版本
下一步,需要在Nimbus和Supervisor机器上安装Storm发行版本。
1. 下载Storm发行版本,推荐使用Storm0.8.1:
wget https://github.com/downloads/nathanmarz/storm/storm-0.8.1.zip
2. 解压到安装目录下:
unzip storm-0.8.1.zip
3. 修改storm.yaml配置文件
Storm发行版本解压目录下有一个conf/storm.yaml
文件,用于配置Storm。默认配置在这里可以查看。conf/storm.yaml
中的配置选项将覆盖
defaults.yaml中的默认配置。以下配置选项是必须在conf/storm.yaml
中进行配置的:
注意:
配置文件中“:”以及“-”左右两边必须有空格(→_→我被坑了好久才发现这个问题)
#配置storm使用的zookeeper集群的地址 storm.zookeeper.servers: - "hostA" - "hostB" #(选配)如果zookeeper默认端口不是2181,则需要配置zookeeper端口 storm.zookeeper.port : 2181 #配置主节点nimbus所在的主机 nimbus.host : "host" #配置storm的工作目录 storm.local.dir : "/root/app/storm/tmp" #配置本地模式下是否使用ZeroQM作为消息系统,默认为false:使用java消息系统 storm.local.mode.zmq : true #配置supervisor节点可以使用worker进程的端口,默认情况为4个worker进程,端口如下 supervisor.slots.ports : - 6700 - 6701 - 6702 - 6703
9、启动Storm各个后台进程
最后一步,启动Storm的所有后台进程。和Zookeeper一样,Storm也是快速失败(fail-fast)的系统,这样Storm才能在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么Storm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。
以下是启动Storm各个后台进程的方式:
Nimbus: 在Storm主控节点上运行"bin/storm nimbus 1 > /dev/null 2 &1 &"启动Nimbus后台程序,并放到后台执行;
Supervisor: 在Storm各个工作节点上运行"bin/storm supervisor 1 /dev/null 2 &1 &"启动Supervisor后台程序,并放到后台执行;
UI: 在Storm主控节点上运行"bin/storm ui 1 > /dev/null 2 &1 &"启动UI后台程序,并放到后台执行,启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。
命令解释:“1 > /dev/null 2 &1”,linux命令,意思是标准输出(1)到/dev/null,异常输出(2)同样输出到/dev/null(&1就是引用1输出的位置),&后台运行,如果在命令最前端加入“nohub”,则变为即使关闭终端也会继续运行.
注意事项:
Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。
经测试,Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。
为了方便使用,可以将bin/storm加入到系统环境变量中。
至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。
10、向集群提交任务
1)启动Storm Topology:
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
其中,allmycode.jar是包含Topology实现代码的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3为org.me.MyTopology执行时需要传入的参数。
2)停止Storm Topology:
storm kill {toponame}
其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。
感谢各位的阅读,以上就是“Storm集群的搭建与配置方法”的内容了,经过本文的学习后,相信大家对Storm集群的搭建与配置方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!