Storm 环境部署及简单使用

简介:

===> 什么是 Storm?

        --> Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,遵循 Eclipse Public License 1.0。

        --> Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。

        --> Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。

            Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用

            户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 

        --> Storm的主工程师Nathan Marz表示:Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,

               Storm用于实时处理,就好比 Hadoop 用于批处理。

               Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用

                任意编程语言来做开发

===> Storm 支持离线计算和流式计算

        --> 离线计算:批量获取数据,批量传输数据,周期性比量计算数据,数据展示(Sqoop-->HDFS--> MR ---> HDFS)

            --- 代表技术:

                    -- Sqoop 批量导入数据

                    -- HDFS 批量存储数据

                    -- MapReduce 批量计算

                    -- Hive

        --> 流式计算:数据实时产生,数据实时传输,数据实时计算,实时展示(Flume ---> Kafka ---> 流式计算 ---> Redis)

            --- 代表技术:

                    -- Flume 实时获取数据

                    -- Kafka/metaq 实时数据存储

                    -- Storm/JStorm 实时数据计算

                    -- Redis 实时结果缓存,持久化存储(MySQL)

===> Storm 与 Hadoop 的区别

        --> 

Storm Hadoop
用于实时计算 用于离线计算
处理的数据保存在内存中,连连不断 处理的数据保存在文件系统中
数据通过网络传输进来 从 HDFS 平台获取数据


===> Storm 体系结构

image.png


===> Storm 运行流程

image.png

        --> Storm 结构中各部分职责:

            --- Nimbus: 

                    负责资源分配和任务调度

            --- Supervisor

            负责接受 Nimbus 分配的任务,启动和停止属于自己管理的 worker 进程

                  (*)可通过配置文件设置当前 supervisor 上启动几个 worker 进程

            --- Worker:

                    运行具体处理 组件逻辑 ,任务类型有两种:

                    -- Spout任务

                    -- Bolt 任务

            --- Executor: 

                        Storm 0.8 之后, Executor 为 Worker 进程中的具体的物理线程,同一个 Spout/Bolt的 Task可能会共享一个物理线程,一个 Executor 中只能运行隶属于同一个 Spout/Bolt 的 Task

            --- Task: 

                    worker 中每一个 spout/bolt 的线程称为一个 task, 在 storm0.8 之后, task 不再与物理线程对应,不同 spout/bolt 的 task 可能会共享一个物理线程,该 线程称为 executor


===> Strom 伪分布式安装部署

        --> 安装前需要部署 Zookeeper 环境,参见:http://blog.51cto.com/songqinglong/2062909 

        --> 解压:

1
         tar zxf apache - storm - 1.0 . 3.tar .gz  - / app


        --> 配置环境变量

1
2
3
4
5
6
         vim  ~ / .bash_profile
         # storm_home
         STORM_HOME = / app / apache - storm - 1.0 . 3
         export STORM_HOME
         PATH = $STORM_HOME / bin :$PATH
         export PATH


        --> 修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        vim $STORM_HOME / conf / storm.yaml 
          # 此处指定 zookeeper 节点           
          storm.zookeeper.servers:
                 -  "192.168.10.210"
         
          # nimbus.seeds: ["host1", "host2", "host3"]
          # 此处指定 nimbus 节点
          nimbus.seeds: [ "192.168.10.210" ]
          # 每个从节点上的worker个数
          supervisor.slots:ports:
             -  6700
             -  6701
             -  6702
             -  6703
         
          # 开启任务 Debug 功能
          "topology.eventlogger.executors" 1
          # 任务上传后,保存的目录
          storm.local. dir "/data/storm_data"


        --> 启动Storm

            --- 伪分部模式:

1
2
3
4
       storm nimbus &            
       storm ui &       # 可以通过 http 的方式查看:http://ip:8080
       storm supervisor &
       storm logviewer &

            --- 完全分部式:

                    -- 主节点

1
2
3
         storm nimbus &
         storm ui &
         storm logviewer &

                    -- 从节点

1
2
         storm supervisor    
         storm logviewer

        --> 查看:  http://ip:8080

===> Strom 完全分布式安装部署

        --> 安装方式与伪分布式基本相同,只需要将安装目录copy 到其它节点上即可

===> Storm HA

        --> 只需修改storm.yaml 文件中的 nimbus.seeds: ["bigdata1"] ,将主机加入到此列表中,并在主机上启动 nimbus 即可


===> Storm 常用命令 

        --> 提交任务

            --- 格式:storm jar    ***.jar   [Toplogy名字:类名字]   别名

            --- 示例:

1
       storm jar storm - starter - topologies - 1.0 . 3.jar  org.apache.storm.starter.WordCountTopology MyWordCountExample


        --> 杀死任务

            --- 格式:storm  kill  任务名称   -w  10    注: -w  等待秒数

            --- 示例:

1
       storm kill MyWordCountExample   - w   10

        --> 停用任务

            --- 格式:storm deactivte 任务名称

            --- 示例:

1
       storm deactivte  MyWordCountExample

            --- 格式:storm activate 任务名称

            --- 示例:

1
       storm activate MyWordCountExample


        --> 重新部署任务

            --- 格式:storm rebalance 任务名称

            --- 示例:

