jstorm集群配置部署过程全纪录

Jstorm是阿里在storm的基础上开发的一个流计算系统,提供比storm更多的功能和更好的稳定性。

github主页的中文文档对安装过程、基本概念等做了简单的叙述,在这里我根据我实际的安装过程中遇到的问题记录一下整个流程。

由于我搭建的集群环境没有外网,我提前下载好了所有需要的组件,也建议大家这么做,主要包括以下:

  • Python和Java相信大家都安装过了,可以在终端运行python和java -version命令确认一下,注意python要用2.6或2.7版本。
  • Jstorm
  • ZooKeeper
  • Tomcat

需要特别注意的是,Github的官方教程中提到了安装zeroMQ和jzmq,这两个其实不是必需的,消息队列我们可以根据自己的需求来配置。

另外强烈推荐安装 pdsh 和 pdcp ,这两个命令对管理大规模的分布式集群非常有用,可以减少大量工作量。

安装Python

下载地址:https://www.python.org/downloads/

# tar –jxvf Python-2.7.3.tar.bz2
# cd Python-2.7.3
# ./configure  
# make  
# make install 

在终端输入python,如果进入了python的shell编程则说明安装成功:


很多linux 版本自带了python,如果自带的python版本低于安装版本,执行python命令发现版本是旧的,解决如下:
# cd /usr/bin
# ll |grep python 
# rm -rf python 
# ln -s Python_HOME/Python-2.7.3/python.exe ./python 
# python   

安装Java

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

1.解压:
# tar -zxf jdk-7u51-linux-i586.tar.gz

2.配置环境变量,如果仅当前用户使用的话建议配置~/.bash_profile,否则可能会影响其他用户:
# vi ~/.bash_profile

在文件底部加入以下内容,红字部分注意自行修改:
#java env conf
export JAVA_HOME=/your java directory
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar


使环境变量生效:
# source ~/.bash_profile
最后在终端执行java -version确认一下。


安装ZooKeeper

下载地址:http://zookeeper.apache.org/releases.html#download
ZooKeeper用来管理和协调整个集群,但不必在所有jstorm节点上都安装。

1. 解压:
# tar -zxf zookeeper-3.4.6.tar.gz

2. 配置环境变量,依旧配置~/.bash_profile,加入以下内容:
#ZooKeeper env conf
export ZOOKEEPER_HOME=/your zookeeper directory
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export CLASSPATH=.:$ZOOKEEPER_HOME/lib
然后重新ssh这台主机或者source一下使之生效。

3.配置ZooKeeper参数,配置文件在$ZOOKEEPER_HOME/conf/目录,将zoo_sample.cfg重命名为zoo.cfg:
# mv zoo_sample.cfg zoo.cfg

这个文件中是默认的配置参数,主要有如下参数:
tickTime   - 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir    - 顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort - 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
server.x   - 设置第x个ZooKeeper服务器的ip地址和端口信息。

注意修改其中dataDir参数:
dataDir=$ZOOKEEPER_HOME/data

如果是集群模式,配置各服务器信息:
server.1=第1个节点ip:2888:3888 
server.2=第2个节点ip:2888:3888 
……
server.3=第n个节点ip:2888:3888
第一个端口号表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
第二个端口号表示的是万一集群中的 Leader 服务器挂了,用来执行选举新 Leader 时服务器相互通信的端口。

配置完成后将此配置文件同步到所有ZooKeeper节点相应位置。

4. 接着在每台服务器我们配置的dataDir文件夹中创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X是什么数字,则myid文件中就输入这个数字。

5.至此,ZooKeeper就配置完成了。 启动ZooKeeper的脚本在$ZOOKEEPER_HOME/bin下,启动命令如下:
# zkServer.sh start

提示启动成功后可以执行jps查看是否有ZooKeeper的进程,也可以执行zkServer status查看详细信息。

安装Jstorm

下载地址:https://github.com/alibaba/jstorm/wiki/Downloads

1.解压安装
unzip jstorm-0.9.3.zip

2. 配置环境变量,加入:
#jstorm env conf
export JSTORM_HOME=/your jstorm directory
export PATH=$JSTORM_HOME/bin:$PATH
source一下使之生效:
# source ~/.bash_profile

3.配置jstorm,配置文件为$JSTORM_HOME/conf/storm.yaml

   配置项(红色为必须项):

  • storm.zookeeper.servers: 表示zookeeper服务器的地址
  • storm.zookeeper.root: 表示jstorm在zookeeper中的根目录,当多个JStorm共享一个ZOOKEEPER时,需要设置该选项,默认即为“/jstorm”
  • nimbus.host: 表示nimbus的地址
  • storm.local.dir: 表示jstorm临时数据存放目录,需要保证jstorm程序对该目录有写权限,如果一台机器同时运行storm和jstorm的话, 则不要共用一个目录,必须将二者分离开
  • java.library.path: zeromq 和java zeromq library的安装目录,默认"/usr/local/lib:/opt/local/lib:/usr/lib"
  • supervisor.slots.ports: 表示supervisor 提供的端口slot列表,注意不要和其他端口发生冲突,默认是68xx,而storm的是67xx
  • supervisor.disk.slot: 表示提供数据目录,当一台机器有多块磁盘时,可以提供磁盘读写slot,方便有重IO操作的应用。
  • topology.enable.classloader: false, 默认关闭classloader,如果应用的jar与jstorm的依赖的jar发生冲突,比如应用使用thrift9,但jstorm使用thrift7时,就需要打开classloader
  • nimbus.groupfile.path: 如果需要做资源隔离,比如数据仓库使用多少资源,技术部使用多少资源,无线部门使用多少资源时,就需要打开分组功能, 设置一个配置文件的绝对路径,改配置文件如源码中group_file.ini所示

将ZooKeeper所有服务器的ip写在storm.zookeeper.servers下,注意每行写一个!

4.然后在提交jar的节点计划安装WebUI的节点 上:

#mkdir ~/.jstorm
#cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm

安装Jstorm Web UI (Tomcat)

下载地址:http://tomcat.apache.org/

必须使用tomcat 7.0 或以上版本, web ui 可以和nimbus不在同一个节点。

1.解压安装tomcat:

tar -xzf apache-tomcat-7.0.37.tar.gz

2.将服务器设置为jstorm的webUI:

cd apache-tomcat-7.0.37/webapps
cp $JSTORM_HOME/jstorm-ui-0.9.3.war ./
mv ROOT ROOT.old
ln -s jstorm-ui-0.9.3 ROOT

3.启动tomcat:

cd ../bin
./startup.sh

4.集群启动后访问该节点的8080(默认)端口即可访问jstorm webUI了。

启动jstorm集群


在nimbus 节点上执行 “nohup jstorm nimbus &”, 查看$JSTORM_HOME/logs/nimbus.log检查有无错误

在supervisor节点上执行 “nohup jstorm supervisor &”, 查看$JSTORM_HOME/logs/supervisor.log检查有无错误  

访问安装webUI节点的8080端口可以查看整个集群的状态。


有什么问题欢迎一起讨论,一起进步。


你可能感兴趣的:(流计算,jstorm)