您的位置:首页 > Web前端 > JavaScript

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

2017-07-17 15:15 423 查看
Jstorm是阿里在storm的基础上开发的一个流计算系统,提供比storm更多的功能和更好的稳定性。
github主页的中文文档对安装过程、基本概念等做了简单的叙述,在这里我根据我实际的安装过程中遇到的问题记录一下整个流程。
由于我搭建的集群环境没有外网,我提前下载好了所有需要的组件,也建议大家这么做,主要包括以下:

PythonJava相信大家都安装过了,可以在终端运行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

# tar –jxvf Python-2.7.3.tar.bz2  

# cd Python-2.7.3  

# ./configure    

# make    

# make install   

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

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

[plain] view
plain copy

# cd /usr/bin  

# ll |grep python   

# rm -rf python   

# ln -s Python_HOME/Python-2.7.3/python.exe ./python   <
16b64
/li>
# python     

安装Java

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

1.解压:

[plain] view
plain copy

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

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

[plain] view
plain copy

# vi ~/.bash_profile  

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

[plain] view
plain copy

#java env conf  

export JAVA_HOME=<span style="color:#ff0000;">/your java directory</span>  

export PATH=$JAVA_HOME/bin:$PATH  

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar  

使环境变量生效:

[plain] view
plain copy

# source ~/.bash_profile  

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

安装ZooKeeper

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

1.解压:

[plain] view
plain copy

# tar -zxf zookeeper-3.4.6.tar.gz  

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

[plain] view
plain copy

#ZooKeeper env conf  

export ZOOKEEPER_HOME=<span style="color:#ff0000;">/your zookeeper directory</span>  

export PATH=$ZOOKEEPER_HOME/bin:$PATH  

export CLASSPATH=.:$ZOOKEEPER_HOME/lib  

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

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

[plain] view
plain copy

# 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

dataDir=$ZOOKEEPER_HOME/data  

如果是集群模式,配置各服务器信息:

[plain] view
plain copy

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

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

……  

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

# zkServer.sh start  

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

安装Jstorm

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

1.解压安装

[plain] view
plain copy

unzip jstorm-0.9.3.zip  

2.配置环境变量,加入:

[plain] view
plain copy

#jstorm env conf  

export JSTORM_HOME=<span style="color:#ff0000;">/your jstorm directory</span>  

export PATH=$JSTORM_HOME/bin:$PATH  

source一下使之生效:

[plain] view
plain copy

# 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

#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:

[plain] view
plain copy

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

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

[plain] view
plain copy

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:

[plain] view
plain copy

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端口可以查看整个集群的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息