当前课程知识点:高级大数据系统 > Introduction to Big Data Systems > What is big data and what is big data system? > Video
感谢各位同学选高级大数据系统这门课
那么作为这门课的第一堂课
今天我们会向大家介绍大数据系统的基础
什么是大数据
什么是大数据系统
以及在大数据系统这门课上
我们将要学习什么样的知识
以及什么样的原则是我们去设计大数据系统的
这个基本的准则
首先呢我来给大家看一下这张图
这张图给的是google trends上面
我们看到的大数据
在近年来它的一个趋势可以看到
从2000年之后
受到google facebook这样的公司
在处理社交媒体搜索
和Web大数据的这样一个趋势的影响
实际上大数据呈现了一个
非常火爆的这样一个发展
那么在这里面呢各种各样的数据
不断的涌现
包含各种传感器web的以及各种各样机器人产生的数据
在互联网上不断的出现
怎么样挖掘这些数据的关联
从这些数据中得到相应的智能
进而去改善其他的工业
以及其他的策略的设计是大数据和大数据分析
以及大数据系统等等相关的课程
非常关心的这样一个主题
那么我们来看在google trends上
实际上大数据是一个国际化
全球性的这样一个流行的一个主题
以美国 中国 印度以及其他的这个国家为中心
不断的带动着大数据的这样一个发展
那么我们这门课
主要以大数据的系统为核心
我们研究的是怎么样支撑大数据的算法
大数据分析的底下的这个网络存储和计算平台
它的一个扩展
那么今天我们要讲的内容呢主要是这几个方面
一个是什么样的东西
我们可以把它叫做大数据
那另外一个就是大数据的系统是什么
他和大数据的分析大数据的算法
有什么样的区别
以及在大数据的这个系统课程当中
各位同学能够学到什么样的东西
以及我们一般的一般化的通用的
这种大数据设计的原则和准则
包含哪一些
好 那么我们从这几个方面
分别来展开
给大家做一个介绍
首先我们来看大数据到底是什么
我们首先来看数据
可能会来自什么样的地方
那么这张PPT
实际上我们给出了各种各样今天大家能够想象的
能够生成数据的这样一些场景
第一个呢就是说我们常见的web
自从这个web
尤其是web2.0发展以来
实际上web已经成为数据生成
和数据这个交换一个重要的一个场景
那么今天大家会在自己的优酷
或者说在自己的这样一个微博上去
生成以及去传播各种各样的数据信息
那第二个是和传统的这个行业相关
比如说交易的数据
比如说我们征信和信用卡的这种消费的记录
那么这些会产生非常结构化以及
和我们生活非常相关的这样一些数据记录
那第三种是受到近10年来一个蓬勃发展的这种影响
比如说社交媒体
它的一个影响产生了各种各样的数据
在社交媒体的这样一个背景下
实际上人变成了一个可以不断生成数据的这样一个主体
那么人在里面可以去传播信息
可以去分享视频
可以去共享其他的这样的信息
产生了这种社交媒体
这样一个新的数据类型
还有各种各样的传感器
今天大家佩戴的这个手表
大家在自行车上增加的这样一些GPS的记录器
那这些都是在我们生活中可以
生成大量数据的这样一些传感器
那么可穿戴设备
在这些传感器当中有一种比较特别的类型
是可穿戴的设备
大家会用它来监控
自己的健康状况
自己的一些运动的一些状况
那么还有
近年来流行起来的这种机器人
那么机器人不断可以吸收
用户给他的这样一些知识
告诉他的一些指令
同时它也会产生各种各样的数据
那么在后期的这种大数据的智能
以及大数据和人工智能相结合的这样一个领域
机器人产生的这样一个数据
实际上是一个非常重要的类型
那么有了各种各样的这些数据之后
那么我们要进行数据的分析
进行智能的一个挖掘
其中面临的一个挑战就是
因为这些数据的体量实在太大
那么由于这些数据的这种规模
带来的这种挑战
那这种规模到底有多大
实际上我在这张图上
也给大家给了一个示例
比如说那么我们可以看到
youtube它每天可以产生的这样一个视频的量
大概是72小时
实际上这样的一个大规模的数据量
实际上是比我们人类在历史上
通过专业的这种设备
能够生成的这种视频量要大得多
那么根据一个统计
现在youtube大概只需要花大概不到一周的时间
产生的这样一个用户生成的数据
视频的这样一个量
就是人类从最开始到现在所制作的所有电影的
这样一个程度
那么这是把人考虑进去之后
产生的数据量的一个变化
那么在这里面大家还可以发现
其他的类型的数据也面临着这种爆炸式的增长
包括传感器的
包括Web的
包含各种各样的这种机器人的数据
那么我们看了数据的这种生成的源头
看了数据的这样一个规模
那么这些数据到底是包含哪些类型的这种数据
是我们在大数据的这种分析系统里面去特别关心的
那我们来看大概会有这么一些类型的数据
是我们比较关心
也是今天占比非常大的
这样一个数据的这种类型
第一个就是这种关系的数据
那么也是我们常说的这种结构化的数据
那么这些数据的特征
就是它有比较好的这样一个数据的结构
有比较好的数据的类型
那么可以用传统的一些查找
或者是关联的方式进行分析
第二种类型是大概半结构化的
那么以文本的这种数据为例
比如说我们写的文章
我们在网页上面发表的一些评论
那么这种文本化的数据
通常也是今天非常关心的一种
这种数据类型
以自然语言作为它处理的基础技术
那么半结构化的数据
还包括一些这种图的数据
比如说记录了人和人之间的关联关系
这样的一些图的数据
尤其是当我们把时间的维度引入之后
这种数据就会变得比较复杂
那么这种图的数据
可能还和社交媒体
社交网络
人和人之间的这种社交关联是相关的
那么还有streaming data
这种data是今天传感器
以及其他的这种用户生成数据
比较典型的一个类型
那么streaming data实际上
它的一个特征就是用户基本上
只有很短的时间窗口
可以去处理这样的数据
那么过后这些数据就会被抛弃掉
或者说是被持久化到远端的
这样一个数据仓库上当中
好 那我们知道了数据的体量
我们知道了数据的这个类型
我们也知道了数据的这种来源
那么我们用这些数据到底能够做什么
第一个就是我们可以对数据进行整合
进行统计
那这是我们大概二三十年来
统计学家和这种数据分析师做了一个事情
它主要针对对象是结构化的这种
有关联的这样的一个数据
那么我们可以对数据进行搜索
进行查询
那么这基本上是以google
和百度这样的搜索引擎公司成立之后
他们的这种典型的数据处理的模式
那么在这里面需要对半结构化的数据
进行一定的这种挖掘和分析
那么第三个就是进行知识的归纳
进行知识的发现
那么这个是以专家系统出现之后
那么对数据产生的这种新的处理的一个模式
在里面主要用到了机器学习的方法
用到了数据挖掘的一些高级的技术
那么这是我们对数据进行处理的
一些利用的这样的一些模式
当然随着时间的这个推进
技术的发展
人工智能技术
尤其是人工智能技术的这样一个发展
实际上对于数据的这种利用
也在出现上升的这样一个趋势
我们更多的从简单的分析
简单的挖掘
简单统计演变到更复杂的这种知识的提供
智能的提供
那这是相关的这样一个研究的趋势
那么讲了这些我们对数据进行了
一个形态的描述
对它进行了一个概括性的
介绍之后到底什么是大数据呢
实际上大数据到今天也没有一个
特别严格和理论化的定义
那么它整体上给我们的感觉是
我们尽可能的去利用各种各样关联的数据
那么怎么利用呢
我们在里面包含了数据的这样一个获取
数据的存储
数据的处理
数据的分析以及数据的这种智能化
以及最后对数据的价值进行一个呈现
那么大数据实际上包含了
刚刚说到的很大的一个愿景
那么为了实现这样的愿景
实际上各个学科在交叉
不光包含了计算机和电子
这样传统的这种工科的学科
其实现在也延伸到了心理学社会学等等
和数据行业更加并且接触的
这样一些学科的一个整合
所以大数据可以说是一个比较宽广的一个领域
那么在这里面我们去尽可能的挖掘不同各种各样的
数据的这样一个价值
那么大数据一个误区
就是说可能很多同学都认为大数据
它最大的一个特征就是得大
实际上这是不一定的
那么在很多的时候
实际上大数据它更核心的
一个概念是能够对多元
对易购
对来自不同领域的数据
进行有效的关联 有效的挖掘
它的体量不见得是会非常的大
但他的分析的方法肯定是非常的
先进和非常的复杂
要有一定的深度的
那这张图实际上把我刚刚说的
这样一个概念给呈现出来
我们从X轴上可以看到这种数据的
这样一个体量数据的这样一个规模
那么从Y轴上可以看到数据处理的这样一个难度
数据处理所需要的这样一个计算的资源
实际上大数据它的一个概念
其实是从这两个维度上相互作用相互展开的
也就是说数据的体量数据处理的复杂度
数据处理的难度将共同决定了
大数据的一个特征
我们实际上是要用更复杂的方法
去处理更大规模的这样一个数据
好 那么在这里我会给一个视频
这个视频是一个美剧的这样一个片头
我们会通过这个片头让大家来体验一下大数据
从刚刚的这样一个角度它到底是一个什么样的特征
好 在刚刚的这个视频当中
实际上大家可以发现
在大数据的这样一个分析的背景下
其实在这个例子里面呢
就是相关的人员其实它可以通过各种各样的数据
比如说用户的面部的识别
用户语音的识别
用户身份的识别
以及各种各样识别之后的关联
来对犯罪的行为进行一个追捕
那么这是大家对大数据的一个
非常直接的一个展望
认为大数据可以将各种各样的信息进行追踪之后
对各种各样的行为进行判断
包括里面异常的行为
比如说犯罪来做到这样一个分析
所以这样一个例子实际上很好的
给出了大数据的一个可能在未来
会做到的一些事情
比如说它可以进行异常行为的发现
来进行这个犯罪的判断
可能它可以进行人的健康的一些异常的发现
来提前告知你
你可能会患什么样的病
然后应该做什么样的健康的护理
这是我们对大数据的
一个未来的展望和对它的一个描述
那么我们可能没有严格的概念
但是我们会有一个非常清晰的愿景
我们将声频的视频的还有半结构化的结构化的数据进行综合
然后进行整合从中发掘规律提供智能
这是大数据的一个愿景
那么在这里面呢
我们可以发现它的数据有些什么样的特征
它是多元的数据 对吧
有刚刚的这种音频的视频的
我们在里面可能关心的并不是因果关系
而是去关心他的这种关联关系
我们想挖掘一个行为
和犯罪的行为到底是什么样的关联
我们的很多逻辑并不是清晰的
可能是模糊的
我们想要知道它的一个概率有多大
而不是想知道他严格的
一个数值或者是定义是什么样的
这是很多大数据在未来的处理中会具有的特征
那么我们也尝试总结一下
大数据实际上我们强调的是
有一个更好的分析的方法
我们在更加宽广更加多元
更加易购的数据上来进行这样的分析
最后我们可以和传统的基于模型
基于规则的方法相比能够提供
更多的有差别的
有关联的这种数据的智能
我们说这门课的重点是
大数据系统
我们可能不是特别关心大数据的
分析和他去算法
那我们关心的是底层的存储网络
和计算资源怎么样组织来提供大
数据分析的这样一个上层的支持
我们来看大数据的系统到底包含了什么样的内容
大陆系统实际上关心的是怎么样
将传统的计算机系统的一些部件
包括网络的
包括计算的和存储的部件组合
在一起
让它能够对大数据的处理
大数据的分析提供一个底层的支持
那么在这里面我们非常关心的问题是怎么样
能够有效的把计算存储
和网络资源组织在一起形成
一定的体系结构
形成一定的这种错误的控制
以及友好的对上层的一个编程的接口
让程序员或者是数据分析师
数据科学家
能够有效的利用这样的
一些系统来进行数据的挖掘和数据的分析
那么在里边我们关心的是
各种各样的计算机资源怎么样
被合在一起
怎么样有效的提高它们的性能
我们的主题通常会涉及到
成百上千的服务器的资源
怎么样将他们进行有效的网络
组织以及存储的一个
冗余的控制来
达到高效的大数据系统搭建目标
那么我们来看
在大数据的这样一个系统里面
我们关心的主题大概会有哪一些
首先我们关心数据的采集
数据采集
涉及到了数据的传感器
数据的传输
那么我们怎么样有效的进行
大规模数据的一个感知
最终把它采集到数据中心或者是
数据处理的设备上
数据的传输
我们刚刚说到
怎么样有效的在远端和数据中心
进行数据的一个传输
以及在大数据系统内部
从不同的设备上进行数据的这样
一个传输数据的存储
数据进入到数据分析系统之后
实际上它需要被持久化或者是
短暂的进行一个存储
我们怎么样有效的对不同规模
不同的实验要求的一个数据进行
有效的存储
是我们关心的主题
数据的处理
我们怎么样利用这个成千上万的
这样一个服务器的资源有效的
把他们并发了使用起来
达到一个高效的一个数据处理的一个目标
用户的交互
最终我们的数据是要呈现给用户
我们怎么样设计好的这样一个交互系统
让用户可以体验到数据可以和
数据发生这样的交互
进一步刺激人类产生更好的这样
一个数据处理的这些方法和想法
这是在大数据系统里面
我们关心的各个主题
我们来看这些主题
它大概会分散到大数据系统的
这个框架中是什么样的一个样子
在底层我们有这样一个数据源
包含了外部的数据
以及各种各样的传感器传输过来的数据
再往上我们有数据的这个存储和数据
预处理的一个模块
在数据存储里面我们需要进行
数据的安全的控制
数据冗余的控制
达到数据的这样一个高效和安全的存储处理
以及我们会进行数据的清洗
以及错误数据的发现
在此之上呢
我们会重点去看数据并行处理的一些框架
包含我们课程中将要介绍的
MapReduce的框架
以及我们要介绍的内存中
数据处理的框架
再往上的话就会有更加精细和
更加特定化的
这种数据处理的一些平台
比如说这个大数据的这种数据库
包含我们要介绍的NoSQL和
以google bigtable为例的
这样一些大数据数据库的介绍
然后图的这种数据的一个计算
由于今天大量的数据是以关系的
这样的形式呈现的
那么怎么样对图数据进行处理
也是我们非常关心的一个点
流式的数据
我们刚刚说到有的数据实际上
很难让用户存储下来
在不断的进行分析
它是以流的形式在系统中呈现的
怎么样对这种流的数据进行处理
也是我们课程中关心的一个问题
在此之上就可以利用这样的一些系统达到服务
和应用的这样提供
在我们这里面也会介绍一些集成化的大数据
分析的这种工具和系统
支撑这样的一个大数据的系统
实际上是有一定的这种基础设施的一个构建的
在我们的课程中会简单介绍一下
这样的基础设施
我们会与您预算作为我们介绍的
一个样本来给大家介绍一下
基础设施是什么样的
资源的管理在这里面
实际上计算网络和通信的这种
资源是分布在各个层面上的
我们怎么样有效的协同
算网存三者以及怎么样对他们进行优化
来提高各个系统的运行的效率
我们课程的一个目标
是尽可能让大家了解和大数据
系统相关的各个方面的知识
我们希望大家知道我们所介绍的
从存储到计算以及到分析
各种各样的系统
他们最基本的工作原理是什么
我们希望给大家介绍他们的
局限性在哪
如果各位同学要进行一个大数据
分析的任务
你们怎么样去避免
避免这些系统的这个局限性
以及我们会介绍这些系统
你们应该怎么样去做
这个性能的评估
那怎么样去测试这些系统
是否满足你们的业务的一个需求
如果这些系统不满足你们的需求
你们有什么样的办法
去提升这些系统
怎么样在具体的业务中
去进行优化
那这是我们课程需要给到大家的
让大家能够了解这方面的知识
那么课程的这个先修条件
大概是这样的
我们并没有特别的
这个先修的条件
也就是说
只要你对大数据系统有兴趣
实际上这门课可能都
合适大家来听
那么我们希望大家
在准备上这门课之前
就能够了解一些这个高级的
编程语言
比如说C++ Java Python这样
一些基础的这种语言的知识
以及大家要有足够的能力去学习
一些我们在课堂中可能会去
简单提到的一些新的这个语言
那这是我们对课堂的一个先修的
一个要求
下面我们来介绍一下
这门课将会给大家
讲到的具体的一些系统是什么
那么我会在这里给大家
一个这个预览
让大家知道
在这门课上完之后
你们会学到系统包含哪一些
那么我们来看
在大数据的这个分析中
包含了从数据的收集存储处理
以及到后面的这种挖掘
实际上在这个流程里面
我们会提供一些圆形的这个系统
供大家去学习
那么在数据的这个基础设施这一部分
我们会介绍以云计算
和这种集成化的这种数据中心
为代表的这种基础设施
那么我会告诉大家
当你面临一个从无到有的这样
一个数据处理任务的时候
你第一步需要做的是什么
你怎么样获得最基本的硬件的
或者是虚拟化的硬件的
这样一个资源
这是我们在基础设施里面会给
大家介绍的
那么这张图实际上给到大家的是一个集成化的
这样一个机房的
一个例子
那么这种例子已经在全世界
包括中国在内现在得到这个工业界比较多的
这样一个应用
从这个一片空地上
用大概只需要几天的时间
我们就可以搭建出一个数据中心
然后满足你后面的这样一个数据
处理的一个需求
然后我们会介绍存储系统
在存储这里面
我们会重点介绍以JFS和HDFS
为代表的这样一个分布式的文件系统
然后这种分布式文件系统提供了
后面我们需要用到的MapReduce
以及Spark里面最基础的
这样一个数据设施
那么在大数据这个处理里面
我们会介绍几种分布化的
这种数据处理的框架
包含MapReduce
对这种顺序话可以串行执行的
这样一个数据
进行一个有效的分布化和并行的一个处理
那么我会介绍Spark
介绍大家怎么样在一个内存化的
这样一个环境中进行高效的
迭代化的这种处理
我们会介绍这个streaming的
平台storm告诉大家
怎么样对流式数据进行有效的
一个分析和处理
我们会介绍in-memory的这种processing
内存化的数据处理
那么在这里面
我们会构建内存化的一个文件系统
来增强原有的这种基于磁盘的
这种文件系统
那么针对迭代
针对交互的这种数据分析
进行更加快速
更加高效的这样一个数据分析
这部分是以spark作为主要的例子
那么我会介绍大数据的数据库
那么大数据数据库今天成为了
工业界一个非常重要的一个组件
他们会将自己的数据仓库
以及自己的数据分析
搭建在大数据的这样一个数据库的基础上
我们会以谷歌的bigtable
作为一个例子来给大家介绍
怎么样有效的利用分布式文件系统
利用MapReduce构造一个这种
类似于关系数据库的
一个接口的这样一个
数据分析的这样一个
数据库的平台
我们会介绍流式数据的处理
那么在流式数据处理里面
我们会把数据当成像水流一样的
这样一个可以有一定的时间窗口
进行分期的这样一个模态
然后对这种流式市的数据
我们会介绍他基本的处理单元
以及它的优化的一个
目标和优化的策略
我们会介绍一些针对大数据的
这种图的数据处理的系统
在这里面我们会去看看图的数据
和传统的这种结构化的数据
它会有什么样的差别
表格的数据比如说那么这种差别
大数据系统是怎么样去处理的
我们怎么样将图的数据分布在
不同的数据节点
那么我们怎么样将图的处理算法
分布到不同的计算节点
进行大规模的图的分析
在这里面我们会以graph lab以及
那个spark上的graph
作为介绍了这样一个蓝本
给大家介绍大数据的这种图系统
我们会介绍大数据的机器学习的
一些系统
在这里面我们主要去挖掘数据
让数据能够产生一定的规则
一定的智能
那么由于机器学习已经成为今天
大家去产生智能的一个重要的手段
那么有没有什么办法可以有效的
降低编程人员或者数据工程师的
这样一个压力
让他们像使用其他的一些模块
一样去使用机器学习的这样一些方法
那么mahout就是我们会去给大家
介绍的一个重要的例子
告诉大家怎么样非常简单的
在大规模的集群上实现你的继续学习方法
我们还会去介绍大数据的一些可视化
那毕竟最后数据的智能是要提供
给相关的人员
这些人员不一定是工程人员
他们需要看到的是数据能够带给
他们的这种视觉上的一个感知和视觉上的冲击
那么这两种冲击产生之后
用户又会进一步的得到更多的这种数据上的启发
以及其他的想法
那么怎么样进行数据的可视化
那么成为今天非常被研究人员
和数据工程师关心的一个课题
那么在这里面
我们会介绍一些可视化数据的一些工具系统
以及它的这种系统优化的方案
好我们给大家介绍了
什么是大数据
什么是大数据系统
以及在我们的课程中
我们会以哪一些例子给大家介绍
大数据系统
那么现在我会给大家简单的
介绍一下
我们在大数据系统这门课中
我们关心的一些核心的问题是什么
以及我们一般性的一些原则是什么
那我们来看在大数据的这个系统
这门课当中我们至始至终关心的
一个核心问题是什么
我们就是说要怎么样把计算网络
和存储的资源把它们整合到一块
把它们进行结构化的这样一个优化
进行有效的资源分配
来达到一个高效的一个平台
针对我们不同的数据处理业务
也许我们的这种结构
我们的分配策略是不一样的
但是我们整体的目标是要利用这三种资源
进行有效的大数据的这样一个处理
那么在这里面我们会有一些
一般性的目标
那么一般性的目标是什么样呢
我们就会在一个一切资源
都可能出错不可靠
比如说我们的网络会断掉
我们的存储可能会丢掉数据
在所有资源不可靠的这样一个背景下
我们想要达到这样的一些目标
首先我们有一个贪心的目标
假设我们有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
我们希望代码靠近数据
我们希望整个数据能够是
顺序化的处理而避免各种随机的跳动
我们希望整个系统的可扩展性是透明的
尤其是对非编程人员是透明的
-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
-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--作业
-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--作业
-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
-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--作业
-Introduction to streaming data processing
--Video
-Introduction to streaming data processing--作业
-Storm
--Video
--Video
--Video
-Storm--作业
-Spark streaming
--Video
--Video
-Spark streaming--作业
-NoSQL introduction
--Video
-NoSQL introduction--作业
-Common Advantages
--Video
-Common Advantages--作业
-Bigtable
--Video
-Bigtable--作业
-Master Startup
--Video
-Master Startup--作业
-HBase
--Video
-HBase--作业
-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--作业
-Mahout
--Video
-Mahout--作业
-Case Study: Recommendation
--Video
-Case Study: Recommendatio作业
-Recommendation in Mahout
--Video
-Recommendation in Mahout--作业