Jstorm 集群搭建过程及一键安装部署脚本
Jstorm 集群搭建过程及一键安装部署脚本时间 2015-05-14 10:51:14自由原文 http://ixirong.com/2015/05/12/how-to-install-jstorm-cluster/主题JStorm ZooKeeper最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表
Jstorm 集群搭建过程及一键安装部署脚本
最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式处理,采用 flume 收集日志,发送到 kafka 队列做缓冲,storm 分布式实时框架进行消费处理,短期数据落地到 hbase、mongo中,长期数据进入 hadoop 中存储。 接下来打算将这其间所遇到的问题、学习到的知识记录整理下,作为备忘,作为分享,带给需要的人。
淘宝开源了许多产品组件,其中包括这鼎鼎有名的 jstorm ,也就是我们采用的分布式实时处理框架,至于为什么,请看《我们为什么选择Jstorm》。这篇文章只介绍 Jstorm 整个集群的搭建过程,并提供一键安装部署脚本,方便其它使用的人员(搭建环境是一件头疼的事情,费时、费力)。
Jstorm 官方搭建使用过程如连接 https://github.com/alibaba/jstorm/wiki/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85 ,我整理了三个脚本: 安装 Jstorm 集群
, 安装 jstorm_web_ui 监控页面
, 启动zookeeper、Jstorm集群进行测试
。
说明
三个脚本是测试环境搭建使用的,三台机器: 192.168.9.92
、 192.168.9.93
、 192.168.9.94
如果在其他机器上面使用,必须修改脚本中相应有ip的地方 ,脚本在文章最后提供,在 zip
文件夹里面有完整的一份,使用的时候直接使用zip文件夹即可。
使用方法
将 zip
包解压到测试环境 /home/work
目录下,解压后,执行目录中的三个脚本,顺序执行,即可安装完毕。
搭建脚本如下
Jstorm 集群安装过程 :
#!/bin/bash # author: xirong # date : 2015-02-06 #### # 此脚本为在测试环境192.168.9.92~94 三台机器上面搭建 jstorm 集群的脚本,免去一步步的安装的过程,如果换其他环境,把文中的ip修改即可 # 详细步骤请参考 https://github.com/alibaba/jstorm/wiki/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85 # # 安装目录 # jstorm : /opt/jstorm-0.9.6.2, zookeeper : /opt/zookeeper-3.4.6 , java : /opt/jdk1.7.0_75 # # 注意:执行此shell脚本时候,最好使用 source jstorm_install.sh 或者 . jstorm_install.sh 强制在当前shell进程中执行,否则当前shell脚本获取不到>修改的这些环境变量值 # 遇到sudo的命令时需要输入密码 # 脚本执行前提: # 存在用户work,即存在/home/work/目录 ; # 全新机器无Java # 机器已经存在 Python 2.6,一般centos自带 # # 执行完脚本后需要手动操作的步骤: # 1. zookeeper 集群需要每台机器标记自己身份,vim $dataDir/myid 将机器的标识填入,比如第一天机器即为1,二台为2,以此类推 #### # 在64系统里执行32位程序如果出现/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory # 解决错误Failed to set locale, defaulting to C echo "export LC_ALL=en_US.UTF-8" >> /etc/profile source /etc/profile yum install glibc.i686 echo 'finish pre install glibc.i686' echo 'start unzip all files' #tar -zxf jstorm.tar.gz unzip jstorm.zip echo 'finish unzip all files and start java setup' cd jstorm_tar/ tar -zxf jdk-7u75-linux-i586.tar_0.gz -C /opt/ echo 'finish unzpip jdk-7u75-linux-i586.tar_0.gz && start java envirenment settting ' # 配置java环境 echo '## java configuration ' >> /etc/profile echo 'JAVA_HOME=/opt/jdk1.7.0_75' >> /etc/profile echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile echo 'export JAVA_HOME' >> /etc/profile echo 'finish java envirement setting etc/profile' # 使配置生效 . /etc/profile which java ## 搭建zookeeper集群 echo 'start setup zookeeper ……………………' tar -zxf zookeeper-3.4.6.tar.gz -C /opt/ echo '# zookeeper configuration ' >> /etc/profile echo 'export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6' >> /etc/profile echo 'export PATH=$ZOOKEEPER_HOME/bin:$PATH' >> /etc/profile echo 'export CLASSPATH=$ZOOKEEPER_HOME/lib' >> /etc/profile mkdir -p /home/work/jstorm/zookeeper_data #cd /opt/zookeeper-3.4.6/conf/ cp -f /opt/zookeeper-3.4.6/conf/zoo_sample.cfg /opt/zookeeper-3.4.6/conf/zoo_sample.cfg.bak mv /opt/zookeeper-3.4.6/conf/zoo_sample.cfg /opt/zookeeper-3.4.6/conf/zoo.cfg # 修改zookeeper数据文件的位置 sed -i.bak 's/dataDir=\/tmp\/zookeeper/dataDir=\/home\/work\/jstorm\/zookeeper_data\//g' /opt/zookeeper-3.4.6/conf/zoo.cfg # 集群配置的时候需要加入三台机器的配置 ,这个就是你在搭建你自己的三台机器的ip echo '# zookeeper cluster mathines' >> /opt/zookeeper-3.4.6/conf/zoo.cfg echo 'server.1=192.168.9.92:2888:3888' >> /opt/zookeeper-3.4.6/conf/zoo.cfg echo 'server.2=192.168.9.93:2888:3888' >> /opt/zookeeper-3.4.6/conf/zoo.cfg echo 'server.3=192.168.9.94:2888:3888' >> /opt/zookeeper-3.4.6/conf/zoo.cfg # dataDir目录下添加标识身份 myid(这个需要手动做) # vim $dataDir/myid 将机器的标识填入,比如第一天机器即为1,二台为2 # 使配置生效 . /etc/profile echo 'finish setup zookeeper && start setup zeromq……' # 安装zeromq # 解决错误 cannot link with -luuid, install uuid-dev yum install uuid-devel && yum install libuuid-devel tar -zxf zeromq-2.1.7.tar.gz cd zeromq-2.1.7 ./configure && make && sudo make install && sudo ldconfig cd .. echo 'finish setup zeromq && start setup jzmq ……' # 安装jzmq tar -zxf jzmq.tar && cd jzmq && ./autogen.sh && ./configure && make && sudo make install cd .. # 安装 jstrom echo 'finish setup jzmq && start setup jstorm ……' mkdir /home/work/jstorm/jstorm_data unzip jstorm-0.9.6.2.zip -d /opt/ echo 'export JSTORM_HOME=/opt/jstorm-0.9.6.2' >> ~/.bashrc echo 'export PATH=$PATH:$JSTORM_HOME/bin' >> ~/.bashrc echo 'after configure bashrc for jstorm' source ~/.bashrc # 配置$JSTORM_HOME/conf/storm.yaml echo 'start configuration storm.yaml ……' sed -i '/localhost"$/'d /opt/jstorm-0.9.6.2/conf/storm.yaml sed -i /'storm.zookeeper.servers:/a\ - "192.168.9.94"' /opt/jstorm-0.9.6.2/conf/storm.yaml sed -i /'storm.zookeeper.servers:/a\ - "192.168.9.93"' /opt/jstorm-0.9.6.2/conf/storm.yaml sed -i /'storm.zookeeper.servers:/a\ - "192.168.9.92"' /opt/jstorm-0.9.6.2/conf/storm.yaml sed -i 's/%JSTORM_HOME%\/data/\/home\/work\/jstorm\/jstorm_data/g' /opt/jstorm-0.9.6.2/conf/storm.yaml sed -i /'storm.zookeeper.root/a\ nimbus.host: "192.168.9.92"' /opt/jstorm-0.9.6.2/conf/storm.yaml # 下面这两句只需要在安装 jstorm_ui 和提交jar节点的机器上面执行就可以了 #mkdir ~/.jstorm #cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm echo 'congratilations ! you have successfully install jstorm on your machine ! Enjoy it !'
Jstorm_web_ui 监控搭建 :
#!/bin/bash # author: xirong # date : 2015-05-11 ######### # 安装 jstorm 监控 UI 页面 (只需要在一台机器上面安装即可) # 此脚本执行前需要先执行脚本 1.jstorm_cluster_install.sh ######### echo 'start install apache-tomcat-7.0.61 ' mkdir ~/.jstorm cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm tar -zxf apache-tomcat-7.0.61.tar.gz -C /opt/ cd /opt/apache-tomcat-7.0.61/webapps cp $JSTORM_HOME/jstorm-ui-0.9.6.2.war ./ mv ROOT ROOT.old ln -s jstorm-ui-0.9.6.2 ROOT cd ../bin ./startup.sh echo 'congratulaions ! you have install jstorm_ui! enjoy it !' # 如果本机端口8080没有开放,那么需要开放端口号8080以供外面可以访问 #/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT #/etc/rc.d/init.d/iptables save #/etc/init.d/iptables restart
jstorm 集群启动 测试
#!/bin/bash # author: xirong # date : 2015-05-11 ##### # 启动 jstorm脚本 # 1. 先启动必须组件 zookeeper,启动前必须确定每台机器自己的myid文件 #### # 先启动必须组件 zookeeper,启动前必须确定每台机器自己的myid文件,不明白,查看安装地方 cd /opt/zookeeper-3.4.6 sh bin/zkServer.sh start echo 'zookeeper has started ! please see status :' # leader or follower sh bin/zkServer.sh status # 详细命令 http://www.wangyuxiong.com/archives/51725 # 启动 jstorm 服务 自动脚本 $JSTORM_HOME/logs/supervisor.log检查有无错误 sh /opt/jstorm-0.9.6.2/bin/start.sh # 只需要在nimbus机器上面执行,如果已经ok的话,就不需要了 # nohup jstorm nimbus & # $JSTORM_HOME/logs/nimbus.log检查有无错误 # 停止 #sh /opt/jstorm-0.9.6.2/bin/stop.sh
监控页面如下(当然这只是官方例子,证明安装部署的ok):
安装注意
- java环境配置建议1.7以上
- 集群三台机器需要关闭防火墙,否则错误 “
java.net.NoRouteToHostException: 没有到主机的路由
”
[root@master shirdrn]# service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
jstorm 常用命令
- 启动 nimbus “nohup jstorm nimbus & “ 查看$JSTORM_HOME/logs/nimbus.log 检查错误日志
- 启动 supervisor “nohup jstorm supervisor &” 查看$JSTORM_HOME/logs/supervisor.log 检查有无错误
- 停止 “sh $JSTORM_HOME/bin/stop.sh”
zookeeper 常用命令
- 启动ZK服务: sh bin/zkServer.sh start
- 查看ZK服务状态: sh bin/zkServer.sh status
- 停止ZK服务: sh bin/zkServer.sh stop
- 重启ZK服务: sh bin/zkServer.sh restart
或者连接到服务器 bin/zkCli.sh -server 127.0.0.1:2181 输入help 查看操作帮助
其它详细参考: http://www.wangyuxiong.com/archives/51725
jstorm.zip 包和脚本下载
在 zip
文件夹里面有完整的上述三个骄傲本,使用的时候直接下载zip文件夹即可,下载地址 : 百度网盘 ,密码: btcq
如果有什么问题,可以在右侧我的各种社交中找到我,或者在文章下面评论,我会及时答复各位。
更多推荐
所有评论(0)