Storm入门简介

  • 目录
  • 前言:
    • 1、Storm简介
    • 2、Storm与Hadoop的区别
    • 3、Storm核心组件
    • 4、Storm编程模型
    • 5、流式计算一般架构图(重要)
    • 总结:

目录

前言:

在介绍Storm之前,先介绍下离线计算。
离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示
代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算数据、Hive批量计算数据、azkaban任务调度
与之对应的就是流式计算即Storm的应用场景——流式计算。那么流式计算是什么呢?
流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示。
代表技术:Flume实时采集数据、kafka实时数据存储、Storm实时计算数据、redius实时结果缓存、持久化存储(Mysql)。
一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果。

1、Storm简介

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

2、Storm与Hadoop的区别

Storm处理的数据保存在内存中源源不断Hadoop处理的数据保存在文件系统中,一批一批
Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。
Storm与Hadoop的编程模型相似

这里写图片描述

3、Storm核心组件

这里写图片描述
• Nimbus:负责资源分配和任务调度。
• Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。—通过配置文件设置当前supervisor上启动多少个worker。
• Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。
• Task:worker中每一个spout或bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。Task=线程=executor


补充知识:
Zookeeper:保存任务分配的信息、心跳信息、元数据信息。
并发度:用户指定的一个任务,可以被多个线程执行,并发度的数量等于线程的数量
Worker与topology:
一个worker只属于一个topology,每个worker中运行的task只能属于这个topology。 反之,一个topology包含多个worker,其实就是这个topology运行在多个worker上。
一个topology要求的worker数量如果不被满足,集群在任务分配时,根据现有的worker先运行topology。如果当前集群中worker数量为0,那么最新提交的topology将只会被标识active,不会运行,只有当集群有了空闲资源之后,才会被运行。

4、Storm编程模型

这里写图片描述
• Topology:Storm中运行的一个实时应用程序的名称。(拓扑)
• Spout:在一个topology中获取源数据流的组件。接受外部数据源的组件,将外部数据源转化成Storm内部的数据,以Tuple为基本的传输单元下发给Bolt
• Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。接受Spout发送的数据,或上游的bolt的发送的数据。根据业务逻辑进行处理。发送给下一个Bolt或者是存储到某种介质上。介质可以是Redis可以是mysql,或者其他。
• Tuple:一次消息传递的基本单元,里面封装了一个List对象,用来保存数据,理解为一组消息就是一个Tuple。
• Stream:表示数据的流向。
• 通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。

5、流式计算一般架构图(重要)

这里写图片描述
其中

  • flume用来获取数据。
  • Kafka用来临时保存数据。
  • Strom用来计算数据。
  • Redis是个内存数据库,用来保存数据。

总结:

