云计算和大数据技术

云计算和大数据技术复习(总)

Cloud Computing & Big Data
在这里插入图片描述

文章目录

第一章 云计算基础

1.1 云计算定义

云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机和其他设备;包括分布式计算技术、虚拟化技术、网络技术、服务器技术、数据中心技术、云计算平台技术、存储技术。

1.1.1 云计算涉及技术

分布式计算技术

  • 在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。分布式计算比起其它算法具有以下几个优点:
  • 稀有资源可以共享,通过分布式计算可以在多台计算机上平衡计算负载,可以把程序放在最适合运行它的计算机上。
  • 共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。

虚拟化技术

  • 通过虚拟化技术可实现软件应用与底层硬件相隔离,它包括将单个资源划分成多个虚拟资源的裂分模式,也包括将多个资源整合成一个虚拟资源的聚合模式。虚拟化技术根据对象可分成存储虚拟化、计算虚拟化、网络虚拟化等,计算虚拟化又分为系统级虚拟化、应用级虚拟化和桌面虚拟化。

网络技术

  • 把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息

服务器技术

  • 一种管理计算资源的计算机,服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。

数据中心技术

  • 数据中心是全球协作的特定设备网络,用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。

云计算平台技术

  • ​ 云计算资源规模庞大,服务器数量众多并分布在不同的地点,同时运行着数百种应用,如何有效的管理这些服务器,保证整个系统提供不间断的服务是巨大的挑战。
  • ​ 云计算系统的平台管理技术能够使大量的服务器协同工作,方便的进行业务部署和开通,快速发现和恢复系统故障,通过自动化、智能化的手段实现大规模系统的可靠运营。

存储技术

  • 通过网络把资源整合输出

1.2 云计算技术分类

1.2.1 资源封装的层次

基础设施即服务 IaaS 平台即服务 PaaS 软件即服务 SaaS

1.2.1 技术路线角度

资源整合型云计算和资源切分型云计算

1.2.1 服务对象角度

公有云

  • 指服务对象是面向公众的云计算服务,由云服务提供商运营。其目的是为终端用户提供从应用程序、软件运行环境,到物理基础设施等各种各样的IT资源。公有云对云计算系统的稳定性、安全性和并发服务能力有更高的要求。

私有云

  • 企业自建自用的云计算中心,其具备许多公有云环境的优点。指主要服务于某一组织内部的云计算服务,其服务并不向公众开放,如企业、政府内部的云服务

混合云

  • 公有云和私有云结合在一起的方式,该模式中,用户通常将非企业关键信息外包,并在共有云上处理,而掌握企业关键服务及数据内容则放在私有云上处理

社区云

  • 社区云是共有云范畴内的一个组成部分。它由众多利益向仿的组织掌控及使用。其目的是实现云计算的一些优势,例如特定安全要求、共同宗旨等社区成员共同使用云数据及应用程序

1.3 生产数据三个阶段

被动式生成数据

数据库技术使得数据的保存和管理变得简单,业务系统在运行时产生的数据直接保存数据库中,这个时候数据的产生是被动的,数据是随着业务系统的运行产生的。

主动式生成数据

互联网的诞生尤其是Web 2.0、移动互联网的发展大大加速了数据的产生,人们可以随时随地通过手机等移动终端随时随地地生成数据,人们开始主动地生成数据

感知式生成数据

感知技术尤其是物联网的发展促进了数据生成方式发生了根本性的变化,遍布在城市各个角落的摄像头等数据采集设备源源不断地自动采集、生成数据。

1.4 云计算特点

  • 资源池弹性可扩张
云计算系统的一个重要特征就是资源的集中管理和输出,这就是所谓的资源池。从资源低效率的分散使用到资源高效的集约化使用正是云计算的基本特征之一。分散的资源使用方法造成了资源的极大浪费,资源集中起来后资源的利用效率会大大地提高,随着资源需求的不断提高,资源池的弹性化扩张能力成为云计算系统的一个基本要求,云计算系统只有具备了资源的弹性化扩张能力才能有效地应对不断增长的资源需求。
  • 按需提供资源服务
云计算系统带给客户最重要的好处就是敏捷地适应用户对资源不断变化的需求;
云计算系统实现按需向用户提供资源能大大节省用户的硬件资源开支,用户不用自己购买并维护大量固定的硬件资源,只需向自己实际消费的资源量来付费;
按需提供资源服务使应用开发者在逻辑上可以认为资源池的大小是不受限制的,应用开发者的主要精力只需要集中在自己的应用上。
  • 虚拟化
现有的云计算平台的重要特点是利用软件来实现硬件资源的虚拟化管理、调度及应用。
在云计算中利用虚拟化技术可大大降低维护成本和提高资源的利用率。
  • 网络化的资源接入
从最终用户的角度看,基于云计算系统的应用服务通常都是通过网络来提供的,应用开发者将云计算中心的计算、存储等资源封装为不同的应用后往往会通过网络提供给最终的用户。
云计算技术必须实现资源的网络化接入才能有效地向应用开发者和最终用户提供资源服务。
以网络技术的发展是推动云计算技术出现的首要动力。
  • 高可靠性和安全性
用户数据存储在服务器端,而应用程序在服务器端运行,计算由服务器端来处理。所有的服务分布在不同的服务器上,如果什么地方(节点)出问题就在什么地方终止它,另外再启动一个程序或节点,即自动处理失败节点,从而保证了应用和计算的正常进行。
数据被复制到多个服务器节点上有多个副本(备份),存储在云里的数据即使遇到意外删除或硬件崩溃也不会受到影响。
  • 经济性
云服务商组建一个采用大量的商业机组成的机群相对于同样性能的超级计算机花费的资金要少很多。租户节省购买大量硬件的资金

1.5 数据来源

  • 管理信息系统
  • 网络信息系统
  • 物联网系统
  • 科研实验系统

1.6 大数据特点

大量(Volume)、高速(Velocity)、多样(Variety)、低价值密度(Value)、真实性(Veracity)

1.7 大数据应用领域

科学计算(基因计算)、金融(股票交易)、社交网络(Facebook)、移动数据(移动终端)、物联网(传感网)、网页数据(新闻网站)、多媒体(视频网站)

1.8 大数据处理系统

  • 数据查询分析计算系统(HBase、Hive、Hana)

  • 批处理系统(Hadoop、Spark、MapReduce)

这种系统是对互联网中产生的海量的静态的数据进行处理。例如对客户在网站中的点击量和网页的浏览量等数据进行处理,从而或者客户对哪些商品比较偏爱。
  • 流式计算系统(Scribe、Storm、Flume)
这种系统是对互联网中大量的在线数据进行实时处理。这些在线数据具有复杂的格式,并且数据是连续不断地来源于众多的渠道,该种系统需要对这些实时的数据进行实时的、快速的处理。例如生物体中传感器的数据、商场人流量数据、定位系统的数据都需要高效地实时处理。
  • 迭代计算系统(HaLoop、Spark、Twister)
  • 图计算系统(Pregel、Giraph、GraphX)
  • 内存计算系统(Dremel、HANA、Spark)

补充:HBase(Hadoop Database)

定义

  • HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用该技术可在廉价服务器搭建大规模结构化存储集群,其是Hadoop项目的子项目。不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。另一个不同的是,HBase的模式是基于列的而不是基于行的。
  • 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

分布式数据库定义及基本思想

  • 定义:利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑统一的数据库
  • 基本思想:将原来集中式数据库中数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量

1.9 大数据处理基本流程在这里插入图片描述

数据的抽取与集成:从数据中提取出关系和实体,经过关联和聚合等操作,按照统一定义的格式对数据进行存储。

数据分析:用户根据自己的需求对这些数据进行分析处理,如数据挖掘、机器学习、数据统计等,数据分析可以用于决策支持、商业智能、推荐系统、预测系统等

数据解释:这是用户最关心的数据处理的结果;可视化:标签云、历史流、空间信息流;人机交互:引导用户对数据逐步分析,使用户参与到数据分析过程中,使用户可以深刻地理解数据分析结果。

1.10 云计算时代的基本的3种角色

  • 资源的整合运营者、资源的使用者、终端客户。

