贫农的大数据之三(Storm集群部署)
来源:互联网 发布:淘宝 种子种球许可证 编辑:程序博客网 时间:2024/05/22 02:17
Storm集群部署
部署环境
虚拟机4台,CPU:4核,内存:6G,硬盘:50G。
1台用于nimbus及web ui:192.168.0.64
3台用于supervisor:192.168.0.41,192.168.0.42,192.168.0.65
系统均为Centos 6.3
软件版本
SUN JDK 1.6
Python 2.6.6
Zookeeper 3.4.5 ,这里我使用了3个节点的集群分别为:zookeeper-1,zookeeper-2,zookeeper-3
Storm 0.8.2
安装过程
- 修改各自的hostname,例如
<pre code_snippet_id="319147" snippet_file_name="blog_20140429_1_8531222" name="code" class="plain" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 20px;">#修改HOSTNAME
vim /etc/sysconfig/networkHOSTNAME=supervisor-4#同时修改hostname让其立即生效hostname supervisor-4 - 配置各个服务器的/etc/hosts 类似下面。注意127.0.0.1在对应各自的域名
127.0.0.1 nimbus192.168.0.64 nimbus192.168.0.65 supervisor-1192.168.0.41 supervisor-2192.168.0.42 supervisor-3
- 安装zeromq
wget http://download.zeromq.org/zeromq-2.1.7.tar.gztar zxvf zeromq-2.1.7.tar.gz cd zeromq-2.1.7./configuremakemake install
在configure过程中出现如下错误
checking for uuid_generate in -luuid… noconfigure: error: cannot link with -luuid, install uuid-dev.
安装缺少的依赖yum install uuid* e2fsprogs* libuuid* -y
- 安装jzmq
git clone git://github.com/nathanmarz/jzmq.gitcd jzmq./autogen.sh./configuremakemake install
在configure过程中出现如下错误configure: error: the JAVA_HOME environment variable must be set to your JDK location.
解决办法是设置JAVA_HOME环境变量 - 安装storm
wget https://github.com/nathanmarz/storm/archive/0.8.2.zipunzip storm-0.8.2.zip
- 配置storm
在配置时一定注意在每一项的开始时要加空格,冒号后也必须要加空格,否则storm就不认识这个配置文件了。
修改conf/storm.yaml文件:storm.local.dir: "/var/storm" storm.zookeeper.servers: - "zookeeper-1" - "zookeeper-2" - "zookeeper-3" nimbus.host: "nimbus"#最大worker数量及对应端口,这个需要根据实际业务特点配置 supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703#避免中文乱码 worker.childopts: "-Xmx768m -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
- 安装daemontools
因为Storm的各个组件都是快速失败,需要使用daemontools来保证服务的可靠性sudo wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gzsudo tar zxvf daemontools-0.76.tar.gz#当前版本需要打补丁,google就会找到sudo wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patchcd admin/daemontools-0.76/sudo patch -p1 < ../../daemontools-0.76.errno.patchsudo ./package/install#输出最后如下:Creating /service…Adding svscanboot to inittab…init should start svscan now.#安装完成
- 配置daemontools
在nimbus节点配置nimbus的daemontoolsmkdir /service/stormtouch /service/storm/runchmod 755 /service/storm/runvi /service/storm/run
在该文件中输入如下内容#!/bin/shexec 2>&1exec /opt/storm-0.8.2/bin/storm nimbus
在nimbus节点配置ui的daemontoolsmkdir /service/stormuitouch /service/stormui/runchmod 755 /service/stormui/runvi /service/stormui/run
在该文件中输入如下内容#!/bin/shexec 2>&1exec /opt/storm-0.8.2/bin/storm ui
在每个supervisor节点配置daemontoolsmkdir /service/stormtouch /service/storm/runchmod 755 /service/storm/runvi /service/storm/run
在文件中输入如下内容#!/bin/shexec 2>&1exec /opt/storm-0.8.2/bin/storm supervisor
- 使用daemontools
启动nimbus或supervisornohup supervise /service/storm/ &
启动uinohup supervise /service/storm/ &
通过ps命令可以看到对应的进程已经启动[root@nimbus ~]# ps -ef|grep stormroot 1018 1013 0 2013 ? 00:00:01 supervise stormuiroot 1019 1013 0 2013 ? 00:00:02 supervise storm
在kill -9后进程会被自动重启
停止daemontools命令#停止daemontools的supervise命令svc -d /service/storm/ #停止后的重新启动svc -u /service/storm/
- 设置开机启动daemontools
touch /etc/init/svscan.confvi /etc/init/svscan.conf#添加如下内容start on runlevel [345]respawnexec /command/svscanboot#编辑完成,保存文件initctl reload-configurationinitctl start svscan
通过ps命令可以看到svscanboot运行成功[root@nimbus ~]# ps -ef|grep svscanroot 1003 1 0 2013 ? 00:00:00 /bin/sh /command/svscanbootroot 1013 1003 0 2013 ? 00:06:19 svscan /service
另一种可能的办法(在笔者的环境中没有配置成功,供其他人参考)
将以下内容放入到/etc/rc.local最后csh -cf '/command/svscanboot &'
- 关于Storm web ui
当启动Storm的web ui之后,并且端口没有更改时,可以通过如下地址访问http://{NIMBUS_HOST}:8080
ui上会显示当前集群状态,运行的Topology的状态等重要信息 - 组件配置更改
当修改了ui、nimbus、supervisor的配置时,可以直接kill掉响应的组件,由daemontools为你自动重启,如果为了放心,可以在ui上先停掉所有的topology - 日志的配置
当前的storm版本使用log4j配置日志,配置文件在log4j/storm.log.properties。我当前的配置为log4j.rootLogger=INFO, A2log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A1.File = ${storm.home}/logs/${logfile.name}log4j.appender.A1.Append = truelog4j.appender.A1.DatePattern = '.'yyy-MM-ddlog4j.appender.A1.layout = org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%nlog4j.appender.A2 = org.apache.log4j.RollingFileAppenderlog4j.appender.A2.Threshold = DEBUG log4j.appender.A2.File = /letv/storm-logs/${logfile.name}log4j.appender.A2.Append = true log4j.appender.A2.MaxFileSize = 500MB log4j.appender.A2.MaxBackupIndex = 3 log4j.appender.A2.layout = org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
- 测试Storm集群
下载storm-starter并编译打包,期间因“某种原因”访问不到的依赖就需要“特殊技巧”下载下来并放到maven私服中。
在nimbus节点提交测试用topologybin/storm jar storm-starter-0.0.1-SNAPSHOT.jar storm.starter.WordCountTopology wordcount
注意wordcount是topology名字,这个参数会使其运行在集群是,否则是本地模式
0 0
- 贫农的大数据之三(Storm集群部署)
- 贫农的大数据之五(Hadoop集群部署)
- 贫农的大数据之四(Storm简介及开发)
- 贫农的大数据之二(Kafka)
- 贫农的大数据之一(设计篇)
- storm集群的部署
- 大数据之Spark集群部署
- 大数据集群部署
- storm三之集群架构
- 大数据(三)--Storm
- 大数据之storm入门
- 大数据系列之Hadoop分布式集群部署
- storm集群的安装和部署
- storm集群部署的基本流程
- Storm集群部署
- Storm集群部署
- storm 集群部署
- storm集群部署
- 又兜回到Hibernate,HHH000387: ResultSet's statement was not registered
- jquery文字轮播 滚动
- log4j配置祥解--(2)参数说明以及配置例子
- 有序二叉树的实现
- LINUX修改IP地址
- 贫农的大数据之三(Storm集群部署)
- 重排序意味着什么?
- Makefile静态模式
- 实习工作经验
- 修改hadoop的core-site.xml的配置文件不需重启也生效了
- 新的起点、新的开始
- C/C++程序内存布局
- 一段非人的对话
- 学习python(4) 练习词典功能 查询增加删除更新