对于Storm来说首先你要了解以下几个知识点:
1、离线计算和流式计算是什么以及对应的区别。
2、Storm是什么以及是干什么用的。
3、Storm与Hadoop的区别。
4、Storm的核心组件。(重点)
5、Storm的编程模型。(在新的文章中详细介绍)
6、流式计算的一般架构图。(重点)
7、Storm的应用场景及行业案例。
了解了以上的知识点,你就算是和博主一样刚刚入门。下面将会围绕上面的一些重要的知识点就行详细的介绍(如编程模型以及对应的WC案例的分析:详见:https://blog.csdn.net/qq_16633405/article/details/79835012)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目完成

完成示例项目 现在还需要的代码包括三个方面,三个方面顺序不分先后。 1.定义视图2.定义URLconf3.定义模板 定义视图 编写booktest/views.py文件如下: from django.shortcuts import render from booktest.models import BookInfo#首页,展…

前端模板预编译技术

什么是前端模板预编译 前端模板预编译通过预编译技术让前端模板突破浏览器限制,实现后端模板一样的同步“文件”加载能力。它采用目录来组织维护前端模板,从而让前端模板实现工程化管理,最终保证前端模板在复杂单页 web 应用下的可维护性。同…

Python如何生成windows可执行的exe文件

打包工具 pyinstaller 安装pyinstaller 如果你的网络稳定,通常直接使用下面的命令安装即可: pip install pyinstaller 当然了,你也可以下载pyinstaller源码包,然后进入包目录执行下面的命令,同样可以安装&#xff…

招商银行信用卡中心华泰证券暑期实习软开笔试小结

白菜自动化小硕一枚,18届,下学期就正式要找工作了,没有实习经验,感觉心慌慌。现在学校里已经开始各种提前招实习,内推了,so暑假想提前试试水,投一投暑期实习。 看到心水的单位就投一投&#xff…

理想的程序猿

出处 | http://guoze.me 最近看到的一篇不错的文章,分享一下。 我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害…

node08-express

目录:node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-express node09-cookie express模块: 1 /*2 * express是一个应用框架3 * 1、路由4 * 2、中间件5 * 3、模板引擎6 * */7 8 var express requ…

【python】1. 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums [2, 7, 11, 15], t…

The user specified as a definer (#39;root#39;@#39;%#39;) does not exist

通常是因为root用户对全局host无訪问权限。因此仅仅要给root用户加入一个訪问权限就可以。解决的方法: 登陆mysql 。运行 mysql -u root -pPasswd mysql >grant all privileges on *.* to root"%" identified by "Passwd…

Java基础常见笔试题总结

以下是自己总结的一些Java常见的基础知识题,答案仅供参考,如有异议请指出。一直保持更新状态。 1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编…

ThreadLocal的练习代码

场景: 有三个小孩儿,买了一个变形金刚玩具(Transformer).... 三个小孩都争着玩这个玩具....没有一个人可以玩... 第一种方式:每个人各玩一会.... 第二种方式:再买两个玩具,一个人玩一个. 每个小孩都当成一个线程.三个小孩就有三个线程. Child.java 2 3 import java.util.Random…

nginx+uwsgi部署Django

本篇文章主要介绍了解决nginxuwsgi部署Django的所有问题(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 最近,自己暑假写的小项目也算完毕了,想着投放到自己云服务器上&#xff0…

$(document).scrollTop()与$(window).scrollTop()

$(document).scrollTop() 获取垂直滚动的距离 即当前滚动的地方的窗口顶端到整个页面顶端的距离 要获取顶端 只需要获取到scrollTop()0的时候 就是顶端了 要获取底端 只要获取$(document).scrollTop()>(document).height()−(window).height() 就可以知道已经…

各种机器学习开源项目精选TOP30

8800个机器学习开源项目为你精选TOP30! 授权自AI科技大本营(ID: rgznai100) 本文共图文结合,建议阅读5分钟。 本文为大家带来了30个广受好评的机器学习开源项目。 最近,Mybridge发布了一篇文章,对比了过去一年中机…

Python中is与==的使用区别详解

>>> a 1000 >>> b 1000 >>> print(id(a),id(b)) 2689566689904 2689566688880 >>> a ,b 1000,1000 >>> print(id(a),id(b)) 2689566689968 2689566689968 一行执行的用一个id地址 分行执行用两个地址

解决:Please specify a different SDK name--PyCharm报错

这个问题出现的原因是因为PyCharm中存在相同名字的虚拟环境变量。 本人的出错原因是,一直使用PyCharm的默认设置来建立工程,所以每个工程都建立了自己独立的虚拟环境。 我个人删除了一些工程后,又建立相同名字的工程。所以才会出现存在相同…

Tomcat控制台输出到文件

为什么80%的码农都做不了架构师?>>> 修改startup.bat call "%EXECUTABLE%" start %CMD_LINE_ARGS% 为 call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ..\logs\test.log 转载于:https://my.oschina.net/cccyb/blog/886047

常见算法详解(原理及代码实现Python版本)

文章目录前言1、冒泡排序2、选择排序3、插入排序4、希尔排序5、快速排序6、归并排序7、二分法查找总结前言 最近复习了下常见的算法,在这里手动再写一遍,权当加深自己的印象。代码实现用的是python3.6版本。 1、冒泡排序 原理: 冒泡排序&a…

解决:pycharm运行程序时在Python console窗口中运行 һ����ң�������1�����

解决:pycharm运行程序时在Python c 问题: 在pycharm中右键点击run运行程序,发现没有打开run窗口运行,而是在Python console窗口中运行的。 解决方法: 打开菜单栏 run->edit configurations, 把下图中的…

Autowire异常

Autowire异常主要由三个情况发生的 1. 你的ServiceImpl必须以Service或Component注解才行。 2. 自动写入的时候把接口写成实现类了,例如 Autowired private BrandServiceImpl brandServiceImpl; 应该是 Autowired private BrandService brandService; 3. 在Dao 类上…

[转载] 全方位提升网站打开速度:前端、后端、新的技术

原文地址:Building a Shop with Sub-Second Page Loads: Lessons Learned原文作者:Erik Witt译文出自:掘金翻译计划译者:luoyaqifei校对者:Romeo0906,L9m全方位提升网站打开速度:前端、后端、新…