1.11 大数据

  • 大数据是现有数据库管理工具和传统数据处理应用很难处理的大型、复杂的数据集,大数据的技术包括采集、存储、搜索、共享、传输、分析和可视化等。

1.12 内在动力

在信息产业的发展历程中,硬件驱动力和网络驱动力作为两个重要的内在动力再不同时期起着重要作用。

1.13 云计算发展两大主题

  • 计算和数据

1.14 科学家

  • 超级计算机之父――Seymour Cary(西摩·克雷)建造了世界上第一台基于晶体管的超级计算机
  • 云计算之父――Joho McCarthy(约翰·麦卡锡)最早预言"今后计算机将会作为公共设施提供给公众"
  • 互联网之父――Tim Berners-Lee(蒂姆·伯纳斯·李)万维网的发明人,世界上第一个网页的开发者
  • 大数据之父――Jim Gary(吉姆·克雷)提出了第四范式

1.15 大数据相关技术

1.15.1 数据收集
  • 数据处理的基础和前提,数据分析的根本保证
1.15.2 数据存储
  • 数据存储的方式和存储的媒介会影响数据分析和处理方式,是数据使用的可行性条件
1.15.3 数据分析
  • 数据使用的手段,通过绘制图标、数据比对等手段进行数据分析
1.15.4 数据再利用
  • 大数据的关键,再利用是创造价值的前提,是大数据的最终目的

1.16 物联网产业链

物联网(“The Internet of Things”,简称:IOT)产业链可细分为标识、感知、处理和信息传送4个环节,因此物联网每个环节主要涉及的关键技术包括:射频识别技术、传感器技术、传感器网络技术、网络通信技术等。核心环节是感知

第二章 大数据基础

2.1 科学研究四范式的发展历程

① 观测 实验

② 理论(计算萌芽)

③ 计算仿真 (面向计算)

④ 数据(面向数据)

2.2 非关系型数据库

2.2.1 产生
  • 云计算技术对数据库高并发读/写的需求,对海量数据的高效率存储和访问的需求,对数据库的高可扩展性和高可用性的需求都让传统关系型数据库系统显得力不从心。同时关系型数据库技术中的一些核心技术要求如:数据库事务一致性需求,数据库的写实时性和读实时性需求,对复杂的SQL查询,特别是多表关联查询的需求等在Web 2.0技术中却并不是必要的,而且系统为此付出了较大的代价。非关系型数据库技术的出现是云计算、大数据技术的必然需求。非关系型数据库,又被称为NoSQL(Not Only SQL),意为不仅仅是SQL(Structured Query Language,结构化查询语言),—NoSQL描述的是大量结构化数据存储方法的集合
2.2.2 定义
  • 非关系型数据库,又被称为NoSQL(Not Only SQL),意为不仅仅是SQL,结构化查询语言)NoSQL主要是指非关系型、分布式、不提供ACID(数据库事务处理的四个基本要素)的数据库设计模式,描述的是大量结构化数据存储方法的集合 不支持SQL
2.2.3 分类

(根据结构化方法以及应用场合的不同)

  • Column-Oriented:面向检索的列式存储,其存储结构为列式结构,能让很多统计聚合操作更简单方便,使系统具有较高的可扩展性。

  • Key-Value:面向高性能并发读写的缓存存储,以键值对存储,能够提供非常快的查询速度、大数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作。

  • Document-Oriented:面向海量数据访问的文档存储,类似于键值对,但这个值主要以JSON或XML格式的文档来进行存储,这种存储方式可以很方便的被面向对象的语言使用。

2.3 一致性哈希算法

2.3.1 基本原理

问题

  • 传统的哈希算法在节点数没有变化时能很好的实现数据的分配,但当结点数发生变化时传统的哈希算法将对数据进行重新的分配,这样系统恢复的代价就非常大。

目标

  • 解决节点频繁变化时的任务分配问题。

引入哈希环

  • 将服务器的IP地址或者主机名作为关键字进行哈希,确定每个节点在哈希环上的位置;将数据的关键字也用同样的哈希函数映射到哈希环上,然后沿着该环顺时针向后,将遇到的第一个节点作为处理节点(向上取整);当增加或者减少节点时,只会影响与之相邻的某一节点,其他节点不受影响。

引入虚拟节点

  • 解决节点负载不均衡问题(当结点数少的时候,根据哈希函数将节点映射到哈希环中,会导致分布不均匀),即对每一个节点计算多个hash值,尽量保证这些hash值比较均匀的分布在哈希环中。当根据Key查找节点时,找到的是虚拟节点,然后再跟据虚拟节点查找对应的真实节点。
2.3.2 计算和存储位置一致性

基本原理

  • 用户名加逻辑存储位置所构成的字符串在系统中是唯一确定的。

应用场景

  • 面向“小”数据,不涉及文件分块问题
  • 数据块间的处理是独立的,保证节点间发起的计算是低耦合的
  • 程序片的典型大小远小于需要处理的数据大小
  • 数据的存储优先于计算发生。

主要步骤

  1. 将服务器节点以IP地址作为key以一致性哈希算法映射到哈希环上
  2. 数据以“用户名+文件逻辑位置”作为key,映射到哈希环上,顺时针找到最近的节点作为实际数据存储的位置
  3. 在发起计算任务时提取key值,映射到哈希环上,顺时针找到最近的节点注入程序并发起计算。(数据找服务器计算,计算完再走)

优点

  • 只要程序片需要处理的数据的逻辑位置是固定的,系统就会将计算程序片路由到数据存储位置所在的节点,节点的负载均衡有数据分布均衡来实现。
  • 无中心节点的计算和数据定位使计算可以唯一的找到其所要处理和分析的数据,使计算尽可能地在数据存储的位置发起,从而节约大量的网络资源,同时避免了系统单点失效造成的不良影响。
  • 面对海量文件系统不用维护庞大的元数据库来保存文件的存储信息,计算寻找数据的速度快,路由算法复杂度低。

简述

一致性哈希算法的基本实现过程为:对Key值首先用MD5算法将其变换为一个长度32位的十六进制数值,再用这个数值对232取模,将其映射到由232个值构成的环状哈希空间,对节点也以相同的方法映射到环状哈希空间,最后Key值会在环状哈希空间中找到大于它的最小的节点值作为路由值。   一致性哈希算法的采用使集群系统在进行任务划分时不再依赖某些管理节点来维护,并且在节点数据发生变化时能够以最小的代价实现任务的再分配,这一优点特别符合云计算系统资源池弹性化的要求,因此一致性哈希算法成为了实现无主节点对等结构集群的一种标准算法。
2.3.3 图解

在这里插入图片描述

2.4 进化算法(蚁群算法)

  • 由个体根据简单规则、通过正反馈、分布式协作依靠群体的力量自动寻找最优路径。

2.5 耗散结构

2.5.1 耗散结构定义
  • 出现自组织现象的系统必须是耗散结构的。耗散结构理论指出:一个开放系统处在远离平衡的非线性区域,当系统的某个参数变化到一定临界值时,通过涨落,系统发生突变,即非平衡相变,其状态可能从原来的混乱无序的状态转变到一种在时间、空间或功能上有序的新状态,这种新的有序结构(耗散结构)需要系统不断的与外界交换物质和能量才能得以维持并保持一定的稳定性。
2.5.2 耗散结构形成条件
  • 自动从无序状态形成并维持在时间上、空间上或功能上的有序结构状态。

满足条件

  • 系统必须是开放的
  • 系统需要保持远离平衡态
  • 系统内部存在着非线性相互作用
  • 系统存在涨落
2.5.3 集群系统本身满足耗散结构要求

①与系统外的能量、物质和信息的交换

②节点负载是被有效均衡的,系统的均衡状态是一种熵值较低的远离平衡态的状态

③系统内具有海量节点高耦合,节点间中存在着频繁的计算迁移、存储迁移、计算备份、存储备份、节点失效处理等节点间的高耦合性操作,系统内部存在着大量的相互作用,系统内部存在着非线性相互作用。④系统内各种参数会随着外部请求的变化出现涨落。

第三章 虚拟化技术

3.1 虚拟化描述

① 虚拟化对象 在计算机中,服务器、计算机硬件资源为虚拟化技术的主要对象,虚拟化的对象包括计算机的基础设施、系统和软件。

