当前课程知识点:大数据平台核心技术 > 第四讲 分布式编程模型的设计与演化 > 数据格式和抽象 > 数据格式和抽象(主讲人:吴威)
大家好
我叫吴威 花名“无谓”
来自阿里巴巴云计算公司
数据事业部
七年前 我加入了阿里
一直从事分布式计算
和大数据处理相关的工作
从开始的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等
比如蓝色框里的一条数据
表达了一名学生的基本信息
如姓名 住址 课程等
数树形数据有一定的层次结构
并不像关系型数据那么扁平
结构更加复杂
处理起来也会
相对更加复杂
其它的还有矩阵数据
和图数据
分别适用不同的应用场景
几类结构化存储
和数据处理方式各不相同
比如关系型数据表中
每两行的数据基本
是没有关联的
或者关联方式比较简单
比如通过主键
或者外键进行关联
而对于图数据
里面都是一些点
数据之间有着复杂的联系
后面我们还会专门讲到
如何处理图数据
除了结构化数据
在现实生活中还充斥着
大量的非结构化数据
常见的比如
图片 音频 视频等
这些数据的存储和
处理比较复杂
我这里就不展开了
-主讲人:武永卫
-主讲人:程永
-QUIZ--作业
-大纲
-初步认识大数据对分布式存储系统的需求
-理解大数据对分布式存储系统的需求
-具体说明大数据对分布式存储系统的需求
-大规模分布式存储的挑战
-小概率事件-Raid卡故障
-分布式存储系统举例
-分布式存储系统重要功能设计要点剖析
-链式写正常流程
-写流程的另一种常见方式:主从模式
-链式写异常流程
-写异常处理的另一种方法-Seal and New
--写异常处理的另一种方法-Seal and New(主讲人:姚文辉)
-读正常流程
-读流程优化-BackupRead
-IO QoS
-数据正确性:checksum
-数据可靠性-Replication
-数据均衡-Rebalance
-垃圾回收-Garbage collection
--垃圾回收-Garbage collection(主讲人:姚文辉)
-Erasure coding
-Erasure coding(3,2)写入和读取过程
--Erasure coding(3,2)写入和读取过程(主讲人:姚文辉)
-元数据管理的高可用性和可扩展性
-元数据管理的高可用性
-Paxos概要
-Raft
-元数据管理的可扩展性
-不同存储介质的特性
-盘古混合存储
-QUIZ--作业
-阿里云飞天分布式调度
-任务调度
-资源调度
-容错机制
-规模挑战
-安全域性能隔离
-分布式调度的发展方向
-QUIZ--作业
-数据格式和抽象
-分布式编程模型
-MapReuduce编程模型
-关系型数据编程模型
-分布式图计算模型
-分布式编程未来展望
-QUIZ--作业
-分布式事务
-分布式一致性算法
-两阶段提交与三阶段提交
-实践--介绍
-关系型计算基本原理_1
-关系型计算基本原理_2
-分布式环境中的连接计算和聚合计算
-其他计算和物理优化
-QUIZ--作业
-提纲
-课程背景介绍
-前序知识
-分布式节点距离计算法则
-数据分布策略
-分布式计算调度
-数据就近原则计算如何容错
-ODPS跨集群数据依赖
-QUIZ--作业
-主讲人:谢德军
--实践2:编写MR完成Group By+Join操作(主讲人:谢德军)
-增量计算和流式计算
-与批量计算的区别
-业界典型系统技术概要分析
-核心技术
-消息机制
-有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制
--有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制(主讲人:强琦)
-StreamSQL
-QUIZ--作业
-软硬件趋势、分布式计算简史与内存计算
-分布式计算
-内存计算
-统一的计算框架
-业界经典系统技术分析-spark&flink
--业界经典系统技术分析-spark&flink(主讲人:强琦)
-QUIZ--作业
-主讲人:褚葳
-QUIZ--作业
-分布式环境下的新问题
-工程实现范例
-课程设计相关问题