搭建jstorm集群环境
预置环境
-
zookeeper集群
三个节点:
h2m1
,h2s1
,h2s2
。 -
jdk1.7及以上的64位版本
检查预置环境配置
- 运行
hostname -i
,检查是否配置了内网ip地址而非127.0.0.1,如果没有配置需要配置ip; - 运行
java -version
,检查jdk版本是否在1.7及以上。
安装jstorm
假设以jstorm-2.1.1.zip为例
# 解压安装包
unzip jstorm-2.1.1.zip
# 配置全局环境变量
vi /etc/profile
# 配置jstorm的根目录,比如:/usr/local/jstorm211
export JSTORM_HOME=/XXXXX/XXXX
export PATH=$PATH:$JSTORM_HOME/bin
# 使得环境变量配置生效
source /etc/profile
修改jstorm的配置
基本配置项:
- storm.zookeeper.servers: 表示zookeeper 的地址,
- storm.zookeeper.root: 表示JStorm在zookeeper中的根目录,当多个JStorm共享一个zookeeper时,需要设置该选项,默认即为“/jstorm”
- nimbus.host: 表示nimbus的地址, 填写ip
- storm.local.dir: 表示JStorm临时数据存放目录,需要保证JStorm程序对该目录有写权限
示例配置:
storm.zookeeper.servers:
- "h2m1,h2s1,h2s2"
storm.zookeeper.root: "/jstorm"
nimbus.host: "h2m1,h2s1,h2s2"
storm.local.dir: "%JSTORM_HOME%/data"
扩展节点
执行远程复制命令构建集群节点
scp -rp /usr/local/jstorm211/ root@h2s1:/usr/local/;
scp -rp /usr/local/jstorm211/ root@h2s2:/usr/local/;
scp -rp /etc/profile root@h2s2:/etc;
scp -rp /etc/profile root@h2s1:/etc;
在每个被复制的机器上h2s2
,h2s1
上执行source /et/profile
。
启动jstorm集群
- 在每个nimbus 节点上执行
nohup jstorm nimbus &
, 查看$JSTORM_HOME/logs/nimbus.log检查有无错误 - 在每个supervisor节点上执行
nohup jstorm supervisor &
, 查看$JSTORM_HOME/logs/supervisor.log检查有无错误
配置jstorm的web界面监控环境
预置环境
-
tomcat8
tomcat7及以上版本,笔者使用的是tomcat8
配置环境
在h2s2上配置web监控环境
假设tomcat8的安装包为apache-tomcat-8.5.8.tar.gz
,下载位置为/root
目录
#获取tomcat安装包
wget http://mirrors.koehn.com/apache/tomcat/tomcat-8/v8.5.8/bin/apache-tomcat-8.5.8.tar.gz
#解压tomcat
tar -xzvf /root/apache-tomcat-8.5.8.tar.gz
#解压后的目录更名
mv apache-tomcat-8.5.8 tomcat858
#将目录移动到指定位置
mv tomcat858/ /usr/local/
#在当前用户(root)的home目录下创建`.jstorm`目录
mkdir ~/.jstorm
#将jstorm集群的配置复制到当前用户的`.jstorm`目录中
cp /usr/local/jstorm211/conf/storm.yaml ~/.jstorm/
# 将web监控的war包复制到tomcat的webapps下
cp /usr/local/jstrom211/jstorm-ui-2.1.1.war /usr/local/tomcat858/webapps/
cd /usr/local/tomcat858/;
unzip ./webapps/jstorm-ui-2.1.1.war -d jstorm-ui-2.1.1
#建立软连接,使得对ROOT的访问直接转到指定目录
ln -s jstorm-ui-2.1.1 ROOT
启动tomcat并验证
-
启动:
/usr/local/tomcat858/bin/startup.sh
-
验证:
h2s2:8080
,前提是请求的机器的hosts中配置了h2s2的ip和主机名的绑定