② 虚拟化过程 对计算机实现抽象方法,屏蔽计算机物理层运动复杂性,抽象转换物理资源,实现由计算机物理层向计算机逻辑层转变。

③ 虚拟化结果 通过对资源的虚拟化,并对其提供相应的规范 化的接口来实现资源的输入和输出,便于用户高效 应用此类资源。

虚拟化技术并行计算分布式计算网格计算的发展,促进了云计算技术的产生和发展

3.2 虚拟化技术分类

3.2.1 指令集架构级虚拟化

指令集架构级虚拟化是指操作系统不借助硬件,使用软件方法将指令集作为虚拟化目标,脱离实际进行的程序 ,模拟相关指令集并执行 。 如:Bochs、VLIW。

3.2.2 硬件抽象层虚拟化

计算机将虚拟资源向物理资源的映射,通过对硬件进行虚拟化,并使用真实的物理硬件于操作系统中,使抽象层运行结果近似于物理层运行结果, 并服务于用户操作系统。硬件抽象层的虚拟机支持多种的操作系统及相关应用程序,用户端可在此基础上使用其他平台的操作系统。该技术实现了操作系统的高度隔离性,并有效降低了操作风险,且方便的操作方式更易于维护。

3.2.3 操作系统层虚拟化

操作系统以原系统为模板,利用分隔用户操作系统的特殊部分的方法来产生操作系统彼此间相 互独立的操作执行环境,各独立操作系统间互不干涉同时又实现对用户操作系统内核和计算机硬件资源的集群共享,实现了操作系统与应用分隔,使物理层与逻辑层分隔开来。

3.2.4 编程语言层虚拟化

编程语言层虚拟化通过对应用层的部分功能 进行虚拟化,直接作用与应用层之上,实现特指虚拟化结构体系的多种进程级作业。虚拟机在物理机系统中运行,用户不能对其进行有效感知。如:JVM、 CLR。

3.2.5 库函数层虚拟化

库函数层的虚拟化是指在应用层直接虚拟化操作系统中的应用级库函数的接口,利用应用程序编程接口转换技术做出与操作系统相对应的函数来调用延迟锁相环,使得应用程序可直接在不同的操作系统中进行存储移动,用户在使用时无需做出相应的更改。如:Wine。

3.2.6 五层对比

在这里插入图片描述

3.3 虚拟化技术优势

①可以提高资源利用率:动态调整空闲资源,减小服务器的规模。

②提供相互隔离、高效的应用执行环境:可以在一台物理机上模拟出多个不同、相互之间独立的操作系统。

③简化资源和资源的管理:用户不知道虚拟资源的具体实现,降低了用户与虚拟资源之间的耦合度。

④实现软件和硬件的分离:不同的软件系统通过虚拟机监听器使用底层的硬件资源,实现多个软件系统共享同一个硬件资源。

3.4 虚拟化技术劣势

①可能会使物理机负载过重:多个应用程序全部运行,导致应用程序运行缓慢,甚至系统崩溃。

②升级和维护引起的安全问题:一台物理机上安装多台客户机会导致客户机上安装补丁速度缓慢。

③物理计算机的影响:物理机宕机,所有虚拟机都会影响。

3.5 操作系统虚拟化与硬件虚拟化之间的不同

①操作系统虚拟化虚拟出来的是原系统的副本,而硬件虚拟化虚拟出来的是硬件环境,然后安装系统。

②操作系统虚拟化虚拟出的系统只能是物理操作系统的副本,而硬件虚拟化虚拟的系统可以是不同的系统。

③操作系统虚拟化虚拟出的多个系统有较强的联系,而硬件虚拟化虚拟出的系统是相互独立的。

④操作系统虚拟化虚拟出的系统是虚拟的,性能损耗低;而硬件虚拟系统是在硬件虚拟层上实实在在安装的系统,性能损耗高。

3.6 虚拟化形式

  • 网络虚拟化
  • 微处理器虚拟化
  • 桌面虚拟化

3.7 虚拟机特征

  • 同一性
  • 高效性
  • 受控性

3.8 系统虚拟化

3.8.1 定义
  • 在一台物理计算机系统上虚拟出一台或多台虚拟计算机系统,虚拟计算机系统是指使用虚拟化技术运行在一个隔离环境中,具有完整硬件功能的逻辑计算机系统,包括操作系统和应用程序。这些操作系统之间相互独立,我们一般使用虚拟机的指令集架构与物理计算机系统相同。
3.8.2 优点

①硬件无关性:只要另一台计算机提供相同的虚拟硬件抽象层,一个虚拟机就可以无缝地进行迁移。

②隔离性:可以在一台物理机上虚拟出的多台虚拟机上进行不同的操作,相互之间没有影响。

③多实例:一台物理机上可以运行多台虚拟机,一台虚拟机上又可以安装多个操作系统。

④特权功能:虚拟化层中添加的功能无需了解客户具体语意,实现起来更容易,并且添加的功能具有较高的特权级,不能被客户机绕过。

3.8.3 分类
3.8.3.1 服务器虚拟化

定义

  • (最大价值):在一台物理服务器上虚拟出多个虚拟服务器,每个虚拟服务器执行一项任务。

按虚拟化部件分类

  • 将一台服务器虚拟成多台服务器。
  • 将多个独立的物理服务器虚拟成一个逻辑服务器。
  • 先将多台物理服务器虚拟成一台逻辑服务器,然后再将其虚拟成多个虚拟环境,也就是多个业务在多个虚拟服务器上运行。

技术

  • CPU虚拟化:把物理CPU抽象成虚拟CPU,任意时刻一个物理CPU只能运行一个虚拟的CPU指令,每个客户操作系统可以使用一个或多个虚拟CPU,这些客户操作系统之间虚拟CPU的运行相互隔离,互不影响。全虚拟化:解决客户操作系统的特权指令问题。半虚拟化:解决虚拟机执行特权指令的问题。

  • 内存虚拟化:内存虚拟化是对宿主机的真实物理内存统一管理,虚拟化成虚拟的物理内存,然后分别供若干虚拟机使用,使得每个虚拟机拥有各自独立内存空间。引入物理机物理地址空间,应用程序对应的虚拟地址听过客户机OS实现到客户机的物理地址的映射,客户机的物理地址通过VMM(虚拟机监听器)实现到苏主机的物理地址的映射。

  • I/O虚拟化:I/O虚拟化的第一步是发现设备设备的发现,取决于被虚拟的设备类型;第二步是截获,访问虚拟设备已经发现,此时VMM的工作是使客户机操作系统对其进行访问。网卡:虚拟网卡技术和虚拟网桥技术。

3.8.3.2 桌面虚拟化

定义

  • 依赖于服务器虚拟化,将计算机的桌面与其使用的终端设备像分离,为用户提供部署在云端的远程计算机桌面环境,用户可以使用不同的终端设备,通过网络来访问该桌面环境。

优势

①更灵活的访问和使用: 部署在远程服务器上,任何一台满足接入要求的终端设备在任何时间、任何地点都可以进行访问。

**②更低的用户终端配置:**所有的计算都在远程服务器上进行,终端设备主要是用来显示远程桌面内容。

**③更便于集中管理终端桌面:**运营商将所有的桌面管理放在后端的数据中心中,数据中心可以对桌面镜像和相关的应用进行管理、维护。

**④更高的数据安全性:**用户终端设备损坏对数据无影响,虚拟桌面镜像文件受感染,受影响的只是虚拟机,很快的就能达到清除和恢复。

**⑤更低的成本:**简化了用户终端,用户可以选择配置相对较低的终端设备,节省购买成本

**虚拟桌面的解决方案 **

  • 基于虚拟桌面基础架构和基于服务器计算技术,这两种技术方案都是一种端到端的桌面管理解决方案。
3.8.3.3 网络虚拟化

定义

  • (服务器虚拟化的一部分):一般指虚拟专用网,通过一个公用网络,建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全稳定隧道,可以对数据进行几倍加密达到安全使用互联网的目的。

3.9 虚拟化软件

  • VMware Workstation
  • VirtualBox
  • KVM

第四章 虚拟化平台

云计算技术领域存在两个主要技术路线

