storm基本原理概念及基本使用

牧梦者 牧梦者     2022-11-10     339

关键词:

1. 背景介绍

1.1 离线计算是什么

离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示;

代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算数据、Hive批量计算数据

1.2 流式计算是什么

流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示

代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)

一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果

1.3 Storm是什么

Storm用来实时处理数据,特点:低延迟、高可用、分布式、可扩展、数据不丢失。提供简单容易理解的接口,便于开发。

1.4 Storm与Hadoop的区别

1. Storm用于实时计算,Hadoop用于离线计算;

2. Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批;

3. Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中;

4. Storm与Hadoop的编程模型相似;

2. Storm核心组件

组件说明补充:

Nimbus:负责资源分配和任务调度。

Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。通过配置文件设置当前supervisor上启动多少个worker。

Worker:运行具体处理组件逻辑的进程(其实就是一个JVM)。Worker运行的任务类型只用两种,一种是Spout任务,一种是Bolt任务。

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

Zookeeper:保存任务分配信息、心跳信息、元数据信息。

并发度:用户指定的一个任务,可以被多个线程执行,并发度的数量等于线程的数量。一个任务的多个线程,会被运行在多个Worker(JVM)上,有一种类似于平均算法的负载均衡策略。尽可能减少网络IO,和Hadoop中的MapReduce中的本地计算的道理一样。

3. Storm编程模型

 

组件说明补充

DataSource:外部数据源。

Spout:接收外部数据源的组件,将外部数据源转化成Storm内部的数据,以Tuple为基本的传输单元下发给Bolt。

Bolt:接收Spout发送的数据,或上游的Bolt发送的数据。根据业务逻辑进行处理。发送给下一个Bolt或者是存储到某种介质上。介质可以是Redis,可以是Mysql,或者其他。

Tuple:Storm内部中数据传输的基本单元,里面封装了一个List对象,用来保存数据。

StreamGrouping:数据分组策略。7种,shuffleGrouping(Random函数)、Non Grouping(Random函数)、FieldGrouping(Hash取模)、Local or ShuffleGrouping、本地或随机、优先本地。

Worker与Topology

一个worker只属于一个topology,每个worker中运行的task只能属于这个topology。反之,一个topology包含多个worker,其实就是这个topology运行在多个worker上。一个topology要求的worker数量如果不被满足,集群在任务分配时,根据现有的worker先运行topology。如果当前集群中worker数量为0,那么最新提交的topology将只会被标识active,不会运行。只有当集群有了空闲资源之后,才会被运行。

4. Storm常用操作命令

storm有许多简单且有用的命令可以用来管理拓扑,它们可以提交、杀死、禁用、再平衡拓扑。

4.1 提交任务命令

storm jar 【jar路径】【拓扑包名.拓扑类名】【拓扑名称】

storm  jar  examples/storm-starter/storm-starter-topologies-0.9.6.jar  storm.starter.WordCountTopology  wordcount

4.2 杀死任务命令

storm kill 【拓扑名称】 -w  10 (执行kill命令时可以通过-w [等待秒数] 指定拓扑停用以后的等待时间)

storm  kill  topology-name  -w  10

4.3 停用任务命令

storm  deactivte  【拓扑名称】

storm  deactivte  topology-name

我们能够挂起或停用运行中的拓扑。当停用拓扑时,所有已分发的元组都会得到处理,但是spouts的nextTuple方法不会被调用。销毁一个拓扑,可以使用kill命令。它会以一种安全的方式销毁一个拓扑,首先停用拓扑,在等待拓扑消息的时间段内允许拓扑完成当前的数据流。

4.4 启用任务命令

storm  activate  【拓扑名称】

storm  activate  topology-name

4.5 重新部署任务命令

storm  rebalance  【拓扑名称】

storm  rebalance  topology-name

再平衡使你重新分配集群任务。这是个很强大的命令。比如,你向一个运行中的集群增加了节点。再平衡命令将会停用拓扑,然后在相应超时时间之后重新分配工人,并重启拓扑。

 

lvm逻辑卷基本概念及lvm的工作原理

这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!!一、传统的磁盘管理其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(MasterBootRecorder)都是通过先对一... 查看详情

json基本概念及使用

...法。类似XML。JSON比XML更小、更快,更易解析。1.JSON数据基本类型JSON实际上是JavaScript的一个子集。在JSON中,一共就这么几种数据类型:number:和JavaScript的number完全一致;boolean:就是JavaScript的true 查看详情

docker概念及基本用法

