Apache Storm之集群安装

1. 环境

  1. storm 1.2.1
  2. Java 7+ (storm 1.x对java 7 和 java 8均进行了测试)
  3. Pytho 2.6.6 (Python 3.x理论上也可以,但是并不作为storm的测试)

以上是storm的环境, 如果不匹配的java和python, 有可能会出错.

2. storm集群安装步骤

  1. 设置Zookeeper集群
  2. 设置Nimbus和worker节点的安装环境
  3. 在集群节点下载并解压Storm
  4. 在storm.yaml中设置必要的配置
  5. 启动storm

storm使用Zookeeper并不进行消息传递,所以对Zookeeper造成负载压力很低. 注意:
- Zookeeper是故障快速的,如果遇到任何错误情况都将退出进程. 请在有监督的情况下运行Zookeeper
- 建立一个cron任务定时压缩Zookeeper的数据和事务日志. Zookeeper本身的守护进程不会这么做, 很容易耗尽磁盘空间.

3. 下载

下载zip或者tar版storm包, 上传到Nimbus和worker服务器.
下载地址: http://storm.apache.org/downloads.html
选择自己需要的版本. 本文选择 apache-storm-1.2.1.tar.gz .
上传到服务器解压:

tar -xzvf apache-storm-1.2.1.tar.gz
ln -s apache-storm-1.2.1 storm

4. 配置

cd storm
vim conf/storm.yaml
  1. storm.zookeeper.servers
    storm依赖Zookeeper集群的hosts列表,类似如下:
storm.zookeeper.servers:
  - "111.222.333.444"
  - "555.666.777.888"
  1. storm.zookeeper.port
    如果Zookeeper集群不是默认的2181端口,可以使用该选项设置端口.
  2. storm.local.dir
    Nimbus和Supervisor守护进程需要配置一个本地目录存储少量状态信息(例如 jars, 配置文件等). 每个机器上创建该目录,设置好权限, 例如:
storm.local.dir: "/mnt/storm"
  1. nimbus.seeds
    worker节点需要知道哪些是主机候选者,以便下载topology jar和confs(nimbus.host在1.0之后已经废弃,这里实现了HA):
nimbus.seeds: ["dyl"]

鼓励填写机器的全域名(FQDN Fully Qualified Domain Name).
这里有个比较有意思的地方, 服务器hostname: dyl ,第一次这里我写了127.0.0.1, 在storm ui上,看到了 两个nimbus:

storm.yaml:

nimbus.seeds: [127.0.0.1]

storm ui nimbus summary:

Host Port Status
dyl 6627 Leader
127.0.0.1 6627 offline

可以看出填写127.0.0.1时, 默认包含了启动nimbus的服务器名,造成同一台服务器,两个nimbus候选者,所以其中一个offline, 无法正常启动. 但是如果什么都不写,将没有nimbus. 填写dyl, 则正常,只包含dyl一个nimbus.

  1. supervisor.slots.ports
    每个worker节点启动worker时打开的端口, 每个work使用单个端口接收消息, 配置了几个端口, 节点就能启动多少个work进程. 默认开启四个worker,端口为6700, 6701, 6702和6703:
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

5. 启动

5.1 前台启动

此时就可以启动 Storm了, 主要启动三个组件:
1. Nimbus: 主节点(Nimbus)运行命令: bin/storm nimbus
2. Supervisor: 每个Supervisor节点运行:bin/storm supervisor.
Supervisor守护程序负责启动和停止该机器上的worker进程.
3. UI: 主节点(Nimbus)上运行: bin/storm ui
可以通过 http://{ui host}:8080 访问 storm ui. 命令执行之后稍微等待一段时间才能访问.

如上默认都是前台启动,可以nohup后台启动. Storm是一个fail-fast系统,意味着每当遇到意外错误时,进程将停止. Storm的设计是的它可以在任何时候安全的停止, 并在进程重新启动时正确恢复. 这就是为什么Storm不会在进程中保持状态, 如果Nimbus或者Supervisor重新启动,运行的topologies不会受到影响.

5.2 后台启动

比较好的方式是使用Supervisor管理Linux进程.
1. 安装Supervisor

yum install supervisor
  1. 配置Supervisor
    修改/etc/supervisord.conf最后部分的内容如下:
[include]
files = supervisord.d/*.conf

使其自动加载 /etc/supervisord.d目录下所有的conf文件.在该目下新建文件storm.conf:

[program:storm-nimbus]
command=/opt/storm/bin/storm nimbus
autostart=true
startretries=3
log_stdout=true
log_stderr=true
redirect_stderr=true
stdout_logfile= /var/log/storm/nimbus.log
stdout_stdout_logfile_backups=1
stdout_stdout_logfile_maxbytes=1MB

[program:storm-supervisor]
command=/opt/storm/bin/storm supervisor
autostart=true
startretries=3
log_stdout=true
log_stderr=true
redirect_stderr=true
stdout_logfile= /var/log/storm/supervisor.log
stdout_stdout_logfile_backups=1
stdout_stdout_logfile_maxbytes=1MB

[program:storm-ui]
command=/opt/storm/bin/storm ui
autostart=true
startretries=3
log_stdout=true
log_stderr=true
redirect_stderr=true
stdout_logfile= /var/log/storm/ui.log
stdout_stdout_logfile_backups=1
stdout_stdout_logfile_maxbytes=1MB
  1. 启动
supervisord -c /etc/supervisord.conf

此时, storm的三个组件将会全部启动. 等待一会儿, 访问storm ui.

6. 参考

  1. http://storm.apachecn.org/releases/cn/1.1.0/Setting-up-a-Storm-cluster.html
  2. http://storm.apache.org/releases/1.2.1/index.html

你可能感兴趣的:(大数据,storm)