①基于集群技术的云计算资源整合技术:将分散的计算和存储资源整合输出,主要依托的技术为分布式计算技术。

②基于虚拟机技术的云计算资源切分技术。

4.1 集群系统

4.1.1 集群系统概念
  • 集群系统是一组独立的计算机的集合体,节点将通过高效能的互联网络连接,各节点除了作为一个单一的计算资源供交互使用户使用外,还可以协同工作,并表示一个单一的、集中的计算资源,供并行计算任务使用。集群系统是一种造价低廉、易于构建并且具有较好的可扩放性的体系结构
  • 集群系统是一个互相通过网络连接起来的计算机(节点)所构成的分布式系统,集群中的每一个节点都具有独立的存储系统,和共享存储系统相比集群是一种松耦合的系统。集群系统现在是实现高性能计算主要方法,集群系统不只是计算的聚集也是存储的聚集。这里所指的分布式系统包括分布式计算和分布式存储。
4.1.2 设计中要考虑的五个关键问题

①可用性:充分利用集群系统中的冗余资源,中间层使集群系统可以提供检查点、故障接管、错误恢复以及所有节点上的容错支持。

②单一系统映像SSI:中间层通过组合各节点上的操作系统提供对系统资源的统一访问。

③作业管理:批处理、负载均衡、并行处理。

④并行文件系统PFS:处理大量数据,进行大量I/O操作。

⑤高效通信:(1)节点复杂度高(2)连接线路长(3)使用标准通信协议下的商品化网络。

4.1.3 集群系统分类

①高可用性集群系统:通过备份节点的使用(节点冗余)来实现的,保证业务不间断服务。

②负载均衡集群系统:所有节点参与工作,通过管理节点或一致性哈希算法实现。

③高性能集群系统:追求计算能力强大,完成复杂的计算任务。

④虚拟化集群系统:把一台物理机虚拟成多台独立的虚拟机使用通过管理软件实现虚拟资源的分配管理。

4.1.4 集群系统特征

①各节点都是一个完整的系统

②互联网络通常使用商品化网络,部分商用集群系统也采用专用网络互联。

③网络接口与节点的I/O总线松耦合相连。

④各节点有一个本地磁盘。

⑤各节点有自己完整的操作系统。

4.1.5 集群一致性
4.1.5.1 定义

一致性要求在对同一个数据进行并发访问时系统能返回相同的结果

4.1.5.2 分类
  • 强─致性∶强一致性系统会在所有副本都完全相同后才返回,系统在未达到一致时是不能访问的,强一致性能保证所有的访问结果是一致的。
  • 弱一致性:弱一致性系统中的数据更新后,后续对数据的读取操作得到的不一定是更新后的值。
  • 最终一致性∶最终一致性允许系统在实现一致性前有一个不一致的窗口期,窗口期完成后系统最终能保证一致性。
4.1.6 集群文件系统优点
  • 利用集群文件系统可以将计算任务在数据的存储节点位置发起,从而避免了数据在网络上传输所造成的拥塞。
  • 集群文件系统可以充分利用各节点的物理存储空间,通过文件系统形成一个大规模的存储池,为用户提供一个统一的可弹性扩充的存储空间。
  • 利用集群文件系统的备份策略、数据切块策略可实现数据存储的高可靠性以及数据读取的并行化,提高数据安全性和数据访问效率。
  • 利用集群文件系统可以实现利用廉价服务器构建大规模高可靠性存储的目标,通过备份机制保证数据的高可靠性和系统的高可用性。
4.1.7 大数据系统分类

Flynn分类法:是依据指令流和数据流之间的数目关系来分类的,这一分类方法是Flynn在1972年所提出的,我们可以借鉴Flynn对大数据系统进行分类

  • 单指令单数据系统(Single lnstruction Single Data , SISD )∶每条指令每次只对一个数据集进行操作,即单台串行计算机的工作模式。
  • 单指令多数据系统(Single lnstruction Multiple Data,SIMD )∶同一条指令同时对不同的数据集进行操作。
  • 多指令多数据系统(Multiple Data Single Instruction,MIMD ) 每个处理单元都能单独的执行指令并具有单独的数据集。

在这里插入图片描述

4.2 单一系统映像

4.2.1 单一系统映像含义

①单一系统:系统有多个处理器,用户仍把整个系统视为一个单一的系统。

②单一控制:最终用户或系统用户使用的服务都来自只有唯一接口的同一个地方。

③对称性:没有主节点,用户可以从任一个节点上获得集群服务。

④位置透明:用户不用了解真正执行服务的物理设备位置;系统向用户屏蔽了内部的复杂性,云计算系统的使用者只需要面对一个统一的接口就能实现对云计算系统资源的访问。

  • 数据的计算可能是分布式的,但用户看上去是统一计算的,计算的分配是由系统统一进行的。部分大数据系统需要用户对计算进行切分,但用户不用考虑具体的物理节点分配问题。
  • 集群系统的高可用性冗除余、负载均衡一致性问题对于用户是不可见的,由系统自动完成。
  • 数据在系统中可能是分布式存储,但对于用户视角而言只有一个逻辑存储区域,用户不用关心数据物理在是存储在哪一个节点上的。
4.2.2 单一系统映像好处

①终端用户不需要了解应用在哪些节点上运行。

②操作员不需要了解资源所在位置。

③降低了操作员错误带来的风险,使系统对终端用户表现出更高的可靠性和可用性。

④可以灵活的采用分布式和集中式的管理或控制,避免了对系统管理员的高要求。

⑤大大简化了系统的管理,一条命令就可以对分布在系统中的多个资源进行操作。

⑥提供了位置独立的消息通信。

4.3 SMP、MPP、集群对比

在这里插入图片描述

4.4 Beowulf系统

4.4.1 Beowulf定义

贝奥武夫机群是一种高性能的并行计算机集群结构,通常是由一台主节点和一台以上的子节点通过以太网或其他网络连接的系统,它采用市面上可以购买的普通硬件(例如装有Linux的PC)、标准以太网卡和交换机,它不包含任何特殊的硬件设备,可以重新组建。特点是使用廉价的个人电脑硬件组装以达到最优的性能/价格比。

4.4.2 Beowulf特点
  • 通常有一个管理节点和多个计算节点构成,它们通过以太网连接。管理节点监控计算节点,通常也是计算节点的网关和控制终端,当然也通常是集群系统的文件服务器。
  • 由最常见的硬件设备组成。
  • 采用那些廉价且广为传播的软件。
4.4.3与其他并行计算机对比
  • 价格低廉
  • 系统扩展性好
  • 高可用性
  • 系统连接简单
  • 灵活性高
4.4.4 并行计算的层次

程序级并行

一个数据分析任务能被切分为多个相互之间独立的计算任务并被分配给不同的节点进行处理,这种并行就叫程序级并行。程序级并行是一种粗粒度的并行,一个问题能实现程序级的并行意味着这个问题很容易在集群中被执行,并且由于被切分的任务的独立的,子问题之间所需要的通讯代价也是非常小的,不需要在集群节点间进行大量的数据传输。程序级并行中的各个计算任务可以被认为是没有任何计算关联和数据关联的任务,其并行性是天然的、宏观的。

子程序级并行

一个程序可以被分为多子程序任务并被集群并行执行,最后通过合并结果得到最终结果,这称为子程序并行。子程序级并行是对程序级并行的进一步分解,粒度比程序级并行小,以切分数据为基础的一些批处理大数据系统可以被认为属于子程序级的并行。如Hadoop系统数据被切分后被预先存储与集群中的分布式文件系统,各子程序被分配到节点,完成计算后利用归约过程实现数据的合并。这类面向数据的并行计算可以被较为容易的实现,并能实现自动化并行化。子程序级并行是在大数据系统中实现并行计算的主要层次。

4.5集群文件

4.5.1 定义
  • 集群文件系统将系统中每个节点上的存储空间进行虚拟的整合,形成一个虚拟的全局逻辑目录,集群文件系统在进行文件存取时依据逻辑目录按文件系统内在的存储策略与物理存储位置对应,从而实现文件定位。(存储与逻辑映射、逻辑与物理的映射)。
