Apache Storm之集群安装

2023-11-15

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Storm之集群安装 的相关文章

  • Qt中的多线程使用

    Qt提供了许多用于处理线程的类和函数 我们可以在从其中选择一种合适的来实现 总结下来一共有4种 QThread QThreadPool and QRunnable Qt Concurrent WorkerScript QML 下面就通过示例

随机推荐

  • android 卸载残留代码,安卓手机怎么彻底清除卸载残留文件夹?如何彻底删除安卓手机上的残留软件[多图]...

    小伙伴们在清理手机垃圾的时候会出现卸载的软件还留有没用的文件夹 但也不知道哪个文件是否能删除 是否有用 不知道哪些是没用的垃圾 并且还会占用很多的内存 接下来就由果粉客为大家详细介绍下安卓手机彻底清除卸载残留文件夹的方法吧 打开手机 文件管
  • 【云原生之kubernetes实战】Kompose工具的安装使用

    云原生之kubernetes实战 Kompose工具的安装使用 一 Kompose工具介绍 二 检查本地k8s环境 1 检查工作节点状态 2 检查kubectl版本 3 检查系统pod状态 三 安装Kompose 1 创建安装目录 2 下载
  • mybatis xml中枚举类

    1 枚举类 package com cloud constant import lombok AllArgsConstructor import lombok Getter Title Type java ProjectName com s
  • c#ThreadPool 线程池的使用

    一 设置线程池的最大最先线程数量 ThreadPool SetMaxThreads 16 16 设置线程池最大线程数量 ThreadPool SetMinThreads 8 8 ThreadPool GetMaxThreads out wo
  • 剑指offer 学习笔记 二叉树的深度

    面试题55 二叉树的深度 1 输入一棵二叉树 求该树的深度 只需遍历整棵树的每一条路径找出最长的即可 以下代码中的树结构为 include
  • .777勒索病毒数据恢复

    引言 在当今数字化时代 勒索病毒威胁日益严峻 其中 777 勒索病毒 是近期备受关注的一种恶意软件 本文91数据恢复将介绍 777 勒索病毒 的特点和工作原理 并探讨在遭受该病毒攻击后 被加密的数据文件如何进行恢复 如不幸感染这个勒索病毒
  • 初时Python博大精深

    Python是解释型语言 编译型vs解释型 编译型优点 编译器一般会有预编译的过程对代码进行优化 因为编译只做一次 运行时不需要编译 所以编译型语言的程序执行效率高 可以脱离语言环境独立运行 缺点 编译之后如果需要修改就需要整个模块重新编译
  • 卸载阿里云的mysql_阿里云linux上,记一次mysql重装——卸载,安装 mysql 5.7

    上一次的挖矿病毒可是搞惨我了 虽然勉强清掉了 但是不知道为什么mysql后来无法登录了 找了一切办法来解决 from百度 然并卵 好吧 重装 1 备份 备份原来的数据库 里面有我的所有数据库脚本文件 一一拷出来 root jun cd us
  • ABTest灰度发布

    ABtest一个总的目的和意图是 判断哪种种UI或rerank策略更优 通过事实的依据 CTR或下单率 判断哪种策略更符合用户的习惯和需求 我们经常会面临多个设计方案的选择 比如app或pc端某个界面的某个按钮是用红色还是用蓝色 是放左边还
  • mysql生成随机时间,随机整数

    SELECT FLOOR 7 RAND 6 取7到12的随机整数 包括7到12 SELECT FLOOR 12 rand 13 取12到24的随机整数 包括12到24 LPAD FLOOR 0 RAND 23 2 0 取0 24之间的随机数
  • JUC-13. JMM

    想了解更多JUC的知识 JUC并发编程合集 1 Java内存模型 JMM Java内存模型Java Memory Model 简称JMM 本身是一种抽象的概念 并不真实存在 它描述的是一组规则或规范 通过规范定制了程序中各个变量 包括实例字
  • 凌乱的日期

    import java util ArrayList import java util Arrays import java util Collections import java util HashSet import java uti
  • ubuntu安装驱动 USB转转串口 232串口 PL2303 DB9

    ubuntu安装驱动 USB转串口 RS232串口 PL2303 DB9 工具 安装软件minicom minicom功能快捷键 minicom的使用 cutecom软件安装 cutecom使用 工具 因为我使用的是rs232串口设备芯片为
  • 6.Docker容器底层实现了解与安全机制

    原文地址 点击直达 文章目录 0x00 底层实现 基本架构 简述I O设备 1 命名空间 2 控制组 子系统之Devices 子系统之cpuset 子系统之cpu 子系统之cpuacct 子系统之memory 子系统之blki
  • 一看就懂TCP/IP协议族全析

    TCP IP协议族 计算机与网络设备要相互通信 双方就必须基于相同的方法 如何探测到通信目标 由那一边现发起通信 使用哪种语言 使用那种操作系统 怎样结束通信等都需要事先确定 不同的硬件 操作系统之间的相互通信 所有的这一切都需要一种规则
  • QDialog、QWidget、QMainWindow的区别

    QDialog QWidget QMainWindow的区别 dialog有exec函数 如果是dialog窗口 后边的窗口是不可选的 widget和dialog都有show函数 如果通过这个函数显示这两种类型的窗口 则两个窗口都是可选的
  • 国际带宽市场的发展趋势和前景

    随着全球互联网的不断普及和云计算 人工智能等新技术的迅猛发展 国际带宽市场在不断扩大 成为了全球信息通信领域的重要组成部分 本文将就国际带宽市场的发展趋势和前景进行探讨 一 市场概况 国际带宽是指一个国家或地区连接国际互联网所拥有的带宽资源
  • VMware Workstation Pro 16.2.4安装教程

    VMware Workstation Pro 16 2 4 安装教程 文章目录 VMware Workstation Pro 16 2 4 安装教程 下载最新版VMware 双击打开 自定义安装位置 把 去掉 点击下一步 等待安装 点击许可
  • 主从服务器 共用文件,Docker+keepalived+nginx实现主从热备的方法示例

    前言 为解决单点故障 我们需要配置主从热备方案 服务器数量有限 故使用Docker模拟安装配置 本次配置默认已经安装了Docker 配置环境 centos7 64位 docker版本 Docker version 17 12 1 ce bu
  • Apache Storm之集群安装

    1 环境 storm 1 2 1 Java 7 storm 1 x对java 7 和 java 8均进行了测试 Pytho 2 6 6 Python 3 x理论上也可以 但是并不作为storm的测试 以上是storm的环境 如果不匹配的ja