Docker概念及基本用法一、本节内容简介本实验中我们初步接触Docker的概念和基本用法。需要依次完成下面几项任务:理解Docker是什么学习如何在Linux上安装Docker学习如何使用DockerHub创建第一个HelloShiyanlou的Docker应用Docker基本的容... 查看详情

redux入门学习笔记①——基本概念及使用(代码片段)

Redux入门学习笔记①——基本概念及使用Redux架构Redux的基本概念①Store②State③Action④ActionCreator⑤发布Action——store.dispatch()⑥处理Action——Reducer⑦store.subscribe()Redux小结***createStore实现近期参与新的项目组,跟着学习。我是第... 查看详情

redux入门学习笔记①——基本概念及使用(代码片段)

Redux入门学习笔记①——基本概念及使用Redux架构Redux的基本概念①Store②State③Action④ActionCreator⑤发布Action——store.dispatch()⑥处理Action——Reducer⑦store.subscribe()Redux小结***createStore实现近期参与新的项目组,跟着学习。我是第... 查看详情

vue-router基本概念及使用

index.html:1<!DOCTYPEhtml>2<html>3<head>4<title></title>5<metacharset="utf-8">6<scriptsrc="http://unpkg.com/vue/dist/vue.js"></script>7<scriptsrc="ht 查看详情

tensorflow核心概念及基本使用

TensorFlow核心概念  综述:TensorFlow中的计算可以表示为一个有向图,或称计算图,其中每一个运算操作将作为一个节点,节点间的链接叫做边。这个计算图描述了数据的计算流程,它也负责维护和更新状态,用户可以对计算图... 查看详情

1ejb基本概念及运行环境

1、EJB是什么?  EJB是一个用于分布式业务应用的标准服务端组件模型。采用EJB构架编写的应用是可伸缩的、事务性的、多用户安全的。采用EJB编写的应用可以部署在任何支持EJB规范的服务器平台上,例如:jboss、weblogic。2、EJB... 查看详情

git基本概念及使用

Git分布式特性:集中化的版本控制系统:他们都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。如下图所示   分布式版本... 查看详情

rabbitmq基本概念及基础使用(代码片段)

什么是MQMQ(messagequeue),从字面上来说,本质是个队列,是先进先出的数据结构,只不过内存中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游的传递消息为什么要使用MQ流量消... 查看详情

锁的概念及synchronized使用原理解析(代码片段)

...c;并解析synchronized怎么锁住对象,以及简单应用,基本概念等等。锁的 查看详情

mysql索引基本概念及案例总结(含索引的使用注意事项)(代码片段)

Mysql索引基本概念及案例总结键(Key)与索引(Index)关键字的区别索引是键的列表,当我们定义一个key(外键除外,一般是PRIMARYKEY或者KEY形式)时就会产生对应的索引。一般情况下KEY和INDEX关键字可以互换。唯一索引的说明唯一... 查看详情

mycat基本概念及读写分离一

mycat基本概念及读写分离一目录(?)[+]安装与启动mycat目录介绍mycat三个最重要配置文件验证读写分离安装与启动linux下可以下载Mycat-server-xxxxx.linux.tar.gz解压在某个目录下,建议放在usr/local/mycat目录下,注意目录不能有空格。下载后... 查看详情

xml基本概念及增删改查操作

一、概念及特征:1.XML指可扩展标记语言(ExtensibleMarkupLanguage),用户可以自己定义标签。XML被设计用来传输和存储数据,而HTML用于格式化并显示数据,并且HTML不能自定义标签。2.XML文档形成一种树结构,XML文档必须包含根元素。... 查看详情

ssh基本概念及常见问题解决(代码片段)

...,遇到一些问题,在此记录总结一下。二、SSH的基本概念基本背景和特性在百度百科上,关于SSH的介绍较为详细,主要可以去关注以下几点:SSH的基础背景,解决何种问题SSH为建立在应用层基础 查看详情

rpc概念及nfs的基本应用

NFS:NetworkFileSystem  NFS监听在TCP/UDP:2049端口;nfs服务器:[[email protected]~]#yum-yinstall[[email protected]~]#lsmod|grepnfs  //查看NFS的加载的模块,[[email protected]~]#systemctlstartnfs[[email  查看详情

elasticsearch-elasticsearch基本概念及集群内部原理(代码片段)

文章目录1.ElasticSearch的应用场景01.Elasticsearch是什么?02.为何使用Elasticsearch?03.Elasticsearch的用途是什么?04.Elasticsearch的工作原理是什么?05.Elasticsearch索引是什么?06.Logstash的用途是什么?07.Kibana的用途是... 查看详情

维度建模的基本概念及过程

...p;摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识;其次,介绍设计维度模型的4个基本步骤;再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据仓... 查看详情