4.5.2 集群文件系统的优点
  • 自身维护着逻辑目录和物理存储位置的对应关系,可以将计算任务在数据的存储节点发起。
  • 充分利用各节点的物理存储空间,为用户提供一个统一的可弹性扩充的存储空间。
  • 利用备份策略、数据切块策略可以实现数据存储的高可靠性以及数据读取的并行化。
  • 利用廉价服务器构建大规模、高可靠性存储,保证系统的高可用性。

4.6 Lustre集群文件系统

4.6.1 定义
  • 高性能分布式存储领域中最著名的系统,适合并发不是很高但数据量很大的云平台;是基于对象的存储系统,是一个安全可靠、易于管理的大量级高性能存储系统。
4.6.2 组成及功能

(1)元数据服务器
元数据服务器(Metadata Server , MDS)负责管理文件系统的基本信息,负责管理整个系统的命名空间,维护整个文件系统的目录结构用户权限,并负责维护文件系统数据的一致性。

(2) 元数据存储节点
元数据存储节点(Metadata Target , MDT)负责存储元数据服务器所要管理的元数据的文件名、目录、权限和文件布局,一个文件系统有且只能有一个MDT,不同的MDS之间共享同一个MDT。

(3)对象存储服务器
对象存储服务器(Object Storage Servers , osS)提供针对一个或多个的本地OST网络请求和文件1/O服务,OST、MDT和Client可以同时运行在一个节点。但是典型的配置是一个MDT专用一个节点,每个oSS节点可以有两个或多个OST,一个客户端可以有大量的计算节点。

(4)对象存储节点
OST(Object Storage Target , OST)负责实际数据的存储,处理所有客户端和物理存储之间的交互·这种存储是基于对象的,OST将所有的对象数据放到物理存储设备上,并完成对每个对象的管理。

(5)客户端
客户端( Client)通过标准的POSIX接口向用户提供对文件系统的访问。

4.6.3 Lustre优点:
  • 提供高性能传输的数据共享,具备并行访问的能力;在数据高并发时,进行负载均衡;元数据所走的网络和文件数据走的网络不同。
  • 弹性扩充系统存储容量,增加节点数来扩充网络带宽,具备灵活扩展性。
  • 元数据服务器采用Active-Standby(主备方式),当一台服务器坏了,马上切换到另一个服务器。
  • 提供接口给用户二次开发,并且开源。
4.6.4 Lustre缺点:
  • 只能部署在Linux系统上,核心程序很依赖LinuxOS的内核和底层文件的操作方法。
  • 服务器故障切换利用第三方心跳技术(heartbeat),包括心跳监测(互发报文来确定当前状态)和资源接管。
  • 本身不具备数据自备份的能力(要程序员手动备份)。

4.7 分布式系统中计算和数据的协作机制

4.7.1 基于计算切分的分布式计算
  • MPI将大量的节点通过消息传递机制连接起来,从而使节点的计算能力聚集成为强大的高性能计算,主要面向计算密集的任务

在这里插入图片描述

MPI的基本工作过程可以总结为:

  • 切分计算 → 注入程序 → 启动计算 → 读取数据
  1. 首先将计算程序由主节点通过NFS等网络共享文件系统分发到各子节点内存启动计算
  2. 数据和计算程序一般都是被集中存储在阵列等专门的存储系统中
  3. 程序设计者需要事先将计算任务本身在程序中进行划分,计算程序被分配到节点后根据判断条件启动相应的计算工作,计算中需要进行节点间的数据交换时通过MPI提供的消息传递机制进行数据交换。

这种系统计算和存储的协作是通过存储向计算的迁移来实现的,也就是说系统先定位计算节点再将数据从集中存储设备通过网络读入计算程序所在的节点,在数据量不大时这种方法是可行的,但对于海量数据读取这种方式会很低效。

MPI的编程实践中就是用计算换数据通信的原则,使系统尽可能少地进行数据交换

4.7.2 基于计算和数据切分的混合型分布式计算技术—网格计算
  • 网格计算就是分布式计算的一种。如果某项工作是分布式的,那么,参与这项工作的一定不只是一台计算机,而是一个计算机网络计算机网络,这种“蚂蚁”的方式将具有很强的数据处理数据处理能力。

在这里插入图片描述

网格系统往往事先会将计算程序以某种形式安装(如屏幕保护程序)在异构计算终端服务器上,用于监控计算终端的工作状态,当计算终端空闲时就会启动计算程序对数据进行处理。网格服务器则负责切分数据向计算终端分发数据并汇总计算结果。网格系统的数据逻辑上也是集中存储的,网格服务器负责切分数据并向计算终端传送需要计算的数据块。
数据块被文件系统预先切分是MapReduce能自动实现分布式计算的重要前提,系统通过主节点的元数据维护各数据块在系统中存储的节点位置,从而使计算能有效地找到所需要处理的数据。MapReduce这种大块化的数据拆分策略非常适合对大数据的处理,过小的数据分块会使这一框架在进行数据处理时的效率下降。
网格系统中计算是先于数据到达计算终端的,这与MPI十分相似,数据是由计算程序主动发起请求获得,从而实现计算和数据的一致性。总的来看网格系统既具有面向数据系统中切分数据来实现分布式计算的思想,又具有面向计算的系统中计算向数据迁移的特征,所以典型的网格系统是一种既有面向数据又有面向计算特征的混合系统,完成的任务主要是计算密集的需要高性能计算的任务,应用领域主要是在科学计算等专业领域。

计算和数据的协作机制是通过数据来寻找计算实现的,即在网格中移动的主要是数据而不是计算

4.7.3 基于数据切分的分布式计算

与MPI不同,这种框架通常不是拆分计算来实现分布式处理,而是通过拆分数据来实现对大数据的分布式处理,MapReduce框架中分布式文件系统是整个框架的基础
在这里插入图片描述

这一框架下的文件系统一般将数据分为64MB的块进行分布式存放,需要对数据进行处理时将计算在各个块所在的节点直接发起,避免了从网络上读取数据所耗费的大量时间,实现计算主动“寻找”数据的功能,大大简化了分布式处理程序设计的难度。
这一框架在获得良好的大数据并行处理能力的时候也有其应用的局限,MapReduce框架在对同类型大数据块进行同类型的计算处理时具有非常好的自动分布式处理能力,但在数据较小、数据类型复杂、数据处理方式多变的应用场景效率相对低下。为了实现Google系统良好的计算和数据的协作机制GFS和MapReduce是密不可分的,没有GFS支持单独的采用MapReduce是没有太大价值的。
4.7.4 ☆三种计算对比

在这里插入图片描述

第五章 MPI-面向计算

