当前课程知识点:大数据平台核心技术 >  第四讲 分布式编程模型的设计与演化 >  数据格式和抽象 >  数据格式和抽象(主讲人:吴威)

返回《大数据平台核心技术》慕课在线视频课程列表

数据格式和抽象(主讲人:吴威)在线视频

数据格式和抽象(主讲人:吴威)

下一节:分布式编程模型(主讲人:吴威)

返回《大数据平台核心技术》慕课在线视频列表

数据格式和抽象(主讲人:吴威)课程教案、知识点、字幕

大家好

我叫吴威 花名“无谓”

来自阿里巴巴云计算公司

数据事业部

七年前 我加入了阿里

一直从事分布式计算

和大数据处理相关的工作

从开始的Hapdoop技术

到现在的飞天技术平台

在这个领域积累了不少想法

今天 就和大家探讨一下

分布式编程模型设计与演化

的相关内容

本次课程分为五个部分

首先我们来了解一下

分布式编程模型的背景

然后我介绍几个

典型的编程模型

包括MapReduce

关系型运算

和图计算模型

最后 我会做个总结

并对未来分布式编程模型

的发展方向做个展望

那我们所说的

编程模型是什么呢

编程模型是指编程的方法

而不是特指某一种编程语言

比如我们常说的

面向对象的编程

就是一种编程模型

比如C++、Java等编程语言

都可以成为

实现了面向编程模型

的编程语言

我们在这里

把编程模型大致分为两类

分别是命令式编程

和声明式编程

命令式编程语言

最典型的就是

面向过程的编程语言

比如大家接触最多的C语言

而声明式编程看起来

和命令式模型非常不同

比如我们常见的

在数据库里用到的SQL语言

就是一门典型的声明式语言

后面我会详细介绍

两者有什么区别

而我们想要的编程模型

究竟是什么

这里还需要说的是

编程模型和系统实现

相关的关系

我们所说的“模型”

是对事物的抽象

在编程领域是指

编程的方法

而和具体的实现无关

比如刚才所说的

面向对象的编程

我们已经知道了

有C++、Java等语言的实现

虽然两种语言

在语法层面上有所不同

但是很多概念都是一样的

比如类、对象、

继承、多态等等

所以我们也可以

把它们看成面向对象编程的

两种不同的系统实现

本课程主要讲解编程模型

但也会附带介绍

系统实现方面的知识

我们来看一些例子

我们需要知道

输入的一张表

或者一个文件有多少行

用命令式编程可以这么写

这里举了一个Python的例子

首先打开一个文件

并将计数器的num初始化为0

然后顺序读取这个文件

当读到一行

就把num值加1

直到读完这个文件

最后输出的num值

就是我们的最终结果

而声明式编程

看起来非常不一样

比如刚才看到的SQL语言

只要一句

select count(*)

from input _ table
就可以得到

这个输入表的数据行数

我们看到两者的区别

还是非常明显的

我们在命令式编程里

看到了很多的细节

我们会告诉程序

每一步做什么

中间状态怎么维护

如何得到最终的结果

而声明式编程

看起来更加简洁

它只关注做什么

而不是怎么做

虽然SQL语言

有很多种不同的系统实现

比如MySQL 和Oracle

等关系型数据库

都支持SQL语言

但是它们暴露的编程接口

是类似的

更加注重结果

而不考虑过程

我们接着看看

分布式模型的主要处理对象

也就是数据

数据大致可以分为两种类型

结构化数据和非结构化数据

结构化数据比较常见

比如右上角的关系型数据

就是我们平常

常见到的表格数据

另外一种是树形结构数据

常见的表达方式有

JSON、protocol buffer等

比如蓝色框里的一条数据

表达了一名学生的基本信息

如姓名 住址 课程等

数树形数据有一定的层次结构

并不像关系型数据那么扁平

结构更加复杂

处理起来也会

相对更加复杂

其它的还有矩阵数据

和图数据

