当前课程知识点:高级大数据系统 >  Streaming Data Processing >  Storm >  Video

返回《高级大数据系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《高级大数据系统》慕课在线视频列表

Video课程教案、知识点、字幕

我们首先介绍Storm

Storm基于Hadoop生态环境

进行了这样一个流式数据

处理系统的一个设计

那么在Storm中  

它最开始想实现的一个目标

就是当数据能够进入系统之后

需要立即触发整个系统

进行这样一个数据源的一个处理

那么在Storm里面

它定义了一系列的这个数据的模型

编程的模型以及它的

这样一个任务的组织方式

实际上是一套全新的

这样一个系统来进行流式数据的一个处理

那我们介绍Storm

会从以下几个概念来进行介绍

一个呢 就是它的数据模型

我们看看流式数据

我们到底怎么去刻画它

因为我们之前对数据的刻画

都是基于文件

基于我们看得到的这个数据块

当数据现在流动起来之后

我们到底以什么样的方式

去刻画这样的数据

第二 我们介绍一个

叫做Topology的概念

那么流式数据处理

是怎么样把不同的数据

处理模块串联到一块

那么它里面的

这样一个东西叫做Topology

我们会介绍它

那么会介绍Topology中的

两个这个模块

一个叫做Spout像水龙头

就数据的一个一个的数据源

一个叫做Bolts

就像处理数据的

这样一个一个的处理单元

然后我们会介绍Spout和Bolts之间

它的这种数据的并行

以及数据的这样一个分配机制

这是我们要介绍的Storm的这些概念

那我们首先来看数据的

模型在Storm中是什么样子的

在Storm中

实际上把能够进入系统的这个数据流

把它进行了一定的抽象

那么把数据流中的每个数据元素

叫做一个元组 Tuple

每个元组实际上

可以包含很多很多的数据域

数据域可能是

由简单的数据类型组成

比如说有字符串 有这个数字

或者说还有一些其他的这种数据类型

那么这些数据类型不限制它的个数

把它们排在一起之后就形成了一个数据的元组

那这边我们给了一个例子

这个例子是在入侵检测中

我们可能会用得到的

有一个IP Address

IP地址 当然有它对应的这样一个url

我们可以看到一个Tuple

实际上就是这么一个小括号

括起来的这样一个元组

那么一系列的元组

依照时间的先后顺序进入系统之后

就形成了一个数据流

这是我们能看得到的

那数据流

你可以看 

它没有一个头

也没有一个尾

那么中间我们可以

看到某一个窗口里面

出现了若干的Tuple

这就形成了Storm

能够处理的数据流的一个模式

那么我们来看

有了数据流的概念之后

这个数据在里面

到底是在什么样的

这样一个实体上得到真正的处理的呢

第一个概念 叫做Spout

Spout的原意是水龙头

那么在我们这里面

大家很容易对应的上

它就是产生数据流的

数据的水龙头

那我们可以看

一个Spout实际上

可以生成一个数据流

然后这个数据流

可以被其他的

这个数据处理单元去接收

那么这样的一个数据的水龙头

数据的这样一个源呢

实际上它有自己的

这样一个定义的模式

比如说它会定义

自己能够产生什么样的数据

然后它会告诉

后续处理数据的这些单元

自己到底是不是稳定的

所谓稳定

比如说我的数据

如果你没有及时的处理

我还会不会再给你重放等等

这样的一些属性

是Spout里面会带有的

那么真正处理数据的这些单元呢

我们就要在Spout中把它叫做Bolt

Bolt实际上是处理数据的一些单元

它定义用户会在里面去定义自己

处理数据的一个模式

比如说我给统计

我看到了多少个Tuple

多少个数据源

这就实现了最简单的一个Bolt

同时Bolt还有一个特征

它可以进一步产生数据流

也就是说在Storm中

我们可以一个复杂的这种Tuple结构

图的结构

来把各种处理数据的

这种元素给串联起来

举个例子

比如说

我们看到了刚刚的

那种IP和URL的数据

实际上我们可以在第一个数据流

把其中的IP给提取出来

也就是说  

把它的Tuple中的IP Address给提取出来

然后形成一个新的流

那么我们原始的流是

IP Address和URL

那么新的流就变成了IP Address

独立的这样一个数据流

那么第二个Bolt

假设我们串联接在一起的话

它就可以去统计这些IP

比如说出现的次数

就变成了一个IP次数的

一个统计器

那这是我举的一个例子

但是在实际的系统当中

这种组合可以变得异常的复杂

比如说我们可以产生很多的支流

产生很多的这种组合的模式

那么这是Storm中

Spout一个形象的描述

那么数据就像水一样

从Spout中流取出来

然后可以被后续的程序去处理

那么处理这些数据的单元叫做Bolt

那么Bolt可以接收用户自定义的代码

然后对数据进行处理

大家要注意的是

这些模块

这些Spout和Bolt单元

在整个Storm系统中

实际上都是可以得到并行的运行的

多个进程去执行他们的这些代码

那么最终达到扩展到整个系统

达到一个Simpleness Scale

Scalability的能力

那么我们看当我们有了数据的模式

我们有了Spout和Bolt的概念之后

到底这些模块

是怎么样去形成一个处理数据的

一个模式呢

那么我们刚刚多多少少

也模糊地提到了

实际上它是通过一种