5.1 MPI定义

  • 消息传递接口,MPI标准是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准。MPI本身并不是一个具体的实现,而是是一种标准描述。消息传递机制是服务器之间能有机的结合在一起,并形成一个更大的计算资源池,通过消息传递机制,服务器之间能进行数据交换从而实现对计算任务的相互协作。(消息传递机制
  • MPI的核心是进程间通信,遵循进程间顺序通信模型CSP,每个进程在自己的空间内运行。
  • MPI并行程序中main函数必须带参数,且头文件必须包含**#include “mpi.h”**

5.2 MPI特点

(1) 程序编写灵活,功能强大

(2)能支持多种编程语言(FORTRAN77、C、Fortran90、C++)

(3) MPI对计算的支持强大,但对文件的支持较弱

(4) MPI需要程序设计人员自己实现求解问题的并行化。

(5) ☆MPI没有提供计算失效的处理机制。

(6) 网络是MPI的主要瓶颈

5.3 函数名称

5.3.1 最简单的并行程序

**(1)并行初始化函数:int MPl_Init(int argc, char argv)

参数描述:argc为变量数目,argv为变量数组,两个参数
MPl_Init()是MPI程序的第一个函数调用,标志着并行程序部分的开始,它完成MPI程序的初始化工作,所有MPI程序并行部分的第一条可执行语句都是这条语句。

(2)并行结束函数:int MPl_Finalize()

MPI_Finalize()是并行程序并行部分的最后一个函数调用,出现该函数后表明并行程序的并行部分的结束。
5.3.2 获取进程标志和机器名

*(1)获得当前进程标识函数:int MPl_Comm_rank ( MPI_Comm comm, int rank )

参数描述:comm为该进程所在的通信域句柄; rank为调用这一函数返回的进程在通信域中的标识号

这一函数调用通过指针返回调用该函数的进程在给定的通信域中的进程标识号rank ,有了这一标识号,不同的进程就可以将自身和其他的进程区别开来,节点间的信息传递和协调均需要这一标识号。

*(2)获取通信域包含的进程总数函数:int MPl_Comm_size(MPl_Comm comm, int size)

参数描逑:comm为通信域句柄, size为函数返回的通信域comm内包括的进程总数·

这一调用返回给定的通信域中所包括的进程总个数,不同的进程通过这一调用得知在给定的通信域中一共有多少个进程在并行执行。

(3)获得本进程的机器名医数:int MPl_Get_processor_name( char name,int resultlen)

参数描述:name为返回的机器名字符串, resultlen为返回的机器名长度。

这个函数通过字符指针name ﹑整型指针resultlen返回机器名及机器名字符串的长度。
5.3.3 有消息传递功能的并行程序

( 1)消息发送函数:int MPI_Send(void buf, int count,MPl_Datatype datatype, int dest, int tag,MPI_Comm comm)*

MPI_Send()函数是MPI中的一个基本消息发送函数,实现了消息的阻塞发送,在消息未发送完时程序处于阻塞状态。

(2)消息接收函数:int MPl_Recv(void buf, int count, MPl_Datatype datatype, int source, int tag, MPI_Comm comm,MPI_Status status)

MPl_Recv()是MPI中基本的消息接收函数,MPI_Recv()从指定的进程source接收消息,并且该消息的数据类型和消息标识和该接收进程指定的datatype和tag相一致,接收到的消息所包含的数据元素的个数最多不能超过count个。

第六章 分布式大数据系统——Hadoop

6.1 Hadoop核心模块

  • Hadoop是由Apache软件基金会研发的一种开源、高可靠、伸缩性强的分布式计算系统,主要用于对大于1TB的海量数据的处理
  • Hadoop采用Java语言开发,是对Google的MapReduce核心技术的开源实现。
  • 包括系统HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)和分布式计算框架MapReduce,这一结构实现了计算和存储的高度耦合,十分有利于面向数据的系统架构,因此已成为大数据技术领域的事实标准。

6.2 分布式计算框架MapReduce(进行计算)

6.2.1 定义
  • MapReduce是一种处理大数据集的编程模式,它借鉴了最早出现在LISP语言和其他函数语言中的map和reduce操作

  • MapReduce的思想来源LISP语言

  • 谷歌“三宝”是“Google文件系统(GFS)”、“BigTable大表”、“MapReduce算法”

6.2.2 特点

(1)需要在集群条件下使用

  • MapReduce的主要作用是实现对大数据的分布式处理,其设计时的基本要求就是在大规模集群条件下的

(2)需要有相应的分布式文件系统的支持

  • 单独的MapReduce模式并不具有自动的并行性能,它只有与相应的分布式文件系统相结合才能完美地体现MapReduce这种编程框架的优势。MapReduce能实现计算的自动并行化很大程度上是由于分布式文件系统在对文件存储时就实现了对大数据文件的切分,这种并行方法也叫数据并行方法。

(3) 可以在商品化集群条件下运行,不需要特别的硬件支持

  • 节点就是基于典型的双核X86的系统,配置2~4GB的内存,网络为百兆网和千兆网构成,存储设备的便宜的IDE硬盘。

(4)假设节点的失效为正常情况

  • 通常基于MapReduce的分布式计算系统采用了存储备份、计算备份和计算迁移等策略来应对,从而实现在单节点不稳定的情况下保持系统整个的稳定性。

(5) 适合对大数据进行处理

  • 基于MapReduce的系统并行化是通过数据切分实现的数据并行,同时计算程序启动时需要向各节点拷贝计算程序,过小的文件在这种模式下工作反而会效率低下。

(6)计算向存储迁移

  • 基于MapReduce的分布式系统在数据存储时就实现了分布式存储,一个较大的文件会被切分成大量较小的文件存储于不同的节点,系统调度机制在启动计算时会将计算程序尽可能分发给需要处理的数据所在的节点。

(7) MapReduce的计算效率会受最慢的Map任务影响

  • Reduce操作的完成需要等待所有Map任务的完成,所以如果Map任务中有一个任务出现了延迟,则整个MapReduce操作将受最慢的Map任务的影响。
6.2.3 利用MapReduce解决wordcount的整个过程

计算过程都是在同一节点上完成的,并未实现计算的并行化,历史上的Lisp语言也是运行在单机上的程序,典型的Map/Reduce过程

用户需要处理的文件example.txt已被分为多个数据片存储在集群系统中不同的节点上了,用户先使用一个Map函数-Map(example.txt,文件内容),在这个Map函数中key值为example.txt , key通常是指一个具有唯一值的标识, value值就是example.txt文件中的内容·

Map操作程序通常会被分布到存有文件example.txt数据片段的节点上发起,这个Map操作将产生一组中间key/value对( word, count ) 

这里的word代表出现在文件example.txt片段中的任一个单词,每个Map操作所产生的key/value对只代表example.txt一部分内容的统计值。

Reduce函数将接收集群中不同节点Map函数生成的中间key/value对,并将Key相同的key/value对进行合并,在这个例子中 Reduce函数将对所有key值相同的value值进行求和合并,最后输出的key/value对就是( word,count) ,其中count就是这个单词在文件example.txt中出现的总的次数。

6.3 分布式计算框架系统HDFS(存放数据)

6.3.1 HDFS简介
  • 一种典型的主从式的分布式文件系统

  • HDFS由一个名叫 Namenode的主节点和多个名叫 Datanode的子节点组成。

Namenode功能

  • Namenode存储着文件系统的元数据,这些元数据包括文件系统的名字空间等,向用户映射文件系统,并负责管理文件的存储等务,但实际的数据并不存放在Namenode。Namenode的作用就像是文件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射

Datanode功能

  • 用于实际对数据的存放,对Datanode上数据的访问并不通过Namemode,而是与用户直接建立数据通信。
6.3.2 文件存储时两个重要的策略

副本策略保证了文件存储的高可靠性

对数据块典型的副本策略为3个副本:

  • ​ 第一个副本存放在本地节点

  • ​ 第二个副本存放在同一个机架的另一个节点

  • ​ 第三个本副本存放在不同机架上的另一个节点

分块策略保证数据并发读写的效率并且是MapReduce实现并行数据处理的基础

  • 通常HDFS在存储一个文件会将文件切为64MB大小的块来进行存储,数据块会被分别存储在不同的Datanode节点上,这一过程其实就是一种数据任务的切分过程,在后面对数据进行MapReduce操作时十分重要,同时数据被分块存储后在数据读写时能实现对数据的并发读写,提高数据读写效率。

优点:( 1)降低客户端与主服务器的交互代价

​ (2)降低网络负载

​ (3)减少主服务器中元数据的大小

6.3.3 工作过程

在这里插入图片描述

  • 用户请求创建文件的指令由Namenode进行接收,Namenode将存储数据的Datanode的IP返回给用户,并通知其他接收副本的Datanode,由用户直接与Datanode进行数据传送。Namenode同时存储相关的元数据。
  • 整个文件系统采用标准TCP/IP协议通信,实际是架设在Linux文件系统上的一个上层文件系统。HDFS上的一个典型文件大小一般都在G字节至T字节。

6.4 Google文件系统(GFS)

6.4.1 定义
  • GFS为分布式结构,它是一个高度容错网络文件系统,主要由一个Master(主)和众多chunkserver(大块设备)构成的
6.4.2 体系结构

在这里插入图片描述

6.4.3 工作过程
  1. 客户端使用固定大小的块将应用程序指定的文件名和字节偏移转换成文件的一个块索引,向Master发送包含文件名和块索引的请求。
  2. Master收到客户端发来的请求,Master向块服务器发出指示,同时时刻监控众多chunkserver的状态。chunkserver缓存Master从客户端收到的文件名和块索引等信息。
  3. Master通过和chunkserver的交互,向客户端发送chunk-handle和副本位置。其中文件被分成若干个块,而每个块都是由一个不变的、全局惟一的64位的chunk-handle标识。Handle是由Master在块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到多个chunkserver上,一般默认3个副本。
  4. 客户端向其中的一个副本发出请求,请求指定了chunk handle(chunkserver以chunk handle标识chunk)和块内的一个字节区间。
  5. 客户端从chunkserver获得块数据,任务完成。