分别适用不同的应用场景

几类结构化存储

和数据处理方式各不相同

比如关系型数据表中

每两行的数据基本

是没有关联的

或者关联方式比较简单

比如通过主键

或者外键进行关联

而对于图数据

里面都是一些点

数据之间有着复杂的联系

后面我们还会专门讲到

如何处理图数据

除了结构化数据

在现实生活中还充斥着

大量的非结构化数据

常见的比如

图片 音频 视频等

这些数据的存储和

处理比较复杂

我这里就不展开了

大数据平台核心技术课程列表:

第一讲 大数据和ODPS

-主讲人:武永卫

--大数据处理平台概述(主讲人:武永卫)

-主讲人:程永

--大数据平台ODPS(主讲人:程永)

-QUIZ--作业

第二讲 分布式存储

-大纲

--大纲(主讲人:姚文辉)

-初步认识大数据对分布式存储系统的需求

--初步认识大数据对分布式存储系统的需求

-理解大数据对分布式存储系统的需求

--理解大数据对分布式存储系统的需求(主讲人:姚文辉)

-具体说明大数据对分布式存储系统的需求

--具体说明大数据对分布式存储系统的需求(主讲人:姚文辉)

-大规模分布式存储的挑战

--大规模分布式存储的挑战(主讲人:姚文辉)

-小概率事件-Raid卡故障

--小概率事件-Raid卡故障(主讲人:姚文辉)

-分布式存储系统举例

--分布式存储系统举例(主讲人:姚文辉)

-分布式存储系统重要功能设计要点剖析

--分布式存储系统重要功能设计要点剖析(主讲人:姚文辉)

-链式写正常流程

--链式写正常流程(主讲人:姚文辉)

-写流程的另一种常见方式:主从模式

--写流程的另一种常见方式:主从模式(主讲人:姚文辉)

-链式写异常流程

--链式写异常流程(主讲人:姚文辉)

-写异常处理的另一种方法-Seal and New

--写异常处理的另一种方法-Seal and New(主讲人:姚文辉)

-读正常流程

--读正常流程(主讲人:姚文辉)

-读流程优化-BackupRead

--读流程优化-BackupRead(主讲人:姚文辉)

-IO QoS

--IO QoS(主讲人:姚文辉)

-数据正确性:checksum

--数据正确性:checksum(主讲人:姚文辉)

-数据可靠性-Replication

--数据可靠性-Replication(主讲人:姚文辉)

-数据均衡-Rebalance

--数据均衡-Rebalance(主讲人:姚文辉)

-垃圾回收-Garbage collection

--垃圾回收-Garbage collection(主讲人:姚文辉)

-Erasure coding

--Erasure coding(主讲人:姚文辉)

-Erasure coding(3,2)写入和读取过程

--Erasure coding(3,2)写入和读取过程(主讲人:姚文辉)

-元数据管理的高可用性和可扩展性

--元数据管理的高可用性和可扩展性(主讲人:姚文辉)

-元数据管理的高可用性

--元数据管理的高可用性(主讲人:姚文辉)

-Paxos概要

--Paxos概要(主讲人:姚文辉)

-Raft

--Raft(主讲人:姚文辉)

-元数据管理的可扩展性

--元数据管理的可扩展性(主讲人:姚文辉)

-不同存储介质的特性

--不同存储介质的特性(主讲人:姚文辉)

-盘古混合存储

--盘古混合存储(主讲人:姚文辉)

-QUIZ--作业

第三讲 资源管理与任务调度

-阿里云飞天分布式调度

--阿里云飞天分布式调度(主讲人:陶阳宇)

-任务调度

--任务调度(主讲人:陶阳宇)

-资源调度

--资源调度(主讲人:陶阳宇)

-容错机制

--容错机制(主讲人:陶阳宇)

-规模挑战

--规模挑战 (主讲人:陶阳宇)

-安全域性能隔离

--安全域性能隔离(主讲人:陶阳宇)

