Lecture #01 & #02
大数据介绍
科学应用处理大量数据的两方面原因:科学应用计算仿真实验数据显著增加;观测数据,通过传感器等仪器得到的数据量庞大。
从生活中的例子,存储卡容量的翻倍也说明大数据已经不是一个新问题了。
两个案例
- 某一家(Target)连锁超市比一个女孩的父亲更早的发现这个女孩已经怀孕了。
- 美国节目60分钟,对华尔街的高频交易,分秒必争的背后也是使用高性能平台来处理庞大的交易量。
大数据的定义
3-V定义:
Volume:庞大的数据量
Velocity:高频的处理速度
Variety:多种类数据(视频音频、有无结构)
5-V定义:
Veracity/validity:数据的有效性
Valve:数据的有价值性
大数据涉及层面
- 理论算法层面
- 系统层面 *
- 管理层面 *
- 搜索挖掘层面
- 隐私安全层面
- 应用层面
系统层面
- 并行或分布式计算平台
- 高性能计算、网格计算、云计算平台
- 存储设备和存储结构
- 互联网络
- 磁盘、内存计算架构
基本解决方案:商业硬件+开源软件+可扩展
管理层面
- 并行或分布式文件系统
- 开发应用框架
- 去冗余(重复数据删除)
- 数据压缩
- 元数据管理
- 非关系型数据库的设计
并行计算:大数据计算的基础
1台机器 45分钟,10台机器 4.5分钟。并行分布式是基础,必须以此方案来解决大数据计算。
高性能计算
一种并行(分布式)计算形式,侧重于性能(大规模,大规模并行处理)
•超级计算的同义词(“超级计算机”)
•高端计算,云计算/数据中心(行业公司术语)
并行计算和分布式计算的区别? (紧密与松散耦合)
问题-解决该问题的算法-编程语言-编译器成机器语言(instructions)-CPU执行
并行计算的优势在于避免多级流水线执行,从算法设计上改编成并行分布式算法,用多核处理器同时执行。
高性能计算解决的问题
- 解决大型/复杂的问题
- 节约时间和成本
- 提供并发机制同步解决问题(上百万用户同时访问)
- 闲置资源远程利用
- 解决单台计算机的物理极限(提供单核的频率无法解决功耗问题,这能走多核这条路。而且芯片体积很难再缩小,单台机器的性能总会有一个瓶颈)
解决历程:DOE-ANL 实验室的一台机器
从一个芯片-集成到一颗CPU或GPU处理器Compute Card,再到多颗CPU和GPU组成的Node Card,再到一台单节点的Rack机架,加上互通的网络一整套机柜构成多节点计算平台。
谬论
高性能计算其实并不容易
高性能计算面临的挑战
- 高速互连(更快的数据移动,定制)
- 互连架构(网状,圆环,胖树......)
- 支持大规模处理的输入/输出(例如1M +内核)
- 存储架构和足够的存储能力
- 程序/调试/分析(并行的不确定性导致debug没有办法复现)
- 资源管理(自定义操作系统,去掉不需要的功能),作业调度让机器的利用率更高,..
- 工程/经济问题:冷却,电力,空间等
可扩展性是关键 - 实现高持续性能而不是高峰性能
现状
Petaflops(> 1015 Flop / s)计算与117计算机系统完全建立
§三种技术架构或“泳道”蓬勃发展
- 商用处理器(例如英特尔)
- 商用处理器+加速器(例如GPU)(88系统)
- 轻量级核心(例如IBM BG,ARM,英特尔的Knights Landing)
§超级计算的兴趣现已遍及全球,在许多新市场中都有增长(约500%的Top500计算机在工业中)
§许多国家和地区都有Exascale(1018 Flop / s)项目
§英特尔处理器最大份额,~92%
TOP 10
大数据和HPC
第一范例:纯理论,数学物理等理论研究上的发现,带来了formula和equation
第二范例:实验,通过公式和等式来进行实验完成并验证理论。
第三范例:高性能计算。当物理实验很难做,需要计算机来完成,利用模型来编写程序完成实验。那么这个模型model的背后实际上就是formula的支撑。
第四范例:不一定有公式和模型来描述问题,只有观测数据和观测栈,那么如何通过数据来找到一些结论和关联,来发现一些理论,出发点是数据,不再是根本的fomula,从数据learn,学习出来一种model。
高性能系统架构怎么样支持大数据应用
传统高性能系统架构大部分资源集中在计算节点资源(大部分是CPU、GPU、Memery),没有全局的数据文件管理。
数据量很大的时候,数据从存储中取出,然后分步到众多计算核心,再处理后写回,数据移动时间是主导问题。
分离式Decoupled高性能架构:针对大型数据应用,计算资源不在集中在计算节点,有一部分资源专门用来做数据分析,能够更接近存储端,更接近数据源的位置,Compute-side先做数据分析,然后进行数据分离后再分散到计算资源。
Storage-side就是先把存储端数据源读取到内存前先进行数据分析再分配,处理过后再写回。
本质:计算挪到数据的地方,而不是把数据挪到计算的地方。
- 单独分配资源和部署数据处理节点(或数据节点)和计算节点
- 将应用程序分解为计算密集型阶段和数据密集型阶段
- 进行正常处理,最小化/减少数据移动/访问
- 通过利用SCM提供更好的性能+位置
- 当必要时,服务“胖”计算节点
- 提供平衡计算和数据访问能力
对比
传统计算科学数据量不大的情况下传统HPC架构可以满足,但是大量非关系型数据需要在数据源的地方分析进行Reduce的数据分离,然后再计算。
分布式计算
并行计算把一个问题分解成多份,同时计算,强调tightly-coupled,紧耦合。
而分布式计算主要强调loosely-coupled 松耦合
也是问题分割成多份,但是分配到不同的地方,不在同一台机器,物理上很远的距离。百度搜索的客户端请求关键字,百度数据中心处理返回就是物理上的远距离分布式。
网格计算
本质上就是分布式计算上的超级计算。将多个大规模高性能计算系统计算资源结合起来,形成超级计算资源网络。同样是松耦合,结合的资源包括HPC计算资源,存储资源,传感器资源甚至是人力资偶。
云计算
工业界用词,本质上还是并行分布式计算。商业模式和场景的角度出发。资源的分配管理定制化的进行移交和传递以及共享。