1. 安装前准备
安装Storm之前需要安装ZeroMQ、JZMQ
(安装ZeroMQ、JZMQ之前需要先安装
zmq基本依赖库,libtool, pkg-config, build-essential, autoconf, make,
yum install -y gcc-c++.x86_64 uuid-devel.x86_64 libuuid-devel.x86_64 libtool.x86_64 git.x86_64)
在安装ZeroMQ之前先安装如下命令:
yum install -y gcc-c++.x86_64
yum install -y uuid-devel.x86_64
yum install -y libuuid-devel.x86_64
yum install -y libtool.x86_64
yum install -y git.x86_64
yum install -y make
去官网下载libsodium库源码,然后编译安装
wget https://github.com/jedisct1/libsodium/releases/download/1.0.8/libsodium-1.0.8.tar.gz
tar xvzf libsodium-1.0.8.tar.gz
./autogen.sh
./configure
make && make check
make install
ZeroMQ安装:
tar -xzvf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./autogen.sh
./configure
make
sudo make install
JZMQ安装:
git clone https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
sudo make install
2. storm配置
wget https://dl.dropboxusercontent.com/s/tqdpoif32gufapo/storm-0.9.0.1.tar.gz
tar xzvf . /storm-0.9.0.1.tar.gz
cd /opt/soft/storm-0.9.0.1/conf
[root@cdh5 conf]# vi storm.yaml
########### These MUST be filled in for a storm configuration
storm.zookeeper.servers:
- "cdh5.master"
- "cdh5.slave1"
- "cdh5.slave2"
nimbus.host: "cdh5.slave1"
storm.local.dir: "/opt/soft/storm-0.9.0.1/data"
# ##### These may optionally be filled in:
## List of custom serializations
# topology.kryo.register:
# - org.mycompany.MyType
# - org.mycompany.MyType2: org.mycompany.MyType2Serializer
## List of custom kryo decorators
# topology.kryo.decorators:
# - org.mycompany.MyDecorator
## Locations of the drpc servers
drpc.servers:
- "cdh5.slave1"
# - "server2"
## Metrics Consumers
# topology.metrics.consumer.register:
# - class: "backtype.storm.metrics.LoggingMetricsConsumer"
# parallelism.hint: 1
# - class: "org.mycompany.MyMetricsConsumer"
# parallelism.hint: 1
# argument:
# - endpoint: "metrics-collector.mycompany.org"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
- 6704
- 6705
- 6706
- 6707
java.library.path: /usr/local/lib:/usr/java/jdk1.7.0_55-cloudera/lib:/usr/lib
ui.port: 8081
注意: 配置文件中有效行必须以空格开头(顶格会报如下错误):
参数说明:
1) storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址,其格式如下:
storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888"
如果Zookeeper集群使用的不是默认端口,那么还需要storm.zookeeper.port选项。
2) storm.local.dir: Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。然后在storm.yaml中配置该目录,如:
storm.local.dir: "/home/admin/storm/workdir"
3) java.library.path: Storm使用的本地库(ZMQ和JZMQ)加载路径,默认为"/usr/local/lib:/opt/local/lib:/usr/lib",一般来说ZMQ和JZMQ默认安装在/usr/local/lib 下,因此不需要配置即可。
4) nimbus.host: Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件,如:
nimbus.host: "111.222.333.444"
5) supervisor.slots.ports: 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如:
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
3. storm启动
Storm启动测试
cd /opt/soft/storm-0.9.0.1/bin
./storm nimbus 无告警即启动成功
./storm supervisor 无告警即启动成功
挂到后台运行命令
nohup storm nimbus & 进程名nimbus
nohup storm ui & //启动web窗口 进程名core
在浏览器中打开Storm UI,(在浏览器中输入” http://{nimbus host}:8081”访问UI)。
nohup storm supervisor &
在浏览器中刷新Storm UI(在你的浏览器中输入” http://{nimbus host}:8081”访问UI)。
4. DRPC服务启动
nohup storm drpc &
启动Storm drpc服务。没DB稳定
客户端连接代码
DRPCClient client = new DRPCClient(“192.168.112.112”, 3772); 具有单点故障问题
5. 向集群提交任务
1)启动Storm Topology:
在vi /etc/profile配置环境变量后
export STORM_HOME=/opt/soft/storm-0.9.0.1/
export PATH=$PATH::$STORM_HOME/bin
storm jar /opt/PvTopo.jar visits.PvTopo PvTopo
在浏览器中刷新Storm UI
2)停止Storm Topology:
storm kill {toponame}
其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。
./storm kill PvTopo
6. Storm日志查看
0.9.0版本以后Storm增加了一个logviewer。新的logviewer进程与supervisor是相对独立的进程,如果要在新的Storm里启动它,你只需要在集群的supervisor节点执行如下命令:
nohup storm logviewer &
就可以直接在UI界面里点击端口号670x即可查看日志结果。