1
       storm rebalance MyWordCountExample

            --- (*) 当集群有所变动,此命令将会信用拓扑,然后在相应的超时时间内重启拓扑,重新分配任务

===> Storm 中 WordCount 程序流程分析

        --> 通过查看 Storm  UI 上每个组件的events 链接,可以查看 Storm 的每个组件(spout/blot)发送的消息

        --> 需要开启 Debug 功能,在配置文件中添加下列参数并重新启动 storm 

1
             "topology.eventlogger.executors" 1


        -->

 image.png

===> Storm 编程模型

image.png


        --> Topology: Storm 中运行的一个实时应用程序的名称

        --> Spout: 在一个topology 中获取源数据流,然后转换为 topology 的内部源数据

        --> Bolt: 接受数据然后执行处理,用户可以在其中执行自己想要的操作

        --> Tuple: 一次消息传递的基本单元

        --> Stream: 表示数据的流向

        --> StreamGroup: 数据分组策略

            --- Shuffle Grouping随机分组,尽量均匀的分布到下游 Bolt 中

            --- Fields Grouping: 按字段分组,按数据中 field 值进行分组, 相同 field 值的 Tuple 被发送到相同的Task

            --- All grouping: 广播

            --- Global grouping: 全局分组, Tuple 被分配到一个 Bolt 中的同一个Task 中,实现事物性的 Topology

            ---  None grouping: 不分组

            --- Direct grouping: 直接分组,指定分组


===> Storm 集群在 Zookeeper 中保存的数据结构

image.png

===> Strom 任务提交


image.png




本文转自 菜鸟的征程 51CTO博客,原文链接:http://blog.51cto.com/songqinglong/2067815

相关文章
|
存储 Shell 网络安全
Centos7.9安装openldap
Centos7.9安装openldap
670 16
|
数据可视化 API 异构计算
一分钟部署 Llama3 中文大模型,没别的,就是快
Meta开源了80亿和700亿参数的大模型,挑战百度创始人李彦宏的观点。这些模型在性能上逼近GPT-4和Claude3。此外,一个400B的超大模型即将发布。Huggingface上已有多个Llama3中文微调版本。无GPU用户可使用量化模型在CPU上运行,如8B模型用8bit量化,70B模型用4bit量化。最佳中文微调版是zhouzr/Llama3-8B-Chinese-Chat-GGUF,可在三分钟内通过Sealos公有云快速部署,搭配WebUI如Lobe Chat进行交互。
1130 3
|
机器学习/深度学习 人工智能 自然语言处理
智能导诊系统的技术体系组成
智能导诊系统基于SpringBoot、Redis、MyBatis Plus、MySQL和RocketMQ等技术架构开发,具备自主版权,适合二次开发。系统融合AI大模型、自然语言处理(NLP)、知识图谱、多模态交互等先进技术,通过症状推理与科室匹配,实现精准导诊。用户可通过点击3D人体模型或描述症状,快速获得可能疾病方向及推荐科室,支持语音识别、医学影像分析等功能。同时,系统采用联邦学习、同态加密等技术保障数据安全,符合隐私保护法规。适用于医院智慧医疗场景,提升患者就诊效率与体验。
724 0
|
存储 机器学习/深度学习 人工智能
C 408—《数据结构》易错考点200题(含解析)
408考研——《数据结构》精选易错考点200题(含解析)。
1757 27
|
Shell Linux 开发工具
Vmware 虚拟机挂起恢复后发现无法 Ping 通,无法连接到主机
在Linux主机上,以`root`用户停止NetworkManager服务并重启网络: ```shell systemctl stop NetworkManager systemctl restart network ``` 或修改网卡配置文件`ifcfg-ens33`,添加`NM_CONTROLLED="no"`,然后重启`network`服务: ```shell vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network ```
785 6
|
消息中间件 数据安全/隐私保护 RocketMQ
消息队列 MQ使用问题之遇到消费速度是固定的并且导致了堆积,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
算法 物联网 数据库
Python 物联网入门指南(一)(4)
Python 物联网入门指南(一)
207 3
|
存储 监控 安全
10 款免费的网络监控工具
互联网的飞速发展,互联网的使用越来越普遍,网络和互联网不仅成为企业内部的沟通桥梁,也是企业和外部进行各类业务往来的重要管道。 网络监控软件定义:指针对局域网内的计算机进行监视和控制,针对内部的电脑上互联网活动(上网监控)以及非上网相关的内部行为与资产等过程管理(内网监控;所以包含了上网监控(上网行为监视和控制、上网行为安全审计)和内网监控(内网行为监视、控制、软硬件资产管理、数据与信息安全),有些还增加了数据安全的透明加密软件部署 1. Monit Monit 是一个Linux/UNIX系统上开源的进程、文件、目录和文件系统监控和管理工具,可自动维护和修复一些错误的情况。
3779 0
|
Linux 开发工具
设置centos默认启动命令行(不启动图形界面)
设置centos默认启动命令行(不启动图形界面)
|
分布式计算 Java Apache
window环境下安装spark
window环境下安装spark
1903 0