当前课程知识点:大数据系统基础 > 5.内存计算 > 授课视频 > 5.2并行计算挑战
那么我们刚才
了解了并行计算的需求
下面我们来介绍一下
并行计算我们面临的挑战
大家写过并行程序
就会发现并行程序
它最基本的问题是编程困难
首先我们要把这个问题中的
并行性把它识别出来
也就是说哪些部分是可以并行的
然后我们还要用编程语言
把它表达出来
所以这个部分是很困难的
所以我们简化为并行计算
是程序难写
那么第二
并行计算的程序是很难写对的
我们要在中间加上很多同步语句
比如说
谁向谁发消息或者使用锁等等
各种机制来保证并行的
计算的这个各个部分
能够有效的协调
所以我们把这个归结为
并行程序难写对
第三即使我们写出来一个
正确的并行程序
实际上也不能够说
我们已经成功了
因为我们并行计算的目标
是提高性能
但是如果我们有时候
写出来的并行计算
它的性能比串行程序还要差
那么这时候不能说
我们的并行计算是成功的
所以这又涉及到
我们的下一个挑战
也就是性能调优难
也就是说我们不仅要写出
正确的并行计算
我们还要能够进一步的
去调整它的性能
去做很多细致的分析和调优
使得它的性能能够
达到我们预期的要求
那么在性能调优里面
有两个非常基本的原因
一个是叫负载平衡
也就是说我们多个并行的任务
如果其中某一个任务
执行的时间很长
而其它的任务执行的时间很短
这个时候大家可以想像
它的加速比一定不会很理想
也就是达不到
我们的性能的要求
那么如果我们能够做到负载平衡
也就是大部分的并行任务
他们的执行时间是很接近的
这种情况下
我们就有可能达到
我们所期望的这种性能
第二个是局部性
局部性是计算中一个
非常基本的原理
也就是说如果我们能够访问
我们已经访问数据 相邻的数据
或者说我们已经访问的数据
我们下次再去访问这些数据
那么就可以通过
硬件的cache
也就是高速缓存
来大大的提高
访问这些数据的效率
在我们当前的这个cache里面
一次cache命中
它的这个访问的时间
大概是一个时钟周期
到二十个时钟周期
而我们访问一次内存
也就是说
如果所有的cache都失效的话
我们大概需要两百个时钟周期
这个之间又有将近十倍的差别
所以说局部性
也是一个非常重要的问题
那第三个问题是容错
也就是说当我们
不是使用单台机器来做计算
而是使用很多机器来做
计算的时候
那么这么多台机器
同时运行它们 出故障的可能性
就会比单台机器
出故障的可能性要大的多
大家可以想像
如果有一千台机器在运行
其中有一台机器坏掉了
那么这个时候
如果我们的整个的
这个计算框架
或者计算程序不能够
做有效容错的话
那么这单台机器的错误
就可能使得整个的
并行程序执行失效
所以容错难
也是并行程序所面临的一个
非常重要的挑战
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-1. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7