-分布式调度的发展方向

--分布式调度的发展方向(主讲人:陶阳宇)

-QUIZ--作业

第四讲 分布式编程模型的设计与演化

-数据格式和抽象

--数据格式和抽象(主讲人:吴威)

-分布式编程模型

--分布式编程模型(主讲人:吴威)

-MapReuduce编程模型

--MapReuduce编程模型(主讲人:吴威)

-关系型数据编程模型

--关系型数据编程模型(主讲人:吴威)

-分布式图计算模型

--分布式图计算模型(主讲人:吴威)

-分布式编程未来展望

--分布式编程未来展望(主讲人:吴威)

-QUIZ--作业

实践1:通过两阶段提交协议完成数据上传

-分布式事务

--分布式事务 (主讲人:冯骁)

-分布式一致性算法

--分布式一致性算法(主讲人:冯骁)

-两阶段提交与三阶段提交

--两阶段提交与三阶段提交(主讲人:冯骁)

-实践--介绍

--实践--介绍(主讲人:冯骁)

第五讲 离线分布式关系型计算

-关系型计算基本原理_1

--离线分布式关系型计算_1(主讲人:王鹏飞)

-关系型计算基本原理_2

--关系型计算基本原理_2(主讲人:王鹏飞)

-分布式环境中的连接计算和聚合计算

--分布式环境中的连接计算和聚合计算(主讲人:王鹏飞)

-其他计算和物理优化

--其他计算和物理优化(主讲人:王鹏飞)

-QUIZ--作业

第六讲 全局数据管理与调度

-提纲

--提纲(主讲人:罗李)

-课程背景介绍

--课程背景介绍(主讲人:罗李)

-前序知识

--前序知识(主讲人:罗李)

-分布式节点距离计算法则

--分布式节点距离计算法则(主讲人:罗李)

-数据分布策略

--数据分布策略(主讲人:罗李)

-分布式计算调度

--分布式计算调度(主讲人:罗李)

-数据就近原则计算如何容错

--数据就近原则计算如何容错(主讲人:罗李)

-ODPS跨集群数据依赖

--ODPS跨集群数据依赖(主讲人:罗李)

-QUIZ--作业

实践2:编写MR完成Group By+Join操作

-主讲人:谢德军

--实践2:编写MR完成Group By+Join操作(主讲人:谢德军)

第七讲 流式计算的系统设计与实现

-增量计算和流式计算

--流式计算的系统设计与实现(主讲人:强琦)

-与批量计算的区别

--与批量计算的区别(主讲人:强琦)

-业界典型系统技术概要分析

--业界典型系统技术概要分析(主讲人:强琦)

-核心技术

--核心技术(主讲人:强琦)

-消息机制

--消息机制(主讲人:强琦)

-有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制

--有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制(主讲人:强琦)

-StreamSQL

--StreamSQL(主讲人:强琦)

-QUIZ--作业

第八讲 内存计算

-软硬件趋势、分布式计算简史与内存计算

--软硬件趋势、分布式计算简史与内存计算(主讲人:强琦)

-分布式计算

--分布式计算(主讲人:强琦)

-内存计算

--内存计算(主讲人:强琦)

-统一的计算框架

--统一的计算框架(主讲人:强琦)

-业界经典系统技术分析-spark&flink

--业界经典系统技术分析-spark&flink(主讲人:强琦)

-QUIZ--作业

第九讲 大规模数据的分布式机器学习平台

-主讲人:褚葳

--大规模数据的分布式机器学习平台(主讲人:褚葳)

-QUIZ--作业

实践3:实现MapReduce编程运行时库

-分布式环境下的新问题

--分布式环境下的新问题(主讲人:徐冬)

-工程实现范例

--工程实现范例(主讲人:徐冬)

-课程设计相关问题

--课程设计相关问题(主讲人:徐冬)

数据格式和抽象(主讲人:吴威)笔记与讨论

也许你还感兴趣的课程:

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