Storm入门与实践(2)构建Storm的开发环境与集群

来源:互联网 发布:origin绘图软件下载 编辑:程序博客网 时间:2024/05/20 02:25

1. Storm 技术栈

Storm 运行在JVM之上,大部分功能都是通过Java与Clojure进行开发。
Storm的主要接口都是通过Java进行开发,但绝大多数的逻辑都是由Clojure进行实。
Python主要用来实现Storm的后台程序以及管理命令程序。

2. Storm环境搭建

在搭建Storm环境之前,需要对Java以及Zookeeper的环境进行配置

2.1 安装基础依赖

2.1.1 安装JDK

  1. 下载安装包:http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
  2. 解压缩:tar -xvf jdk-8u144-linux-x64.tar.gz
  3. 设置环境变量,在/etc/profile输入以下内容
JAVA_HOME=/usr/java/jdk-8u144-linux-x64CLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH
  1. 执行source /etc/profile
  2. 验证:java -version

2.1.2 安装Zookeeper

安装过程参见:http://blog.csdn.net/eric_sunah/article/details/43969603

2.2 本地调试/开发

如果还没有搭建集群,又想试一下Storm的运行效果,可以通过本地运行的方式运行,提交Topology的方式如下:

LocalCluster cluster = new LocalCluster();cluster.submitTopology("word-count", conf, builder.createTopology());

2.3 手动配置集群

当并发量较大时,需要将Topology提交到集群中运行,本章主要介绍手动搭建集群的方式

集群配置流程如下:
1. 环境信息
- storm的版本:1.1.0
- OS版本:Ubuntu 14.04
2. 机器角色分配

Host 角色 192.168.5.137 Nimbus,Supervisor,UI 192.168.5.138 Supervisor 192.168.5.139 Supervisor 192.168.5.140 Supervisor

3. 在192.168.5.137上下载storm:http://www.apache.org/dyn/closer.lua/storm/apache-storm-1.1.1/apache-storm-1.1.1.tar.gz
4. 解压缩:tar –zvxf apache-storm-1.1.1.tar.gz –C /usr/local/
5. 配置环境变量/etc/profile

export STORM_HOME==/usr/local/storm    export PATH=$STORM_HOME/bin:$PATH 
  1. 修改storm.yaml,Storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置Storm。以下配置选项是必须在conf/storm.yaml中进行配置的:
# Storm使用的Zookeeper集群地址storm.zookeeper.servers:     - "192.168.5.138"     - "192.168.5.139"     - "192.168.5.140"# Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,这里提供两个做主备nimbus.seeds: ["192.168.5.137", "192.168.5.138"]# Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。storm.local.dir: "/root/storm/wkdir"# Storm ui的端口ui.port: 9999# 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口supervisor.slots.ports:     - 6700     - 6701     - 6702     - 6703
  1. 将192.168.5.137的/usr/local/apache-storm-1.1.1 目录同步到其他几个节点
  2. 每个节点都执行 source /etc/profile
  3. 启动进程:Stor也是快速失败(fail-fast)的系统,Storm可以在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么Storm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。
    以下是启动Storm各个后台进程的方式:

    • Nimbus: 在Storm主控节点上运行 “storm nimbus &”
    • Supervisor: 在Storm各个工作节点上运行” storm supervisor &”
    • UI: 在Storm主控节点上运行 “storm ui &”

    注意事项:

    • Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。
    • Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作
    • 为了方便使用,可以将bin/storm加入到系统环境变量中
  4. 验证:登录http://192.168.137:9999/index.html 查看集群情况

2.4 提交Topology

如果Topology已经生成好了Jar包,可以通过以下方式提交Topology

./storm jar storm_demo.jar com.eric.storm.sample.WordCountTopolopgyAllInJava

3 配置说明

Storm中包含了大量的配置,至于集群的配置信息可以参考 http://192.168.5.137:9999/index.html 中的 Nimbus Configuration 部分的内容。
关于配置的解释,可以参考官方文档:http://storm.apache.org/releases/1.1.1/Configuration.html

4 自动化配置集群

当集群规模比较大时,集群的管理是一个复杂的问题。Puppet提供了对Storm 集群进行管理的一套脚本。需要的同学可以自行研究下,github地址:https://github.com/miguno/puppet-storm

原创粉丝点击