jstorm集群配置部署过程全纪录
2014-07-11 15:10
471 查看
Jstorm是阿里在storm的基础上开发的一个流计算系统,提供比storm更多的功能和更好的稳定性。
github主页的中文文档对安装过程、基本概念等做了简单的叙述,在这里我根据我实际的安装过程中遇到的问题记录一下整个流程。
由于我搭建的集群环境没有外网,我提前下载好了所有需要的组件,也建议大家这么做,主要包括以下:
Python和Java相信大家都安装过了,可以在终端运行python和java
-version命令确认一下,注意python要用2.6或2.7版本。
Jstorm
ZooKeeper
Tomcat
需要特别注意的是,Github的官方教程中提到了安装zeroMQ和jzmq,这两个其实不是必需的,消息队列我们可以根据自己的需求来配置。
另外强烈推荐安装 pdsh 和 pdcp ,这两个命令对管理大规模的分布式集群非常有用,可以减少大量工作量。
在终端输入python,如果进入了python的shell编程则说明安装成功:
很多linux 版本自带了python,如果自带的python版本低于安装版本,执行python命令发现版本是旧的,解决如下:
1.解压:
2.配置环境变量,如果仅当前用户使用的话建议配置~/.bash_profile,否则可能会影响其他用户:
在文件底部加入以下内容,红字部分注意自行修改:
使环境变量生效:
ZooKeeper用来管理和协调整个集群,但不必在所有jstorm节点上都安装。
1.解压:
2.配置环境变量,依旧配置~/.bash_profile,加入以下内容:
然后重新ssh这台主机或者source一下使之生效。
3.配置ZooKeeper参数,配置文件在$ZOOKEEPER_HOME/conf/目录,将zoo_sample.cfg重命名为zoo.cfg:
这个文件中是默认的配置参数,主要有如下参数:
tickTime - 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir - 顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort - 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
server.x - 设置第x个ZooKeeper服务器的ip地址和端口信息。
注意修改其中dataDir参数:
如果是集群模式,配置各服务器信息:
第一个端口号表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
第二个端口号表示的是万一集群中的 Leader 服务器挂了,用来执行选举新 Leader 时服务器相互通信的端口。
配置完成后将此配置文件同步到所有ZooKeeper节点相应位置。
4.接着在每台服务器我们配置的dataDir文件夹中创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X是什么数字,则myid文件中就输入这个数字。
5.至此,ZooKeeper就配置完成了。启动ZooKeeper的脚本在$ZOOKEEPER_HOME/bin下,启动命令如下:
提示启动成功后可以执行jps查看是否有ZooKeeper的进程,也可以执行zkServer status查看详细信息。
1.解压安装
2.配置环境变量,加入:
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的节点 上:
必须使用tomcat 7.0 或以上版本, web ui 可以和nimbus不在同一个节点。
1.解压安装tomcat:
2.将服务器设置为jstorm的webUI:
3.启动tomcat:
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端口可以查看整个集群的状态。
有什么问题欢迎一起讨论,一起进步。
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.html1.解压:
# tar -zxf jdk-7u51-linux-i586.tar.gz
2.配置环境变量,如果仅当前用户使用的话建议配置~/.bash_profile,否则可能会影响其他用户:
# vi ~/.bash_profile
在文件底部加入以下内容,红字部分注意自行修改:
#java env conf export J***A_HOME=<span style="color:#ff0000;">/your java directory</span> export PATH=$J***A_HOME/bin:$PATH export CLASSPATH=.:$J***A_HOME/lib/dt.jar:J***A_HOME/lib/tools.jar
使环境变量生效:
# source ~/.bash_profile最后在终端执行java -version确认一下。
安装ZooKeeper
下载地址:http://zookeeper.apache.org/releases.html#downloadZooKeeper用来管理和协调整个集群,但不必在所有jstorm节点上都安装。
1.解压:
# tar -zxf zookeeper-3.4.6.tar.gz
2.配置环境变量,依旧配置~/.bash_profile,加入以下内容:
#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:
# 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=<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下,启动命令如下:
# zkServer.sh start
提示启动成功后可以执行jps查看是否有ZooKeeper的进程,也可以执行zkServer status查看详细信息。
安装Jstorm
下载地址:https://github.com/alibaba/jstorm/wiki/Downloads1.解压安装
unzip jstorm-0.9.3.zip
2.配置环境变量,加入:
#jstorm env conf export JSTORM_HOME=<span style="color:#ff0000;">/your jstorm directory</span> export PATH=$JSTORM_HOME/bin:$PATHsource一下使之生效:
# 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集群配置部署过程全纪录
- jstorm集群配置部署过程全纪录(补充:报错解决):java.lang.RuntimeException: No alive nimbus
- storm集群部署和配置过程详解
- Jstorm 集群搭建过程/Jstorm集群一键安装部署
- Jstorm 集群搭建过程及一键安装部署脚本
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
- Jstorm 集群搭建过程/Jstorm集群一键安装部署
- 从写项目到部署linux服务器全过程-linux下tomcat的集群配置篇
- storm集群部署和配置过程详解
- storm集群部署和配置过程详解
- storm集群部署和配置过程详解
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
- storm集群部署和配置过程详解
- Linux+Django+Python+Wsgi配置过程 Linux下配置Apache+Mod_Wsgi+Django环境 部署django项目
- nagios安装配置 nagios监控利器部署详细过程
- Eclipse开发环境下,部署和配置svn的整个过程
- solr集群配置与部署
- 免费VMware ESXi虚拟管理软件安装、注册、配置、部署全过程
- 详细图解SharePoint 2007部署和配置过程