当前课程知识点:高级大数据系统 >  Introduction to Big Data Systems >  Principles of big data system design >  Video

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

Video在线视频

Video

下一节:Video

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

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

我们给大家介绍了什么是大数据

什么是大数据系统

以及在我们的课程中

我们会以哪一些例子给大家介绍大数据系统

那么现在我会给大家简单的介绍一下

我们在大数据系统这门课中

我们关心的一些核心的问题是什么

以及我们一般性的一些原则是什么

那我们来看在大数据的这个系统

这门课当中我们至始至终关心的

一个核心问题是什么

我们就是说要怎么样把计算网络

和存储的资源把它们整合到一块

把它们进行结构化的这样一个优化

进行有效的资源分配

来达到一个高效的一个平台

针对我们不同的数据处理业务

也许我们的这种结构

我们的分配策略是不一样的

但是我们整体的目标是要利用这三种资源

进行有效的大数据的这样一个处理

那么在这里面我们会有一些一般性的目标

那么一般性的目标是什么样呢

我们就会在一个一切资源

都可能出错不可靠

比如说我们的网络会断掉

我们的存储可能会丢掉数据

在所有资源不可靠的这样一个背景下

我们想要达到这样的一些目标

首先我们有一个贪心的目标

假设我们有1万台机器

我们是希望我们的一个数据处理任务

能够有效的把这1万台机器上的计算

存储资源都利用起来

这是我们一个贪心的目标

我们希望我们有很多的资源

有很多的钱可以购买很多机器之后

我们的算法

我们的系统能够有效地

帮我们把这些资源都利用到

第二我们希望它是能够可扩展的adaptive

当我们有1000台机器的时候

我们的系统能够工作

我们后面又增加了5000台机器

我们希望这6000台机器能够

同样有效的可扩展的工作起来

我们希望整个系统

还能够呈现出模块化的特征

我们今天要处理的是批量的数据

我们使用了一个MapReduce

这样一个框架

那么过一段时间

我们需要处理流式的数据

我们希望增加一个spark streaming

或者是我们希望增加一个storm

它同样能够有效的工作起来

所有的系统的模块

它应该能够像搭积木一样

不断的在硬件的资源上得到净化

得到一个组合

这是我们对大数据系统里面的问题

和我们的目标

以及我们的假设的

一个最笼统也是最根本的一个定义

那么在大数据里面

我们会有什么样的一些原则呢

这两个原则是我们非常

是在大数据系统这门课里面非常重要的

一个就是并行的原则

我们希望所有的任务能够并行化

而不是像传统在单线程的这样一个模态下

我们进行的这样一个串行的行为并行

它将发生在我们课程的所有环节

从存储到处理到后面的计算

第二个是虚拟化

这个虚拟化不是简单的

云计算中的这种资源的虚拟化

我们的虚拟化会贯穿整个课程

包括我们怎么样对存储

进行一个有效的虚拟化

让存储成为上层的一个提供数据的一个接口

包括我们对计算怎么样进行虚拟化

怎么样去考虑计算的问题

把流式的处理

内存化的处理和批量的处理

都虚拟化成数据的这种处理的单元

在大数据系统的这个搭建当中

实际上我们还有一个原则

就是要去选择

我们要去取舍到底是scale out还是scale up

所谓的scale up

就是说我们要搭建一个非常大的这样一个计算机

有非常大的CPU

有非常大的内存

来处理大规模的数据

那么所谓的scale out

我们有很多小的这种server

我们把它们放到一起

通过网络

通过其他的方式进行互联

来进行一个大规模的系统搭建

这两条路实际上在过去的

几十年中都得到了发展

有相当一部分的工作

他们会去搭建非常大的这样一个计算机

比如说超算

有相当一部分工作

尤其是工业界在做的

他们会去搭建一系列这种scale out的这样一个集群

然后让很多能力比较弱的机器

能够组合在一起进行有效的工作

在我们这门课当中

我们可能更多的会去关心scale out

这样的一个问题

我们也会把scale out

把大量的小机器搭成大机器

这样的一个准则

作为我们这门课的一个目标

这是我们这门课的一个偏重

我们有了一大堆的小机器

我们想要在这些小机器上

对整个大数据系统进行scale out

实际上最基本的一个原则

就是怎么样对任务进行拆分

那么我相信各位同学

在之前的学习当中

已经接触到了分治这样的一个概念

什么意思呢

我们可以会把一个大的任务

进行切分

切分之后

我们会将每个小任务在不同的这个工作节点上

可能就是我们系统中的一些小服务器上

进行处理

处理之后

我们会得到一些局部的结果

每个小的数据可能会生成一个小结果

那么我们最后会对这些小结果

进行一个整合

然后如果我们整合的非常好的话

我们希望整合出来的结果就是

原来我们一个大问题一个大项目

需要得到的一个最终的结果

那么在这里面

我们发现它的一个核心是什么呢

我们怎么样有效的对任务进行切分

我们能够把一个大任务变成一系列小任务

第二我们怎么样

对局部的结果进行整合

并不是所有任务都能够进行拆分

进行整合的

那么我们在大数据系统里面

就会关心那些能够被拆分

能够被整合

当它们拆分和整合之后

我们又怎么样优化各个部分的

这个处理最后达到

比如说整体的这个任务处理的时间尽可能短

这样的一些目标

分治是我们大数据系统里面一个核心的思想

那么分治之后带来的一个必然的问题是什么呢

资源的不协调资源的不协同

那这张图确实开了这样一个玩笑

我们发现当每个车子分治的去运输自己的货物

需要有自己的路径去走的时候

假设我们没有一个很好的控制

很容易造成的一个问题就是死锁

大家可能会共同去增强某一些稀缺资源