图的结构来组织的

在Storm里面

把它叫做Topology

实际上Topology呢

是Storm里面任务的核心概念

它把Bolt和Spout从逻辑上组织到一起

然后形成了一个有向无环图

那么这个有向无环图里面串联了各种各样的功能

实际上它和这种函数式的这个编程语言是等价的

那么一个Topology

实际上和我们在之前的MapReduce里面

所讲的这种一个任务

Hadoop里面的一个任务

实际上是能够对应的起来的

那么我们来看一个Topology

它的一个形象化的描述是什么样子

那么在这张图里面

一个方形实际上是一个Spout

可以产生数据

那我们这个系统中

我们这个Topology中

包含了两个数据源

上面和下面

那么它们产生数据之后

实际上可以被后面的

处理数据的这个单元接收

这样可以看得到

后面会有若干的这个Bolt来接收这些数据流

那么接收了数据流之后

可能还会产生新的数据流

进一步被其他的这个Bolt去接收

那么 我们看到有的data

我们有了这些functions

有了这些函数 有这些功能

然后串联起了这样一个Topology

那么整个串联的过程中

在Storm里面定义了这个串联

你只能把它连成一个有向无环图的一个样子

那么这当然也是有一定的这个道理

希望它的可扩展性

以及它对数据并行化的管理变得比较简单

但是不管怎么样

我们有了这样一个有向无环图之后

实际上我们实现了

从Storm处理数据的功能

到这个DAG的一个变化

以及从DAG到函数式编程语言的过度

函数式编程语言

大家可以看得到

我们在这张图里面

有f h g三个处理数据的单元 Bolt

那么它们分别可以把数据经过f和g两种处理

形成一个新的数据流

然后在h里面得到处理

那么这两个模式是能够对应起来的

所以大家如果有这种函数式编程语言的

一个算法或者是功能

那我们在Storm里面就可以实现相应的对应

我们来看

有了数据源

处理数据的单元

Topology和我们对它DAG的分解之后

实际上我们已经可以用

Storm来处理一些简单的事情

比如说在这个例子中

我们实现了一个类似于MapReduce中

WordCount的这样一个功能

我们想统计刚刚说到的

出现的域名最多的这个请求

那么我们的Stream是一个IP和域名的

一个Tuple进来之后

实际上我们会把Tuple提出来

然后在每一个Bolt上

去统计不同的域名出现的次数

比如说第一个Bolt

我们会让它统计foo.com它出现的次数

那么在当前这个流的状态下

得到了三次

那么另外一个Bolt

接了相同的流

但是我们让它去统计bar.net它出现的次数

那我们发现它是两次

有了这样一个基本概念之后

实际上我们已经可以做出

这个Storm中任意复杂的

这样一个数据处理的程序

那它简单的概念就是这样的

高级大数据系统课程列表:

Introduction to Big Data Systems

-What is big data and what is big data system?

--Video

-Problems in big data systems?

--Video

-Overview of the course

--Video

-Principles of big data system design

--Video

Basics of Linux Data Processing

-Manipulating Data on Linux

--Video

--Video

--Video

-Basics of Linux Data Processing--Manipulating Data

-Running Commands on a Single Machine

--Video

-Running Commands on a Single Machine--作业

-Using a Linux Cluster

--Video

-Using a Linux Cluster--作业

Distributed File System

-Storage for Big Data Computing: Distributed file system

--Video

-Storage for Big Data Computing: Distributed file system--作业

-File system and GFS

--Video

-File system and GFS--作业

-Understanding HDFS using Legos

--Video

-Understanding HDFS using Legos--作业

-File System Implementation and DFS

--Video

--Video

-File System Implementation and DFS--作业

MapReduce

-What is MapReduce and why

--Video

-What is MapReduce and why

-Learn MapReduce by playing with cards

--Video

-Processing pattern

--Video

-Processing pattern--作业

-Hadoop

--Video

-Hadoop--作业

-Algorithms in MapReduce

--Video

-Algorithms in MapReduce--作业

-Tutorial

--Video

In-memory Processing

-Background

--Video

-Background--作业

-Spark

--Video

-Spark--作业

-Use Spark for data mining

--Video

-Use Spark for data mining--作业

-Spark data processing

--Video

-Spark data processing--作业

-Experiment in Spark

--Video

-Experiment in Spark--作业

Streaming Data Processing

-Introduction to streaming data processing

--Video

-Introduction to streaming data processing--作业

-Storm

--Video

--Video

--Video

-Storm--作业

-Spark streaming

--Video

--Video

-Spark streaming--作业

NoSQL

-NoSQL introduction

--Video

-NoSQL introduction--作业

-Common Advantages

--Video

-Common Advantages--作业

-Bigtable

--Video

-Bigtable--作业

-Master Startup

--Video

-Master Startup--作业

-HBase

--Video

-HBase--作业

Graph Processing

-What is GraphDB and Graph data processing

--Video

-What is GraphDB and Graph data processing--作业

-Graph systems

--Video

-Graph systems

-Example of a GraphDB

--Video

-Example of a GraphDB--作业

Machine Learning System

-Mahout

--Video

-Mahout--作业

-Case Study: Recommendation

--Video

-Case Study: Recommendatio作业

-Recommendation in Mahout

--Video

-Recommendation in Mahout--作业

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。