当前课程知识点:高级大数据系统 > Introduction to Big Data Systems > Overview of the course > Video
下面我们来介绍一下
这门课将会给大家
讲到的具体的一些系统是什么
那么我会在这里给大家一个这个预览
让大家知道在这门课上完之后
你们会学到系统包含哪一些
那么我们来看
在大数据的这个分析中
包含了从数据的收集存储处理
以及到后面的这种挖掘
实际上在这个流程里面
我们会提供一些圆形的这个系统供大家去学习
那么在数据的这个基础设施这一部分
我们会介绍以云计算
和这种集成化的这种数据中心
为代表的这种基础设施
那么我会告诉大家
当你面临一个从无到有的这样
一个数据处理任务的时候
你第一步需要做的是什么
你怎么样获得最基本的硬件的
或者是虚拟化的硬件的这样一个资源
这是我们在基础设施里面会给大家介绍的
那么这张图实际上给到大家的是一个集成化的
这样一个机房的一个例子
那么这种例子已经在全世界
包括中国在内现在得到这个工业界比较多的
这样一个应用
从这个一片空地上
用大概只需要几天的时间
我们就可以搭建出一个数据中心
然后满足你后面的这样一个数据处理的一个需求
然后我们会介绍存储系统
在存储这里面
我们会重点介绍以GFS和HDFS
为代表的这样一个分布式的文件系统
然后这种分布式文件系统提供了
后面我们需要用到的MapReduce
以及Spark里面最基础的
这样一个数据设施
那么在大数据这个处理里面
我们会介绍几种分布化的
这种数据处理的框架
包含MapReduce
对这种顺序话可以串行
执行的这样一个数据
进行一个有效的分布化和并行的一个处理
那么我会介绍Spark
介绍大家怎么样在一个内存化的
这样一个环境中进行高效的
迭代化的这种处理
我们会介绍这个streaming的平台storm告诉大家
怎么样对流式数据进行有效的
一个分析和处理
我们会介绍in-memory的这种dataprocessing
内存化的数据处理
那么在这里面
我们会构建内存化的一个文件系统
来增强原有的这种基于磁盘的这种文件系统
那么针对迭代
针对交互的这种数据分析
进行更加快速
更加高效的这样一个数据分析
这部分是以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--作业