一些关键资源

那么在我们这个例子当中

一个关键的资源就是

十字路口的通过权

当大家不受协调

去争抢这个资源的时候

可能就会造成性能的降低

那在我们的例子当中

直接造成了这个交通的拥堵

那么我们大数据系统一个核心的任务

就是要去解决这样的问题

怎么样让大家能够独立的去

做一些小任务

同时当大家在争抢核心资源的时候

又能够有序的进行有效的分配

以及做到对这种阻塞

尽可能的避免

那么在这里面

实际上我们把这个问题细化了之后

就会发现

其实它并不是一个说做就能做的一个事情

我们会面临这样的一些挑战

首先我们怎么样把任务

分配给各个工作节点

什么样的任务该分配给什么样的节点

因为它们可能本质上会有不同的能力

不同的数据以及不同的这个硬件资源

那么我们怎么样去进行它们之间的协调

当有的工作节点完成的快

有的工作节点完成的慢

我们在这个过程中怎么样去进行一个有效的协调

我们要怎么样去整合它们的结果

当有的结果先生成

有的结果后生成

我们怎么样最大化

我们整个系统的输出

以及在这个过程当中

如果发生一些意外

有的worker

有的工作节点死掉之后

我们应该怎么样去进行任务的重新分配

保证整个系统是健壮的

那么等等这样一些问题

都是我们在大数据系统课程当中会去慢慢触及到

然后会去解决的一些关键的点

那么在我们正式讲各个具体的系统之前

实际我们会给大家一些背景知识

那么这个背景知识就是今天我们

去控制大数据系统里面进行资源的协同

进行有效的这种死锁避免的一些方法

第一叫做master slave

中心节点和边缘节点

这样一个分配的方法

所有的工作的节点

它们都会和一个中心的节点

比如说叫做master

跟它进行沟通

然后来确定自己现在能做什么

不能做什么

那么中心的节点

就负责保证大家的这个执行次序

然后完成了一个事情的一个同步

那么我们今天的公司

我们今天的这个学校等等

很多组织实际上是以这种方式

来进行人员和过程的一个协调的

同时我们可以创建一种叫做生产者

和消费者的这样一个流

那么大家都会把自己生产出来的数据

生产出来的一些资源提供到

一个队列当中

我们通过这个生产者和消费者的队列

对这个核心的资源争抢的资源

以及关键的信号量进行一个维护

也可以达到对不同的工作节点

进行争端避免的这样一个功能

还有我们可以创建整个工作的这样一个队列

那么有点类似于我们生产者

和消费者这样的一个模型

在这样的一个工作队列当中

我们也可以对一些关键资源

进行顺序化的一个分配

那么核心思想就是我们还是需要

一个相对比较中心的一个地方来进行

一些争议资源的一个协同

那么这是在大数据课程当中

在后面我们会反复会用到的一些

比较基础的这样一个概念

好 那我们来看看

介绍了这些之后

我们到底需要在整门课中

我们需要去了解哪一些背景的

这样一个知识呢

首先我们可能要改变

我们对体系结构的这样一个认识

冯诺依曼结构它在一个单点上

可能是我们处理单机程序

尤其是单线程程序这样有效的一个架构

那么在大数据的这样一个系统中

我们依然用了冯诺依曼的这样一个体系结构

但是由于我们的工作节点非常多

实际上我们会需要去考虑

其他的一些因素

来有效的完成大数据的这样一个任务的处理

那么在大数据系统中

第二个这个思路是什么呢

我们需要去隐藏很多的信息

尤其是对于非编程人员

我们需要隐藏数据

我们需要隐藏计算资源等等这种

非常底层的这样一些信息

信息的隐藏化

接口化是大数据系统核心的设计的一个理念

那我们需要把what和how给分离

和刚刚第二点是对应的

在大数据系统中

我们通常会给数据分析提供

非常抽象化的一些接口

那么这些数据分析人员

使用这些接口的时候

他并不需要知道底层

对应了多少个CPU

或者是多大的memory

他需要使用的是这个接口

能够完成一个任务

比如说MapReduce

给到用户的接口就是map和reduce两个阶段

那么总结一下我们所有的这些principle

所有的这些设计原则

大概包含了哪一些要点

首先我们要的是scale out

尽管scale up是今天科研的一个方向

但是在大数据系统中

我们通常希望我们能够不断的

扩展这个系统的规模

我们能够让系统能够自适应的

不断的向外去扩延

我们在数据的处理当中

我们认为数据是不太能够移动的资源

我们通常需要把代码

不断的去靠近数据

那么这也是和我们刚刚说到的

冯诺依曼体系结构

它有一定差别的地方

我们在数据中心当中我们的代码

是可以移动的资源

而我们的数据是一个指定的位置指定的输入

那么我们尽可能的让代码去靠近数据

那么我们在大数据系统中

想要尽可能多的去顺序的处理数据

而不是随机的对数据进行处理

这也和我们单击上的这种编程体验是违背的

我们希望我们的数据能够有效的

利用到磁盘的顺序读取的优势

能够有效的利用到批量数据处理的这样一个性能

那么顺序数据处理就是核心的一个要求

scalability的这种seamless

我们需要整个系统的扩展是对用户透明的

当我们有100台机器的时候

我们能够有效地将100台机器的性能利用起来

而当另外的50个机器加入到

整个数据处理任务的时候

我们希望整个过程是无缝的

是能够自动拓延的

那么这是对大数据系统的

一个要求scale out

我们希望代码靠近数据

我们希望整个数据能够是

顺序化的处理而避免各种随机的跳动

我们希望整个系统的可扩展性是透明的

尤其是对非编程人员是透明的

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

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笔记与讨论

也许你还感兴趣的课程:

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