一、准备工作
1、机器:一台或多台
2、修改主机名,设置集群host
-
修改主机名,并使之生效
- 修改:`vim etc/sysconfig/network` - 使之生效:`source etc/sysconfig/network`
- 统一设置集群host(修改集群中每个节点的hosts文件):
vim /etc/hosts
3、防火墙设置
若多台机器,设置防火墙,可使用以下任一方法:
3.1 关闭防火墙
- 即时生效,重启后会复原:
service iptables stop
- 永久生效:
chkconfig iptables off
3.2 设置防火墙规则,允许内网间访问。
- 修改iptables:在
/etc/sysconfig/iptables
中加入-A INPUT -s 192.168.1.0/24 -j ACCEPT
,192.168.1.0/24更改为自己的网段/子网掩码位数。 - 重启防火墙:
service iptables restart
4、安装zookeeper
- 参考https://segmentfault.com/a/11...
- 如果安装了cm,也可使用cm安装zookeeper
5、python环境
2.6或以上版本(linux系统默认已安装python2.6)
6、jdk环境
- jdk1.7以上版本
- jdk安装 参考:https://segmentfault.com/a/11...
二、jstorm安装
官网地址:http://www.jstorm.io:8080/
1、下载:wget https://github.com/alibaba/jstorm/releases/download/2.2.1/jstorm-2.2.1.zip
2、解压:tar zxvf jstorm-2.2.1.zip
3、配置:vim jstorm-2.2.1/conf/storm.yaml
配置说明参考:http://www.jstorm.io:8080/Maintenance_cn/Configuration.html
- storm.zookeeper.servers: zookeeper地址,可以是ip,也可以是hostname
- storm.zookeeper.port: zookeeper集群服务的端口
- storm.zookeeper.root:jstorm数据在zookeeper上的存储路径(若只有一个集群也可不设置该参数,默认为/sstrom)
- cluster.name:jstorm集群名称(若只有一个集群也可不设置该参数,默认为default)
- nimbus.host: nimbus服务所在节点ip,注意只支持ip不能使用hostname,多个ip使用逗号隔开
- nimbus.host.start.supervisor:是否在nimbus节点启动supervisor服务(使用start.sh脚本启动时会使用此参数,使用jstorm脚本启动时 没有影响)
- storm.local.dir:数据临时存储目录,目录需先手动创建好
- jstorm.log.dir: 日志存储目录,目录需先手动创建好
- supervisor.slots.ports.base:supervisor 执行worker使用的基本端口
- supervisor.slots.ports:执行worker使用的端口,默认为四
- supervisor.slots.port.cpu.weight:cpu权重 cpu_num = system_physical_cpu_num/supervisor.slots.port.cpu.weight
- supervisor.slots.port.mem.weight:内存权重 mem_num = system_physical_memory_size/(worker.memory.size * supervisor.slots.port.mem.weight)
- storm.messaging.netty.transfer.async.batch:如果此设置为真,netty处于异步模式,则netty将会批处理消息,如果此设置为false,netty在异步模式下,netty将把tuple一个一个地发送到一个大消息中
- worker.memory.size: worker内存大小,单位是字节
- topology.performance.metrics: 禁用时,不会收集定时器和直方图的数据
- topology.alimonitor.metrics.post: 官方解释为:禁用时,指标数据只会被打印成日志。启动时,那数据除了打印到日志之外,还发布到alimonitor上。暂时没发现有什么影响
4、安装
4.1 将安装包放到需要安装的目录,如:mv jstorm-2.2.1 /opt/
4.2 复制安装包到其他节点,如: scp -r jstorm-2.2.1 host29:/opt/
4.3 为了使环境变量与版本无关,建立一个软连接 ln -s jstorm-2.2.1 jstorm
4.4 设置jstorm环境变量,否则启动报错,导致服务无法正常启动
- 设置JSTORM_HOME:`vim /etc/profile` ![clipboard.png](/img/bV04wD)
- 使设置生效: `source /etc/profile`
5、启动
- 同时启动nimbus和supervisor:
/opt/jstorm/bin/start.sh
- 只启动nimbus:
使用jstorm脚本启动:nohup $JSTORM_HOME/bin/jstorm nimbus >/dev/null 2>&1 &
- 使用start.sh脚本启动:设置
nimbus.host.start.supervisor
为false
使用/opt/jstorm/bin/start.sh
- 只启动supervisor:
nohup $JSTORM_HOME/bin/jstorm supervisor>/dev/null 2>&1 &
6、停止jstorm:/opt/jstorm/bin/stop.sh
三、jstorm-ui安装
一般与nimbus安装在一个节点,也可以单独部署
1、安装tomcat
1.1 下载tomcat
- 官网地址:https://tomcat.apache.org/dow...
- 下载:
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
(此地址为镜像地址,可能变更,请以官网最新下载地址为准)
1.2 解压 安装
- 解压:
tar zxvf apache-tomcat-8.5.23.tar.gz
- 安装:
cp apache-tomcat-8.5.23 /opt/
2、部署jstorm-ui
2.1 部署安装包
- 安装包在jstorm-2.2.1安装包下,把ui安装包部署到tomcat的webapps目录下:
cp /opt/jstorm-2.2.1/jstorm-ui-2.2.1.war /opt/apache-tomcat-8.5.23/webapps/
2.2 配置文件:配置文件放在~/.jstorm目录下,没有则新建
- 新建配置文件目录:
mkdir ~/.jstorm
- 复制jstorm的配置文件:
cp -f /opt/jstorm/conf/storm.yaml ~/.jstorm
2.3 配置tomcat:vim /opt/apache-tomcat-8.5.23/conf/server.xml
在host节点中增加如下代码
<Context docBase="${catalina.home}/webapps/jstorm-ui-2.2.1" reloadable="false" path="/jstorm"/>
*此配置是为了使用http://153.35.119.4:8080/jstorm这个url访问jstorm-ui,不配置此项默认是使用报名访问的:http://153.35.119.4:8080/jstorm-ui-2.2.1*
3、启动
- 运行tomcat:
/opt/apache-tomcat-8.5.23/bin/startup.sh
4、使用http://153.35.119.4:8080/jstorm
访问页面
四、运行任务
1、开发
- 官网说明:http://www.jstorm.io:8080/QuickStart_cn/Example.html
2、运行:/opt/jstorm/bin/jstorm jar LogCaculater-1.0.0.jar com.snail.dw.jstorm.topology.LogCountTopology conf.yaml
3、删除任务: /opt/jstorm/bin/jstorm kill LogCountTopology
五、错误记录
1、没有设置JSTORM_HOME环境变量:
2、yaml配置文件语法错误
yaml配置文件一级属性必须距离左边 空 **一个空格**,值距离左边分号也必须至少一个空格
参考文章:
- 官网:http://www.jstorm.io:8080/QuickStart_cn/Example.html
- github:https://github.com/alibaba/js...
- 其他:http://www.cnblogs.com/hzorac...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。