storm集群部署和配置过程详解

简介:

  先整体介绍一下搭建storm集群的步骤:
  1. 设置zookeeper集群
  2. 安装依赖到所有nimbus和worker节点
  3. 下载并解压storm发布版本到所有nimbus和worker节点
  4. 配置storm.yaml
  5. 启动相关后台进程

1 首先配置zookeeper集群

     我们知道storm通过zookeeper来协调整个集群。zookeeper不是用来做消息传递,因此storm不会给zookeeper带来很大的压力。单节点的zookeeper在大多情形下是可以胜任的,但是如果你想得到更好的可靠性或者部署大集群的话,你可能就需要一个大的zookeeper集群。关于zookeeper的部署在这里就不多做介绍,具体请参考: here
     关于zookeeper的部署这里再补充两点:
  1. 把zookeeper运行在一个监督进程之下是非常关键的,因为zookeeper是一个fail-fast的进程,当它遇到任何错误的时候都会自动退出,具体请参考:  here
  2. 定时的去压缩和转移zookeeper数据也是非常关键的,因为zookeeper不具备压缩和清楚数据机制,如果我们不设置一个cron管理这些数据,zookeeper产生的数据会很快的占满磁盘,具体请参考: here
     ps:如果zookeeper启动失败,查看一下它bin目录下的zookeeper.out文件,配置一下它的myid试试。

2 安装依赖到nimbus和worker节点

    storm需要依赖的是:
  1. Java 6
  2. Python 2.6.6     
     需要注意,storm对大多数版本的依赖都做了测试,但是storm并不保证对任何版本的依赖都能正常工作。

3 下载解压storm发布版本到nimbus和worker节点

     下一步就是下载解压storm压缩文件到每一台机器,storm发布版本可以从这里下载 from here

4 配置storm.yaml文件

     storm里面有一个文件conf/storm.yaml,它就是storm的配置文件。关于这个文件的所有默认值可以从这里得到 here 。storm.yaml中的配置会覆盖掉default.yaml中的配置。下面配置一个集群必须修改的配置:

     1) storm.zookeeper.servers:配置zookeeper集群的列表
 storm.zookeeper.servers:
       - "111.222.333.444"
       - "555.666.777.888"
     如果你的zookeeper集群使用的端口不是默认端口,那么你还得配置storm.zookeeper.port。
     2) storm.local.dir :storm的nimbus和work进程需要一个目录来存放一小部分状态数据,比如jars、confs等等。我们需要在每台机器上创建这个目录并且赋予其相应的权限。
 storm.local.dir: "/mnt/storm"
     3) nimbus.host:worker节点需要知道哪个机器是master节点,以便自己从maser节点下载jars和confs。
 nimbus.host: "111.222.333.44"
     4) supervisor.slots.ports:对于每一台worker机器,它决定了这台机器一共可以运行多少个worker进程。每个worker进程会独占一个端口来接收消息,这个参数就是配置了哪些端口会分配给worker进程。如果你在这配置了5个端口,那么storm将能分配5个worker进程给这台机器,如果配置3个端口,那么storm也只能分配3个worker进程。storm默认分配4个worker进程到6700,6701,6702,6703端口。比如:
 supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

5 通过storm命令运行storm相关的守护进程

     最后一步就是启动所有storm相关守护进程。当然,把这些进程都纳入到监督进程管理之下是很有必要的。storm也是一个fail-fast系统,这就意味着这些进程一但遇到异常就会终止。storm之所以会这么设计,是为了它可以在任何时候安全的终止和在进程重启的时候恢复。这就是storm为不在进程中保存相关状态的原因,如果nimbus或supervisor节点重启,运行着的topoloies不会受到任何影响。下面就是启动storm相关进程的命令:
  1. Nimbus:在master节点运行“bin/storm nimbus”
  2. Supervisor:在每一台worker节点运行“bin/storm supervisor”,supervisor进程负责在worker节点上启动和停止相应的worker进程
  3. UI:运行“bin/storm ui” ,一个通过页面管理和展示storm集群运行状态的工具,可以通过“http://nimbus host:8080”来访问。     
    我们可以看到启动storm服务进程相当简单直接,storm产生的log会保存在各台机器的storm/logs目录中,storm通过logback管理它的日志,我们可以通过修改其logback.xml文件来改变其log的目录及内容。




目录
相关文章
|
2月前
|
人工智能 API 开发者
阿里云OPC创新助力计划:申请加入即刻解锁最低1000元 、最高100万元Token补贴
阿里云OPC创新助力计划采用"先用后返"模式,面向已实名认证的个人及企业用户,提供最低1000元、最高100万元的Token阶梯补贴,覆盖文本、语音、编码等核心模型,视频模型暂不参与。活动时间为2026年5月20日至9月30日,按月达标返券,需通过指定入口报名。此外,2026年6月还推出小额普惠权益,满20返20、满100返100、满200返200,新老用户均可参与。双轨并行大幅降低AI开发与应用试错成本,建议有AI落地需求的用户尽早报名锁定补贴。
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品加工优化的深度学习模型
使用Python实现智能食品加工优化的深度学习模型
695 59
|
2月前
|
安全 Java API
Java在Android应用开发中的持久生命力(除Kotlin之外)
虽然Google在2017年宣布Kotlin成为Android官方开发语言,但Java从未退出舞台。现有数十万个Android应用由Java编写,包括许多大型应用(如Twitter、Spotify早期版本)
273 0
|
11月前
|
JSON 缓存 供应链
电子元件 item_search - 按关键字搜索商品接口深度分析及 Python 实现
本文深入解析电子元件item_search接口的设计逻辑与Python实现,涵盖参数化筛选、技术指标匹配、供应链属性过滤及替代型号推荐等核心功能,助力高效精准的电子元器件搜索与采购决策。
|
前端开发 JavaScript 关系型数据库
终于找到它了,别再等客户提需求才开始找,开发者必备!这个开源HR工具竟然能替代市面上90%的人事系统,还能免费商用!
Frappe HR 是一款开源、现代化的人力资源与薪资管理软件,基于 Frappe 框架构建,提供员工全生命周期管理、请假考勤、费用报销、绩效管理和薪资税务处理等功能。支持移动应用和多种部署方式(托管或本地),技术架构稳定且可扩展。相比同类项目,Frappe HR 具备高度自定义能力与成本效益,适合各规模企业。项目地址:https://github.com/frappe/hrms。
1698 2
|
机器学习/深度学习 人工智能 算法
探索机器学习中的过拟合现象及其解决方案
在机器学习领域,过拟合是一个常见且棘手的问题,它发生在模型过于复杂以至于捕捉到训练数据中的噪声而非信号时。本文将深入探讨过拟合的原因、影响以及如何通过技术手段有效缓解这一问题,旨在为读者提供一个全面而实用的指南。
|
数据采集
基于R语言的GD库实现地理探测器并自动将连续变量转为类别变量
【9月更文挑战第9天】在R语言中,可通过`gd`包实现地理探测器。首先,安装并加载`gd`包;其次,准备包含地理与因变量的数据框;然后,使用`cut`函数将连续变量转换为分类变量;最后,通过`gd`函数运行地理探测器,并打印结果以获取q值等统计信息。实际应用时需根据数据特点调整参数。
890 8
|
Java 编译器 API
带你了解“Java新特性——模块化”
带你了解“Java新特性——模块化”
889 11
|
SQL 数据挖掘 关系型数据库
SQL中的聚合函数:数据分析的强大工具
【8月更文挑战第31天】
1101 0