6.4.4 优势
  • Google采用的存储方法是大量、分散的普通廉价服务器的存储方式,极大降低了成本。
  • 对大文件数据快速存取,这个毫无疑问是可以达到的。
  • 容易扩展,它是成本很低的普通电脑,支持动态插入节点;
  • 容错能力强,它的数据同时会在多个chunkserver上进行备份,具有相当强的容错性;
  • 高效访问,它是通过Big table来实现的,它是Google File System上层的结构。GFS在实现分布式文件系统的做法上面很多都是简单的,但是确实非常高效。
  • GFS相对于HDFS稳定性是无庸置疑的,并在Google系统中得到了采用且稳定的运行。

6.5 Hadoop与MPI在数据处理上的差异

  • 每次计算开始时MPI需要从数据存储节点读取需要处理的数据分配给各个计算节点对数据进行处理,因此MPI中数据存储和数据处理是分离的;对于构建在MPI上的并行计算系统网络通讯速度一直是一个重要的性能指标;在Hadoop中有HDFS文件系统的支持,数据是分布式存储在各个节点的,计算时各节点读取存储在自己节点的数据进行处理,从而避免了大量数据在网络上的传递,实现“计算向存储的迁移”。

第七章 HPCC—面向数据的高性能计算集群系统

7.1 HPCC优点

(1)强大灵活的ECL语言,显著提升了程序员编程的效率;

(2)HPCC系统提供的Roxie集群提供了高效的在线查询和分析服务;

(3)ECL程序首先编译为优化的C++,高速性能得到保证;

(4)高效的错误恢复和冗余备份机制;

(5)稳定和可靠的系统;

(6)相对其他平台,在较低的系统消耗上实现了更高的性能。

7.2 高性能计算采用的两种方式

  • 超级计算是将复杂的计算任务分配给不同的处理器进行处理
  • 集群计算是指利用普通服务器甚至PC构建集群用于处理海量数据集,可以通过高速网络将成千上万台服务器或PC组建计算集群

7.3 高性能计算集群系统分类

7.3.1 面向计算的高性能计算
  • Beowulf集群的应用目标主要是针对计算。
7.3.2 面向数据的高性能计算
  • HPCC等大数据系统就是面向数据的高性能计算。HPCC集群的设计目的的面向海量数据处理。

7.4 HPPC系统架构

在这里插入图片描述

7.4.1 Thor
  • 数据加工处理平台
  • Thor集群的任务可以独立执行任务
Thor集群是HPCC系统的基础部件,用于对待处理的原始数据进行加工、精炼,例如:对原始数据进行数据清洗,进行数据集的ETL操作(提取、转换、加载),为高性能结构化查询和数据仓库应用创建核心数据和索引等。每个集群由一个Master节点和多个Slave节点组成,其他的组件用于构成HPCC集群环境,为ECL程序执行提供并行环境。在一个HPCC系统中,可以建立多个Thor集群。Thor在本地节点和集群内其他节点都提供了备份副本,每当有新数据添加,都会自动进行备份。Thor集群上执行的任务也可以通过分布式文件系统从其他集群导入文件。

Thor集群中的分布式文件系统是HPCC实现大数据处理的关键,通过数据在系统中预先切分并别存储于各个子节点为后面对数据的并行化处理提供方便。
7.4.2 Roxie
  • 数据查询、分析和数据仓库
  • 运行Roxie集群上的任务必须首先部署Thor集群 ,为其构建分布式索引文件
作为数据快速交付引擎的Roxie(Rapid Online XML Inquiry Engine)是一个高性能的结构化查询和分析平台,支持数高并发数据请求,快速响应请求。Roxie提供了高性能的在线结构化数据查询和分析的功能和数据仓库的功能。Roxie集群的每个节点都同时运行着Srver进程和Worker进程。Server进程主要负责等待接收查询请求,并调度执行请求。Roxie集群有自己的分布式文件系统,以索引为基础,使用分布式B+树索引文件。Roxie集群提供了强大的错误恢复和冗余备份功能,在两个或更多的节点上进行数据冗余,能在节点失效的情况下继续运行。
在HPCC编程环境中,Thor和Roxie这两种并行数据处理平台需要各自优化并相互配合,HPCC平台需要根据系统性能要求和用户的需求来决定使用两种平台各自的节点数,以获取最优性能。

7.5 HPCC平台数据检索任务的执行过程

在这里插入图片描述

1. 加载原始数据

将存储在HPCC平台以外的待处理数据加载到Thor集群,存放位置为Landing Zone,可在HPCC配置中进行查询。常用的数据加载方式有两种:

  • 一种是登录ECL Watch,通过Web方式将数据导入Thor集群;
  • 另一种方式是直接使用WinSCP等文件传输工具将输入传入相应节点的文件夹。 2. 切分、分发待处理的数据
2. 切分、分发待处理的数据

这个操作由DFU服务器控制,将数据切分并分发到各个Thor集群的存储节点,切分的时根据文件的逻辑记录结构进行切分,切分后的文件形成一个逻辑文件,供ECL编程时使用。

3. 分发后原始数据的ETL处理

对分发后的原始数据ETL是Thor集群的典型应用,包含Extract操作、Transform操作和Load操作。

  • Extract操作包含源数据映射、数据清洗、数据分析统计等操作;
  • Transform操作是对数据集的常规操作,如数据记录的合并或拆分,数据集内容的更新,格式的变化等;
  • Load操作的主要作用是为数据仓库或一些独立的查询平台建立索引,索引建立后会被加载到Roxie平台以支持在线查询。
4. 向Roxie集群发布
  • 当一个查询被部署到Roxie集群,相关的支撑数据、索引文件也被加载到Roxie分布式索引文件系统。

  • 在HPCC系统中,这个文件系统与Thor的DFS分布式文件系统是相互独立的。

第八章 基于拓扑的流数据实时计算系统——Storm

8.1 storm简介

  • 在使用Hadoop过程中,因为不满意Hadoop系统的扩展性和其代码的繁琐性,以及其粗糙的容错处理机制,提出了一种支持实时流处理、扩展机制简单的编程模型Topology,取名为Storm

  • 处理流式数据或者是批处理数据

  • Storm采用消息传递方式进行数据运算,数据传输的可靠性至关重要。Storm系统中传递的消息,主节点都会根据消息的产生到结束生成一棵消息树。

8.2 Storm编程模型原理

并行处理任务方式—流水线作业方式

Spout负责读取数据源,Bolt负责任务处理。

在Storm中每实现一个任务,用户需要构造包含Bolt、Spout组件的拓扑
在这里插入图片描述

8.3 三进程架构

  • Nimbus
  • Supervisor
  • ZooKeeper

8.4 优点

  • Storm具有很好的容错性、扩展性、可靠性和健壮性。
  • Storm并行机制灵活。
  • Storm支持多种语言。

8.5 体系结构

因为没有使用文件系统,相比于Hadoop它的架构要简单得多。Storm依然采用的是主从架构模式,即有一个主进程和多个从进程。除了这两个进程以外,还有在主进程与从进程之间进行协调的进程Zookeeper
在这里插入图片描述

8.5.1 ZooKeeper
8.5.1.1 核心

原子广播,该机制保证了各个Server之间的同步,实现这个机制的协议叫Zab协议,其有两种模式,分别是恢复模式(选主)广播模式(同步)

8.5.1.2 角色

领导者(Leader)

  • 领导负责进行投票的发起和决议,更新系统状态

学习者(Learner)

  • 跟随者(Follower) 用于接收客户端请求并向客户端返回结果,在选主过程中参与投票
  • **观察者(Observer)**接收客户端连接,将写请求转发给leader节点。但Observer不参加投票过程,只同步leader的状态。Observer目的是为了扩展系统,提高读取速度

客户端(Client)

  • 请求发起方
8.5.1.3 系统模型

