mix up(1)
一、高性能大数据分析技术
当我们谈论高性能的时候,通常以不同的角度描述(性能、可扩展性、吞吐率等方面),分为系统性能、应用性能。 应用性能通常是基于几个特征进行衡量的,其中负载能力和处理能力作为主要衡量性能高低的特征(比如,每秒允许用户访问的数量或交易量)。应用性能与应用程序架构、支撑其运行的硬件基础以及系统基础架构密切相关。我们知道基础部件的性能往往低于理论性能值,如网络带宽、磁盘空间、缓存大小、CPU频率以及网络连接等基础硬件都是影响应用程序性能的因素,同时,应用程序自身架构与系统资源之间的分配均衡问题也是影响应用性能的因素之一。因此,如何使系统模块无限接近理论性能值以期达到应用程序的高性能发挥是高性能研究领域的一大痛点。针对这个问题,新兴的容器(containerization)概念应用——Docker(基于LXC(Linux Container) 技术之上构建的容器)是目前最优的软件配置和管理容器,它比虚拟化(virtualization)概念的任何应用——KVM、Xen、Vbox等都体现更良好的性能。吞吐量描述的是原始数据的传输速度,提高数据的传输和处理速度能提高系统性能。可扩展性就是关于处理大规模业务时,“横向“或“垂直“方式实现服务响应,“垂直扩展”方式需要额外增加资源,比如升级CPU,比如RAID/SAN存储设备上增加硬盘等;“横向扩展”方式比如大多数的群集解决方案(分布式文件系统)。现今火热的云计算技术(OpenStack云平台)已经实现了自动扩展资源。
在高性能计算技术方面,被广泛运用的有并行计算(对称多处理器技术(SMP)、大规模处理技术(MPP))、集群、网格、云计算、异构计算以及各领域的高性能框架(简单流行的比如大数据分布式处理框架hadoop,spark等)。需要指出的是,hadoop解决了超大容量历史数据在单个磁盘上的存储量问题、分布式资源调度以及数据的分布式处理问题,但是它不适用于从现有的操作的数据中获取实时数据,因此,研究实时性获取数据 的方法在高性能大数据分析应用方面也是比较关键的问题。
1、 并行计算(Paralle computing)
1.1 共享内存
对称多处理技术(SMP)是广泛使用的并行计算中共享内存的方法之一,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。但是共享内存的多处理机需要复杂特定的硬件来保持二级存储数据的一致性,所以共享内存的系统很难根据不同需求进行扩展。PC服务器中最常见的对称多处理系统通常采用2路、4路、6路或8路处理器。目前UNIX服务器可支持最多64CPU的系统。
1.2 共享磁盘
在共享磁盘的并行处理架构中,存在几个独立的处理单元,每一个处理单元都有自己私有的内存,所有的处理单元都共享同一个磁盘,典型符合这种架构的有存储局域网(SAN storage area network)(采用光纤通道技术,通过光纤通道交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络)和网络连接存储(NAS network-attached storage)。
但是共享磁盘的架构,也有几个可扩展性问题。第一,由于共享同一磁盘或存储阵列,多个存储服务器都连接到共享磁盘系统上,造成存储阵列的I/O颈瓶问题。第二,由于不共享内存,就没有集中存储lock table和缓冲池的地方,于是锁管理模块(lock-manager module)要么集中在一个处理程序上,要么会涉及到复杂的分布式锁协议(locking protocal),这个协议就会使用一种类似于共享内存多处理机使用的缓存一致性协议的消息处理机制,任何一种上锁处理机制都会造成系统扩展的颈瓶。
Vendors对共享磁盘系统的不足进行了改进(但事实上并没有多大改进),提出“共享缓存”机制,它非常适用于联机事务处理(OLTP),但不适用于数据仓库/在线分析处理(OLAP)。仓库的查询通过顺序查询数据仓库的事实表(fact table),除非,事实表已存储于集群的aggregate内存中才会使用磁盘,这也限制了系统扩展。
1.3 不共享
在不共享架构中,每一个处理器都有它私有的磁盘,不存在共享任何计算资源。比如大数据领域的hadoop架构,它可以实现将数据表中列簇拆分于不同存储结点上,每一个节点只需负责处理存储于自己磁盘上的列簇数据。而且,每一个结点上有私有的lock table和缓存池,因此没必要有复杂的锁机制和软硬件一致性机制。随着不共享架构的提出,涌现出了大量基于不共享架构的高性能、低成本模型,如集群、网格等。甚至大数分析领域,云计算提供商为了追求商业可用性都大量使用了商业服务器搭建这样的不共享架构,同样也有其他高性能硬件加速的方法,其中总拥有成本(TCO)呼声最高。