当前课程知识点:大数据系统基础 >  4. 处理框架 >  授课视频 >  4.1大数据的处理框架

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

4.1大数据的处理框架在线视频

4.1大数据的处理框架

下一节:4.2MapReduce编程模型

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

4.1大数据的处理框架课程教案、知识点、字幕

大家好 我是清华大学的徐葳

从这节课开始

我们开始讨论

大数据处理的框架

这些框架提供了一些

更高层次的抽象

能够帮助应用程序的开发者

更方便的开发他们的应用程序

而不用去关注系统里的

复杂的细节

这节课我们介绍两个

经典的框架

一个叫MapReduce

一个叫Pig Latin
MapReduce框架

是经典里的经典

这节课里头我们主要介绍

它的编程模式 它的实现方法

以及

它可以性能可以调优的地方

Pig Latin提供了比MapReduce

更高层次的抽象

它的语言使用起来更方便

我们介绍这种编程语言

介绍如何利用它

来撰写大数据的程序

贯穿这节课的主要的思想

是数据并行

数据并行这个概念

我们在介绍云计算的时候

已经介绍过

但是在这节课中

会反复出现

从这节课开始

我们开始介绍一系列的

大数据分析的工具

这大数据分析的工具

其实有很多种

按照是不是它是批处理的类型

从这节课开始我们先介绍

一系列的大数据的处理的工具

按照类型来看

大数据处理工具有若干种

有一类分类方法是说

我有一类批处理工具

比如说像Hadoop

今天介绍的Hadoop

像Pig Latin

基本上都是属于这一类的

批处理工具

还有一类是更加实时的处理工具

比如像之后的几讲会讲到的

流式数据处理

以及基于内存的数据库等等

这只是为了更加快捷的处理数据

更加实时的处理数据

那么当然数据有很多种

我们也讲到大数据有两种

一种是结构化数据

一种是非结构化数据

所以我们从这个维度上来看

我们可以有

非常结构化数据的分析工具

以及非结构化数据分析的工具

我们今天讲的

主要是在这个角落里头

就是 是批处理的

而且是非结构化的

因为这一类的处理工具

在大数据里的发展也比较早

比较成熟

而且他通过分析这些工具

我们能够揭示一系列的

在做大数据分析工具的情况下

同学们会遇到的各种问题

我们先来回顾一下

我们上一节课讲到过的

数据并行的概念

在上一节课里

我们讲Google文件系统的时候

这节课有几个重要的观点

这个重要的观点也适用于

这节课以及以后的

很多课程里

讲的大数据处理方法

首先 第一个观点是

数据存储于

很多很多的服务器里头

所以它本身是可以并行的

这个在数据多了的情况下

这个元数据的管理

Batch对它的管理

变得非常的重要

如果你()太多的话

本身(02:56)的管理

就变得非常的困难

也消耗大量的资源

所以如何来减少元数据的开销

那么Google文件系统

采用的方法是

使用非常大的块

这样一个大文件 可以分成

为数不是特别多的一些块

所以这样大大减少了

元数据的开销

这三个观点是

因为大数据特别大

它价值密度又低

所以我们要避免使用

非常昂贵的硬件

但是便宜的硬件又容易坏

所以硬件坏了 软件出问题了

都是不可避免的

我们尽量买便宜的硬件

但是所有的东西

容错都通过软件来进行

那软件怎么容错

那么就通过很多的冗余来进行

最后一点就是说 大数据处理

我们讲到这数据

我们是怎么用的

我们是怎么读取的 怎么写的

不需要更改的地方

我们就不要让它更改

因为一旦更改

大家想 就有两个问题

一个是在同一个时间

只有一个人能改 否则就改乱了

所以大家互相等

这个叫做互相锁的问题

在google系统文件里

怎么解决这个问题

它就不让大家改数据

你写第一次就写完了

你只能往后边添加数据

你不能够回去改这个数据

这样大大减少了

这种同步的问题

而且也把整个的一致性

这种模型变得非常的简单

让这个系统变得非常简单

简单的系统才会变得更加可靠

我们之前在讲云计算的时候

我们提到过数据并行化的概念

并行化是很重要的

数据并行化是一个

并行化里比较简单的一种方法

这种方法基本上

我们大数据里

经常用到的一种数并行化就是说

硬盘上有大量的数据

我们可以并行的操作这些数据

并行的读取这些数据

并行的分析这些数据

这个事情大家听起来

是非常的简单的

非常的直观的

因为数据跟数据之间无关嘛

我一个人分析第一块数据

一个人分析第二块数据