在这里插入图片描述

8.6 Storm与Hadoop区别

1.数据来源

  • HADOOP处理的是HDFS上TB级别的数据历史数据,STORM是处理的是实时新增的某一笔数据实时数据;

2.处理过程

  • HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源SPOUT或处理逻辑BOLT;

3.是否结束

  • HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新数据进入时再从头开始;

4.处理速度

  • HADOOP是以处理HDFS上TB级别数据为目的,处理速度慢,STORM是只要处理新增的某一笔数据即可,可以做到很快;

5.适用场景

  • HADOOP是在要处理批量数据时用的,不讲究时效性,STORM是要处理某一新增数据时用的,要讲时效性

第九章 服务器与数据中心

9.1 数据中心的组成

数据中心主要由基础设施硬件设施基础软件管理支撑软件构成,各部分的主要组成如此下:

  1. 基础设施:机房﹑装修﹑供电(强电和UPS)﹑散热﹑布线﹑安防等部分;
  2. 硬件设施:机柜﹑服务器﹑网络设备﹑网络安全设备﹑存储设备﹑灾备设备等;
  3. 基础软件:操作系统﹑数据库软件﹑防病毒软件等;
  4. 管理支撑软件:机房管理软件﹑集群管理软件﹑云平台软件﹑虚拟化软件等。

9.2 数据中心的能耗三个级别

  1. 数据中心级(高)

    从较为宏观的数据中心级别来看,制冷系统所消耗的能源占数据中心总体能耗的比重较大,制冷系统的规划和性能对于数据中心整体能耗的影响很大。从集群软件角度来看,数据中心的任务调度和负载均衡系统是影响集群性能发挥的重要因素

  2. 节点级(中)

    节点级的能耗控制主要在于根据节点的负载状况动态调整处于工作状态的节点数量。

  3. 器件级(低)

    CPU·内存﹑硬盘等器件的能耗主要通过调整工作电压和频率的方式来控制。

9.3 能耗评估参数PUE、DCIE、IT

9.3.1 PUE

测量数据中心能耗的主要指标之一。

表示数据中心的总能耗为IT设备能耗的倍数

其值越小表示用于数据中心计算、存储等核心设备的运行的能耗比例越大,数据中心的能源效率越高。

PUE = 数据中心整体能耗 / IT设备能耗
9.3.2 DCIE

用于表示数据中心IT设备用电占总用电量的比例

DCIE是PUE的倒数,其数值小于1,越接近于1表明数据中心能源用于IT设备的比例越高,数据中心的能源效率越高。

PUE = IT设备能耗 / 数据中心整体能耗
9.3.3 IT设备的能效比

这里的IT设备指的是服务器、存储等设备,IT设备的能效比越高 IT设备每消耗单位电能所能处理、存储和交换的数据量越大;执行相同的计算、存储、通信任务IT设备的能效比越高消耗的能量就越低,设备与周围环境的热交换就越少,

IT设备的能效比 = IT设备每秒的数据处理流量 / IT设备的能耗

9.4 数据中心发展阶段

  1. 巨型机时代
  2. 微型计算机 / PC时代
  3. 互联网时代

9.5 数据中心选址考虑因素

  • 地质环境
  • 气候条件
  • 电力供给
  • 网络带宽
  • 水源条件
  • 人力资源

第十章 云计算大数据仿真技术

10.1 云仿真技术

10.1.1 CloudSim的使用模型场景
10.1.1.1 云数据中心的能耗模型
  • 云计算系统包含大量互相连接的主机、存储设备和网络设备等,维持这样庞大的系统运行需要消耗大量的电力。
10.1.1.2 云平台的经济模型
  • 云计算是基于互联网的服务的增加、使用和交付模式,通常涉及通过互联网来提供动态、易扩展且经常是虚拟化的资源。
10.1.1.3 联合云模型
  1. 公有云
  • 面向互联网大众的云服务。其受众是整个互联网环境下的所有人,只要注册缴纳一定的费用任何人都可以使用其提供的云服务。
  1. 私有云
  • 面向企业内部的云计算平台。使用其提供的云服务需要一定的权限,一般只提供给企业内部员工使用。其主要目的是合理地组织企业已有的软硬件资源,提供更加可靠、弹性的服务供企业内部使用。
  1. 混合云
  • 混合了私有云和公有云。一般像银行这样的单位,其内部的私有云系统在用户访问高峰期的时候很难满足要求,此时就可以接入到公有云中应对更多的用户请求。
  1. 联合云
  • 联合多个云服务提供商的云基础设施,向用户提供更加可靠、优惠的云服务,主要针对公有云平台。比如,部署在云平台上的CDN(内容分发网络)服务,系统存储的数据内容在地理上是分散的,用户也是分布在世界各地。联合云能够自动地将用户请求的数据资源迁移到距离用户比较近的云数据中心,提高CDN的质量保证。
10.1.1.4 CloudSim中对定价策略进行模拟划分
  1. 基础设施层
  • 这一层主要包括内存单元的价格、外存的价格、数据传输的单位成本以及计算资源的价格。
  1. 服务层
  • 这一层主要是应用程序服务使用的资源价格。如果使用者只是利用了云中的基础设施而没有在其上部署任何的应用,比如只是创建了几台虚拟机,并没有在虚拟机上运行任何的任务,那么他将不需要为服务层付费。
10.1.1.5 云存储分类
  • 公共云存储
  • 内部云存储
  • 混合云存储

能效比

这里的IT设备指的是服务器、存储等设备,IT设备的能效比越高 IT设备每消耗单位电能所能处理、存储和交换的数据量越大;执行相同的计算、存储、通信任务IT设备的能效比越高消耗的能量就越低,设备与周围环境的热交换就越少,

IT设备的能效比 = IT设备每秒的数据处理流量 / IT设备的能耗

9.4 数据中心发展阶段

  1. 巨型机时代
  2. 微型计算机 / PC时代
  3. 互联网时代

9.5 数据中心选址考虑因素

  • 地质环境
  • 气候条件
  • 电力供给
  • 网络带宽
  • 水源条件
  • 人力资源

第十章 云计算大数据仿真技术

10.1 云仿真技术

10.1.1 CloudSim的使用模型场景
10.1.1.1 云数据中心的能耗模型
  • 云计算系统包含大量互相连接的主机、存储设备和网络设备等,维持这样庞大的系统运行需要消耗大量的电力。
10.1.1.2 云平台的经济模型
  • 云计算是基于互联网的服务的增加、使用和交付模式,通常涉及通过互联网来提供动态、易扩展且经常是虚拟化的资源。
10.1.1.3 联合云模型
  1. 公有云
  • 面向互联网大众的云服务。其受众是整个互联网环境下的所有人,只要注册缴纳一定的费用任何人都可以使用其提供的云服务。
  1. 私有云
  • 面向企业内部的云计算平台。使用其提供的云服务需要一定的权限,一般只提供给企业内部员工使用。其主要目的是合理地组织企业已有的软硬件资源,提供更加可靠、弹性的服务供企业内部使用。
  1. 混合云
  • 混合了私有云和公有云。一般像银行这样的单位,其内部的私有云系统在用户访问高峰期的时候很难满足要求,此时就可以接入到公有云中应对更多的用户请求。
  1. 联合云
  • 联合多个云服务提供商的云基础设施,向用户提供更加可靠、优惠的云服务,主要针对公有云平台。比如,部署在云平台上的CDN(内容分发网络)服务,系统存储的数据内容在地理上是分散的,用户也是分布在世界各地。联合云能够自动地将用户请求的数据资源迁移到距离用户比较近的云数据中心,提高CDN的质量保证。
10.1.1.4 CloudSim中对定价策略进行模拟划分
  1. 基础设施层
  • 这一层主要包括内存单元的价格、外存的价格、数据传输的单位成本以及计算资源的价格。
  1. 服务层
  • 这一层主要是应用程序服务使用的资源价格。如果使用者只是利用了云中的基础设施而没有在其上部署任何的应用,比如只是创建了几台虚拟机,并没有在虚拟机上运行任何的任务,那么他将不需要为服务层付费。
10.1.1.5 云存储分类
  • 公共云存储
  • 内部云存储
  • 混合云存储
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值