天天看点

jstorm集群配置部署过程全纪录安装Python安装Java安装ZooKeeper安装Jstorm安装Jstorm Web UI (Tomcat)

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/

[plain]  view plain  copy

  1. # tar –jxvf Python-2.7.3.tar.bz2  
  2. # cd Python-2.7.3  
  3. # ./configure    
  4. # make    
  5. # make install   

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

很多linux 版本自带了python,如果自带的python版本低于安装版本,执行python命令发现版本是旧的,解决如下: [plain]  view plain  copy

  1. # cd /usr/bin  
  2. # ll |grep python   
  3. # rm -rf python   
  4. # ln -s Python_HOME/Python-2.7.3/python.exe ./python   
  5. # python     

安装Java

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

1.解压: [plain]  view plain  copy

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

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

  1. # vi ~/.bash_profile  

在文件底部加入以下内容,红字部分注意自行修改: [plain]  view plain  copy

  1. #java env conf  
  2. export JAVA_HOME=<span style="color:#ff0000;">/your java directory</span>  
  3. export PATH=$JAVA_HOME/bin:$PATH  
  4. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar  

使环境变量生效: [plain]  view plain  copy

  1. # source ~/.bash_profile  

最后在终端执行java -version确认一下。

安装ZooKeeper

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

1. 解压: [plain]  view plain  copy

  1. # tar -zxf zookeeper-3.4.6.tar.gz  

2. 配置环境变量,依旧配置~/.bash_profile,加入以下内容: [plain]  view plain  copy

  1. #ZooKeeper env conf  
  2. export ZOOKEEPER_HOME=<span style="color:#ff0000;">/your zookeeper directory</span>  
  3. export PATH=$ZOOKEEPER_HOME/bin:$PATH  
  4. export CLASSPATH=.:$ZOOKEEPER_HOME/lib  

然后重新ssh这台主机或者source一下使之生效。

3.配置ZooKeeper参数,配置文件在$ZOOKEEPER_HOME/conf/目录,将zoo_sample.cfg重命名为zoo.cfg: [plain]  view plain  copy

  1. # mv zoo_sample.cfg zoo.cfg  

这个文件中是默认的配置参数,主要有如下参数: tickTime   - 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

dataDir    - 顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

clientPort - 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

server.x   - 设置第x个ZooKeeper服务器的ip地址和端口信息。

注意修改其中dataDir参数: [plain]  view plain  copy

  1. dataDir=$ZOOKEEPER_HOME/data  

如果是集群模式,配置各服务器信息: [plain]  view plain  copy

  1. server.1=<span style="color:#ff0000;">第1个节点ip</span>:2888:3888   
  2. server.2=<span style="color:#ff0000;">第2个节点ip</span>:2888:3888   
  3. ……  
  4. server.3=<span style="color:#ff0000;">第n个节点ip</span>:2888:3888  

第一个端口号表示的是这个服务器与集群中的 Leader 服务器交换信息的端口; 第二个端口号表示的是万一集群中的 Leader 服务器挂了,用来执行选举新 Leader 时服务器相互通信的端口。

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

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

5.至此,ZooKeeper就配置完成了。 启动ZooKeeper的脚本在$ZOOKEEPER_HOME/bin下,启动命令如下: [plain]  view plain  copy

  1. # zkServer.sh start  

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

安装Jstorm

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

1.解压安装 [plain]  view plain  copy

  1. unzip jstorm-0.9.3.zip  

2. 配置环境变量,加入: [plain]  view plain  copy

  1. #jstorm env conf  
  2. export JSTORM_HOME=<span style="color:#ff0000;">/your jstorm directory</span>  
  3. export PATH=$JSTORM_HOME/bin:$PATH  

source一下使之生效: [plain]  view plain  copy

  1. # 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的节点 上:

[plain]  view plain  copy

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

安装Jstorm Web UI (Tomcat)

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

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

1.解压安装tomcat:

[plain]  view plain  copy

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

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

[plain]  view plain  copy

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

3.启动tomcat:

[plain]  view plain  copy

  1. cd ../bin  
  2. ./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端口可以查看整个集群的状态。