那么当然它就可以并行化了

这也是为什么这种并行化

在并行计算里头 被叫做

Embarrassingly Parallel

这个Embarrassingly这个词

就是很不好意思的意思

那这个意思 就是说

你说我这种东西是并行算法

那么你都不好意思跟人说

你这是并行算法

因为它实在是太简单了

这数据本身就是无关的

你一人拿一块处理

这是最最简单 最最朴实的想法

但是这种朴实的想法

在系统实现上 其实确实是

里头有很多很多小的问题

导致它不容易被系统实现

这就是为什么

直到google实现了MapReduce

大家才突然觉得这种算法

其实是处理大数据的一种

非常非常高效

而且非常经济实用的一种方法

那介绍一下

为什么这种方法是比较难实现的

那我们举这么一个例子

这是词频统计 我们假设有一段

非常非常长的文章

这里头包含了很多的词

比方说dog 有cat 有is 这些词

那我想数数到底有多少是dog

多少是cat 多少是is

那这件事应该怎样做

那么我可以一直数下去

但是如果这文章巨长

那么你一个人在那儿数

那要数很久很久

那么最最朴实的想法就是什么

我记着 我搁一个全局的大表

然后我把它 分成好几个人数

那么我一个人从这个地方开始数

一个人从这个地方开始数

一个人从这个地方开始数

那么这时候 那么我有三个人

我是不是快了三倍

每个人数一个数

我就往这儿记一下

dog我数一个

然后又数了一个dog

这个人也数了一个

三个人都往这里头记

它是不是就变得更快

这个当然是一个非常好的想法

这也是一个

就像我说的

Embarrassingly Parallel

是数学变形的这样一个算法

那么GFS

已经给你解决了什么问题

GFS已经给你解决了

这么一个大的文件

它不是存在一块硬板硬盘上

它是存在若干块硬盘上的

大家知道读硬盘是比较慢的

但是我可以从多块硬盘上读

每个硬盘读的慢 没关系

那我们很多很多块硬盘一起读

所以我整个变化

还是很快的

所以这数据本身就是分块存储的

但是这里头还有其他的问题

那么一个问题

可能大家已经看到了

就是说他是一个共享状态

这个共享状态

谁来拿着这个共享状态

谁来管理这个共享状态

那么你有很多很多人并发的

你每个人都跟他说

我在这上加一个

我在那上加一个

那么这个管理共享状态的人

他就好累

所以它是有一个吞吐量的问题

就说它自己每秒钟

能够吸收掉多少个massage

大家告诉它说 我要改这个状态

这是一个它的吞吐量的问题

那更重要的问题就是说

还是回到刚才提到的

好多人同步写的问题

因为它是有几个计数器

每个计数器 都相当于一个状态

你有好多人

一起改这个计数器的话

那大家就会要互相等

所以实际上

你可能等的时间

比你真正改这个计数器的时间

还要长 所以这个共享的状态

有这两个原因

导致它不能够变得更大的规模

再一个就是因为

大家每数一个 就要通讯一次

这个通讯和计算

其实数一个单词是很快的

但是你通讯一次

通讯一次是很慢的

所以这种小粒度的通讯

导致整个的计算

和通讯之间的变形的程度

就非常的低

而且它会让元数据管理

就是这个共享状态的管理

会变得非常的复杂

那么人们就想到一个说

那这个东西

我不要做小粒度通讯

咱们做一个批量的通讯

那怎么做

那我数的时候

我自个儿在自个儿的这个局部

自个儿记着多少个

那我自个儿偷偷数着

数完了之后

我说我自个儿保持一个小点

我说我这儿有多少个dog

我这儿有多少个is

我这儿有多少个cat

那么我数好了之后

我在一次到这个全局状态行不行

这样的话

就避免了一种小的通讯

而且避免了

我频繁的更新这个全局状态

这解决了它的全局的状态的

我还解决了全局状态的

这个锁的问题

但是这也有它自己的问题

那么就这两个问题

如果我有一个机器出问题了

那么 我这个全局状态

我要自己记着

我到底更新了谁 没更新谁

或者说 我这个机器上

有很多很多的值

我传到这个全局状态里

是不是所有的每一个值

都更新进去了

这都是一个原子操作

所以出现这种情况下

有机器失败的情况下

是很有问题的

另一个问题是一个存储的问题

这个表里头只有三个词

当然没有问题

如果我们有三百万个歌词

有三亿的词

那么这个状态就非常非常大

所以它也不是说

我通讯过去之后

我就全局状态就

