深入理解大数据期末复习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提高计算机性能的主要手段
✧提高处理器字长
✧提高集成度
✧流水线等微体系机构技术
✧提高处理器频率
迫切需要发展并行计算技术的主要原因
✧单处理器性能提升达到极限
✧应用规模和数据量急剧增大,超大的计算量/计算复杂度
并行计算技术的分类
1.按数据和指令处理结构:弗林(Flynn)分类
a)SISD:单指令单数据流
b)SIMD:单指令多数据流
c)MISD:多指令单数据流
d)MIMD:多指令多数据流
2.按并行类型
a)位级并行(Bit-Level Parallelism)
b)指令级并行(ILP: Instruction-Level Parallelism)
c)线程级并行(Thread-Level Parallelism)
i.数据级并行
ii.任务级并行
3.按存储访问构架
a)共享内存(Shared Memory)
b)分布共享存储体系结构
c)分布式内存(Distributed Memory)
4.按系统类型
a)多核/众核并行计算系统MC(Multicore/Manycore)
b)对称多处理系统SMP(Symmetric Multiprocessing)
c)大规模并行处理MPP(Massive Parallel Processing)
d)集群(Cluster)
e)网格(Grid)
5.按计算类型
a)数据密集型并行计算(Data-Intensive Parallel Computing)
b)计算密集型并行计算(Computation-Intensive Parallel Computing)
c)数据密集与计算密集混合型并行计算
6.按并行程序设计模型/方法
a)共享内存变量(Shared memory variables)
b)消息传递方式(Message Passing)
c)MapReduce方式
并行计算的主要技术问题
✧多核/多处理器网络互连结构技术
✧存储访问体系结构
✧分布式数据与文件管理
✧并行计算任务分解与算法设计
✧并行程序设计模型和方法
✧数据同步访问和通信控制
✧可靠性设计与容错技术
✧并行计算软件框架平台
✧系统性能评价和程序并行度评估
程序并行度评估
✧程序能得到多大并行加速依赖于该程序有多少可并行计算的比例。
✧经典的程序并行加速评估公式Amdahl定律:
✧根据Amdahl定律:一个并行程序可加速程度是有限制的,并非可无限加速,并非处理器越
多越好
MPI的功能
✧提供点对点通信
✧提供节点集合通信
✧提供用户自定义的复合数据类型传输
MPI并行程序设计接口
为什么需要大规模数据并行处理
✧处理数据的能力大幅落后于数据增长
✧海量数据隐含着更准确的事实
什么是MapReduce
✧基于集群的高性能并行计算平台(Cluster Infrastructure)
✧并行程序开发与运行框架(Software Framework)
✧并行程序设计模型与方法(Programming Model & Methodology)
为什么MapReduce如此重要?
✧高效的大规模数据处理方法
✧改变了大规模尺度上组织计算的方式
✧第一个不同于冯诺依曼结构的、基于集群而非单机的计算方式的重大突破
✧目前为止最为成功的基于大规模计算资源的并行计算抽象方法
MapReduce简介
✧对付大数据处理-分而治之
✧构建抽象模型-Map和Reduce
⏹主要设计思想: 为大数据处理过程中的两个主要处理操作提供一种抽象机制
✧上升到构架-自动并行化并隐藏底层细节
✧MapReduce的主要设计思想和特征
⏹向“外”横向扩展,而非向“上”纵向扩展
⏹失效被认为是常态
⏹把计算处理向数据迁移
⏹顺序处理数据、避免随机访问数据
⏹为应用开发者隐藏系统层细节
⏹平滑无缝的可扩展性
Hadoop MapReduce基本构架
⏹NameNode: 作为分布存储的主控节点,用以存储和管理分布式文件系统的元数据
⏹DataNode: 作为实际存储大规模数据的从节点,每个从节点基于底层的linux系统在本
节点上存储实际数据
⏹JobTracker: 作为MapReduce并行计算框架的主控节点,用以管理和调度作业的执行
⏹TaskTracker: 管理每个计算节点上计算任务的执行
Hadoop MapReduce程序执行过程
1.首先,用户程序客户端通过作业客户端接口程序JobClient提交一个用户程序。
2.然后JobClient向JobTracker提交作业执行请求并获得一个Job ID.
3.JobClient同时也会将用户程序作业和待处理的数据文件信息准备好并存储在HDFS中。
4.JobClient正式向JobTracker提交和执行该作业。
5.JobTracker接受并调度该作业,进行作业的初始化准备工作,根据待处理数据的实际分
片情况,调度和分配一定的Map和reduce节点来完成作业。
6.JobTracker启动TaskTracker节点开始执行具体的任务。
7.TaskTracker根据所分配的具体任务,获取相应的作业数据。
8.TaskTracker节点创建所需要的java虚拟机,并启动相应的Map(或Reduce)任务的执
行。
9.TaskTracker执行完所分配的任务后,若是Map任务,则把中间结果数据输出到HDFS中;
若是Reduce任务,则输出最终结果。
10.TaskTracker向JobTracker报告所分配的任务完成。若是Map任务完成并且后续还有
Reduce任务,则JobTracker会分配和启动Reduce节点继续处理中间结果并输出最终结果。