全部能存在内存里头了

所以它自己也要

可能这个全局状态

本身也变成了一个

就是很大的数据管理的

这么一个问题

他是不是自身也要并行化

因此我们可以考虑到

这样一个问题

就是说我们是不是

可以把这个全局状态

也切分开 这样的话全局状态

整个儿能够处理的吞吐量

就变得更大了

那么我说这个人

就只管给我数dog有多少个

这个人只管数cat有多少个

这个人只管数is有多少个

然后每个人 数完了之后

都把这一小块通讯给它

这样的话 它的全局状态

实际上也是分布式的

但是最后还有什么问题

如果这个全局状态

或者说某一块人失败了

这个时候

你还是破坏了全局状态

就是你破坏了这一块状态

假设这一块死菜了

那么我需要做的是什么

每个人其实都要重新数一遍

因为它 如果他自己一个人

把他个数告诉我之后

他就忘掉了他的个数之后

那他忘掉了is

到时候他这dog和cat也白数了

他下次的话

还得重新扫描整个数据

再数一遍

因此的话

我们希望这个东西

它不要合并起来

最好的办法就是说

我局部个数

我把每一个局部个数

都记录下来

这样的话 如果谁死了之后

我们再互相通讯一下

我们还能找回到这个局部个数来

这个就是我们要防止它失败

因为这种大的分布式系统

它总会失败的

所以在这种 各种各样的

对于失败的情况的考虑下

人们就设计了

这种MapReduce这种系统

和这种模型

来解决这种数据并行的

这样的一个问题

当然MapReduce

除了这个问题之外

你想这一个小的

只是分布式的数个数

就这么麻烦

那么其他的问题

它还要解决一些易用性

包括通用性的问题

以及我们应该采取

什么样的抽象层次

来让大家能够方便地来写

这样数据并行的程序呢

这些都是人们

设计MapReduce系统的时候

要考虑的一些问题

大数据系统基础课程列表:

1. 绪论

-授课视频

--什么是大数据

--大数据典型应用

--大数据的特点

--大数据技术体系

--大数据生态系统

--大数据技术挑战

--课程内容

-1. 绪论--Quiz 1

2.云计算

-授课视频

--2.1大数据和云计算关系概述

--2.2并行化理念

--2.3规模经济理念

--2.4从仓库规模计算机到云

--2.5云计算商业模式概述

--2.6云计算带来的价值

--2.7云计算的分类

--2.8虚拟化技术概述

--2.9计算虚拟化

--2.10网络虚拟化:基础

--2.11网络虚拟化:软件定义网络

--2.12软件定义网络实现

--2.13存储虚拟化:用户接口

--2.14存储虚拟化:分布式存储实现方式

--2.15虚拟化技术总结

--2.16OPENSTACK

--2.17云计算小结

-2.云计算--Quiz 2

3.文件存储

-授课视频

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-3.文件存储--Quiz3

4. 处理框架

-授课视频

--4.1大数据的处理框架

--4.2MapReduce编程模型

--MapReduce执行过程

--4.4MapReduce数据流

--4.5MapReduce性能优化与容错

--4.6Hadoop

--4.7MapReduce总结

--4.8Pig Latin

--4.9Pig Latin语法

--4.10Pig Latin 嵌套数据类型

--4.11Pig Latin 实现与优化

--Pig Latin 实现与优化(2)

--4.13类似框架

--4.14章节总结

-4. 处理框架--Quiz4

5.内存计算

-授课视频

--5.1内存计算概述

--5.2并行计算挑战

--5.3并行计算的局限性

--5.4大数据处理并行系统

--5.5内存计算需求

--5.6MapReduce文件传递数据

--5.7内存计算的可行性

--5.8内存层次的延迟

--5.9内存计算实例-spark

--5.10SPARK-RDD

--5.11大数据并行系统

--5.12Spark编程接口

--5.13Spark编程实例——Log挖掘

--5.14Spark编程实例——WorkCount

--5.15Spark实现技术

--5.16复杂的DAG示例

--5.17RDD性能的提高

--5.18Spark应用和生态环境

--5.19Spark的局限性

-5.内存计算--Quiz5

6. NoSQL

-授课视频

--NoSQL与Cassandra

--数据模型、接口、语言

--系统架构与Gossip协议

--一致性哈希与数据分区

--数据副本及一致性

--节点本地数据存储

-6. NoSQL--Quiz6

7. 流计算

-授课视屏

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-7. 流计算--Quiz7

4.1大数据的处理框架笔记与讨论

也许你还感兴趣的课程:

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