第一章 分布式计算
定义:
分布式计算是研究把一个需要非常巨大的计算能力解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把各部分的计算结果合并起来得到的最终成果(分而治之)。
分布式计算的优缺点:
优点:
1、低廉的计算机价格和 络访问的可用性
2、资源共享
3、可伸缩性
4、容错性
缺点:
1、多点故障
2、安全性低
分布式计算的相关形式:
1、单机计算:利用单台计算机进行计算,此时计算机不与任何 络连接,因而只能使用本计算机系统内可被即时访问的所有资源。
2、并行计算:采用多个处理器来执行单个指令。并行计算是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。
3、 络计算: 络计算的概念较宽泛。 络计算的核心思想是,把 络连接起来的各种自治资源和系统组合起来,以实现资源共享、协同工作和联合计算,为各种用户提供基于 络的各类综合性服务。
4、 格计算:利用互联 把地理上广泛分布的各类资源(计算、存储、宽带、软件、数据、信息、知识等)连成一个逻辑整体,就像超级计算机,为用户提供一体化信息和应用服务(计算、存储、访问)。
5、云计算:这个概念是由Google公司提出。云计算是一种资源交付方式,使用虚拟化技术为核心。云计算的主要形式包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
经典分布式系统项目:
www
www是目前为止最大的分布式系统。它是由许多个相互链接的超文本组成的系统,通过互联 访问。它不等同于互联 ,www只是互联 所提供的服务之一,是靠互联 运行的一项服务。www是建立在客户机/服务器(C/S)模型之上的。
(除了www之外,还有很多其他的分布式计算项目——SETI@home、BOINC)
分布式系统的特征
1、可靠性
2、可用性
3、可扩展性
4、高效性
5、CAP理论:任何分布式系统在可用性、一致性、分区容错性方面不能兼得,最多只能得其二。因此,任何分布式系统大的设计只能在三者中有不同的取舍。
分布式计算的基础技术
进程间通信
分布式计算的核心是进程间通信(IPC),相互独立的进程间通信及共同完成某项任务的能力。
IPC机制:两个运行在不同计算机上的独立进程(进程A和进程B),通过互联 交换数据,其中进程A是发送者,进程B是接收者。
在分布式计算中,两个或多个进程按约定的某种协议进行IPC,数据通信各参与进程必须遵守的一组规则。操作系统为IPC提供了相应的设施,我们称之为系统级IPC设施,如消息队列、共享内存等。
第二章 分布式计算范型:
1、客户/服务器范型
客户/服务器范型是 络应用中使用最多的一种分布式计算范型,该模式将非对称角色分配给两个协作进程。其中,服务器进程扮演服务器提供者角色,被动地等待请求的到达,客户进程向服务器发起请求,并等待服务器响应。
2、P2P范型
P2P 络是无中心服务器, 依赖用户群交换的互联 体系。与客户/服务器结构的系统不同,在P2P 络中,每个用户端既是一个结点,又有服务器的功能,任何一个结点无法直接找到其他结点,必须依靠其 用户群进行信息交流。 在P2P的范型中,各参与进程的地位是平等的,具有相同的性能和责任。每个参与者(进程) 都可以向另一个参与者发起请求和接收响应。在一个基于P2P范型的分布式应用中,每一个 参与的进程往往既承担服务器进程的角色,又承担客户进程的角色。
3、消息系统范型
消息系统范型或面向对象的中间伯(MOM)是在基本的消息传递范型的基本上扩展而来的。 在这种范型中,消息系统充当一些相当独立的进程之间的中介。不同的进程以非耦合的方式,通过消息系统异步地交换消息。消息发送者在发送消息时,将一条消息放入消息系统 中,后者接着将该消息转发到与各个接收者相应的消息接收队列时,一旦消息发送出去, 发送者即可执行其它任务了。
消息系统范型进一步划分为两种子类型:点对点消息范型和发布/订阅消息范型
4、远程过程调用范型
对于基本的 络协议和基本的 络应用程序来说,消息传递范型是适用的。但是,随着应 用程序变得越来越复杂,需要为 络编程提供进一步的抽象。最好有一种范型能使开发人 员可以像编写在单处理器上运行的传统应用程序一样,编写分布式软件系统。远程过程调 用(RPC)范型就是提供了这种抽象。利用这一抽象,可以采用与本地过程调用类似的思 想与概念,以进行进程间通信。
5、分布式对象范型
远程方法调用: 远程方法调用(RMI)是面向对象版本的PRC。在该范型中,进程可以调用对象方法,而该对象可驻留于某远程主机中。与RPC一样,参数可随方法调用传递,也可提供返回值
对象请求代理:对象请求代理范型由对象请求者,对象提供者和对象请求代理范型中,进程向对象请 求(ORB)组成。
6、 络服务范型
络服务范型由服务请求者,服务提供者(对象)和目录服务三者组成。 络服务范型的 工作原理为:服务提供者将自身注册到 络上的目录服务器上;当服务请求者(进程)需 访问服务时,则在运行时与目录服务器联系;然后,如果请求的服务可用,则目录服务器 将向目录服务进程提供一个有关该服务的引用;最后,进程利用该引用来与所需的服务进行交互。
7、移动代理范型
移动代理一种可移动的程序或对象。在移动代理范型中,一个代理从源主机出发,然后根据其自身携带的执行路线,自动地在 上主机间移动。在每一个主机上,代理访问所需的 资源或服务,并执行必要的任务来完成其使命。 一个移动代理的典型应用系统实例为Agent Tcl。
8、云服务范型
云计算的三种服务模型: 基础设施即服务(IaaS) 平台即用力(PaaS) 软件即服务(SaaS)
第五章 Web原理与应用开发
HTTP协议
www是到目前为止最著名的分布式应用。它具有强大的信息连接功能www是一种基于HTTP的客户/服务器应用系统,属于客户/服务器范型的分布式计算应用。
TCP/IP传输控制协议)是Internet最基本的协议和Internet国际互联 络的基础。TCP/IP有 络接口层、 络层、传输层、应用层组成。其中HTTP是应用层的重要协议之一。
HTTP协议原理
HTTP是面向连接(基于TCP)、无状态的请求应答协议,也是一个客户端和服务端请求和应答的标准。通过使用Web浏览器、 络爬虫或者其他工具,客户端发起一个HTTP请求到服务器的指定端口, 络服务的默认端口为80,也可以指定为其它为占用的端口。web浏览器向web服务器发送请求,web服务器处理请求并返回适当的应答。
通信过程
在一次完整的HTTP的通信过程中,web浏览器与web服务器之间将完成7个步骤:
1、建立TCP连接
2、web浏览器向web服务器发送请求命令。
3、web浏览器发送请求头消息
4、web服务器应答
5、web服务器发送应答头消息
6、web服务器向浏览器发送数据
7、web服务器关闭TCP连接
HTTP请求
当浏览器向web服务器发出请求时,它向服务器传递了一个数据块,即请求信息,HTTP请求信息由3个部分组成:
1、请求方法URI协议/版本:HTTP请求可以使用多种请求方法。例如HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE。在Internet中最常用的方法是GET和POST。
2、请求头:包含许多有关客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言、请求正文的长度等。
3、请求正文:请求头和请求正文之间是一个空行,这个空行非常重要,它表示请求头已经结束,接下来是请求正文。
HTTP应答
HTTP应答与HTTP请求相似,HTTP响应也由3个部分组成:
1、协议状态/版本:所用协议版本
2、响应头:包含许多信息,如服务器类型、日期时间、内容类型和长度等
3、响应正文:服务器返回的HTML页面
(响应头与正文之间必须用空行分隔)
HTTPS
HTTPS(超文本传输安全协议)是HTTP的安全版,是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上传输的。HTTP用于在web浏览器和 站服务器之间传递信息。
Web开发技术
HTML
HTNL即超文本标记语言,用于描述 页。它不是一种编程语言,而是一种标记语言。HTML文件的结构包括头部和主体两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。
JavaScript
JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,使用它的目的是与HTML、Java脚本语言一起实现在一个web页面中链接多个对象,与web客户交互作用,从而可以开发客户端的应用程序。它是通过嵌入或调入标准HTML语言中实现的。
CSS
级联样式表(CSS)用于进行 页风格设计。通过设立CSS,可以统一地控制HTML中各标志的显示属性。CSS更有效地控制 页外观,提高精确指定 页元素位置、外观以及创建特殊效果的能力。
XML
可扩展标记语言(XML)是一种类似与HTML的标记语言,主要用于结构化文档信息。XML用于传输和存储数据,即传输数据而非显示数据。XML没有预定义标签,需要自行定义标签。
动态 页技术
动态 页与静态 页的区别就在于 页与用户之间是否有交互反馈的过程,如动态 页上的留言板、点击数等。采用动态 页技术的同一 页能够对不同用户的同样操作做出不同的反应,而静态 页没有交互过程,呈现给用户的是同一无差别的页面。
动态 页技术有:JSP、ASP、PHP、CGI等。
Cookie机制原理
在程序中,会话跟踪是很重要的事。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作应该属于另一个会话,二者不会产生干扰。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论用户A是什么时间购买的,这都是属于同一个会话,不能放入用户B或用户C的购物车内。
web应用程序是使用HTP传输数据的。HTP是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话,即用户A购买了一件商品并放入购物车内,但再次购买商品时,服务器已经无法判断该购买行为是属于用户A的会话还是属于用户B的会话。要跟踪该会话,必须引入cookie机制。
Session机制原理
session是另一种记录客户状态的机制,使用起来比cookie简单一些。与cookie不同的是,cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器时,服务器把客户端信息以某种形式记录在服务器上。客户端浏览器再次访问是只需要从该session中查找该客户的状态就可以了。
Servlet
JavaServlet是一种作为单独文件跟 页一起发送的小程序,通常在服务器端运行,可提
供为用户进行运算或者根据用户互作用定位图形等服务。
Servlet实现过程:
1、客户端发送请求至服务器端
2、服务器将请求信息发送给servlet
3、servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端请求。
4、服务器将响应返回给客户端
Applet
Applet是可通过Internet下载并在接收计算机上运行的一小仙程序。Applet通常用Java语言编写并运行在浏览器软件中,典型应用为万维 页页面定制或添加交互格式元素。可以直接嵌入 页或者其它特定的容器中,并能够产生特殊的效果。
applet工作原理:
含有Applet的 页的HTML文件代码中部带有 和这样一对标记,当支持Java的 络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的 页被称为Java-powered页,可以称其为Java支持的 页。
SSH框架与应用开发
SSH(Struts+Spring+Hibernate)不是一个框架,而是多个框架的集成,是目前较流行的一种web应用程序开源集成框架,用于构建灵活、易于扩展的多层次web应用程序。集成SSH框架的系统从职责上分为4层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。
Struts作为系统的整体基础构架,负责mvc的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对数据持久层提供支持。
Struts架构的工作原理
Struts是最早的java开源框架之一,它是MVC设计模式的一个优秀实现。 Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts -config.xml)隔离Model(模型)和View(视图),以Action的概念以对用户请求进行了封装,使代码更加清晰易读。 Struts还提供了自动将请求的数据填充到对象中以及页面标签等简化编码的工具。 Struts能够开发大型Java Web项目。
Struts技术基于MVC框架,Struts的实现依赖Servlet和JSP实现。EJB和JavaBean两个组件是Struts框禁业务功能实现的基础部件:Action和ActionServlet部件是框架实现控制力能的重要部件:视图部分则是由若干存在内在联系的JSP文件有机构成,实现系统功能。其工作原理如下:
1)使用者通过浏览器客户端发送HTIP协议的数据请求。
2)HITP请求到达服务器后,经过控制器,使用框架结构填充FormBean。
3)经过填充的数据请求通过框架中控制器的Action组件进行数据业务处理。
4)经过控制器处理过的业务数据调用Stuts的基础部件实现业务逻辑。
5)将业务逻辑经过转换形成JSP业务进行处理,井将处理结果反或
6)用户在客户端或者浏览器上得到HTTP请求的响应
Spring
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
优点:
1、低侵入式设计,代码污染极低
2、独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
3、Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦
4、Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部
Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
第六章 P2P原理与实践
P2P概念:peer-to-peer,含义“点对点”或者“端对端”,而学术界称它为“对等计算”。P2P 络是一种在IP 络之上的应用层的分布式 络, 络的参与者即为对等节点(peer)共享他们所拥有的一部分硬件资源(如处理能力、存储能力、 络连接等)。P2P 络中的peer既是资源的提供者,又是资源的获取者。
P2P特点
1、非中心化
2、可扩展性
3、健壮性
4、高性价比
5、私密性
6、流量均衡
P2P 络分类
1、中心化拓扑结构
中心化拓扑结构指的是 络中资源和服务的索引都存储在中心服务器目录
中,而资源和服务本身则存储在 络中的各结点中,若一个客户需要访问某资源,则需要先直接或间接地访问中心服务器,中心服务器通过索引检索存有该资源的具体结点的信息,然后请求者与这些存有所需资源的结点连接,最后实理对资源的访问。
特点:适合小型 络,便于管理和控制
2、全分布式非结构化拓扑结构
全分布式非结构化拓扑结构的P2P 络是一种重叠 络,重叠 络是在现有的 络体系架构上新加一层虚拟 络,并将虚拟 络中的每个结点与实际 络中的一些结点相连,从而实现与实际 络中各结点的联通。
虚拟结点与实际 络结点的连接采用随机的方式,但数量上呈幂指法则(指个体的规模与其名次之间存在着幂次方的反比关系),从而能够较快地检索到目的结点。
特点:性能波动较大,容错性好,支持复杂查询。
3、全分布式结构化拓扑结构
DHT 络的优点
(1)能够自适应结点的动态加入或退出
(2)具有良好的可扩展性、鲁棒性、结点ID分配均匀性和自组织能力
(3)可以精确定位目标结点
DHT 络的缺点
(1)系统维护比较困难
(2)缺失复杂查询机制
4、半分布式拓扑结构
混合的半分布式拓扑结构:吸取了中心化和全分布式非结构化拓扑结构的优点,选择性能较高的结点作为超级结点,在这个结点上存储了系统中其他部分结点的信息,检索算法仅在超级结点间转发,超级结点再将查询请求转发给适当的叶子结点。
特点:性能好,可扩展性好,支持复杂查询,易于管理维护
第八章 云计算原理与技术
云计算分类
云计算按照提供服务的类型可以分为
1、基础设施即服务(IaaS)——领域代表者(Amazon)
云计算的基础,为上层云计算服务提供必要的硬件资源,同时在虚拟化技术的支持下,创建虚拟的计算、存储中心,使得其能够把计算单元、存储器、I/O设备、带宽等计算机基础设施,集中起来成为一个虚拟的资源池来对外提供服务。虚拟化技术是IaaS的关键技术。
2、平台即服务(PaaS)——领域代表者(Google)
PaaS的关键技术包括并行编程模型、海量数据库、资源调度与监控、超大型分布式文件系统等分布式并行计算平台技术。
3、软件即服务(SaaS)——领域代表者(Salesforce)
云计算要求硬件资源和软件资源能够更好地被共享,具有良好的伸缩性,任何一个用户能够按照自己的需求进行定制而不影响其他用户的使用。多租户技术就是云计算环境中能够满足上述需求的关键技术,而软件资源共享则是SaaS的服务目的,用户可以使用按需定制的软件服务,通过浏览器访问所需的服务,如处理文字、照片管理等,而且不需要安装此类软件。
SaaS的价值:
降低中小企业信息化的门槛
降低企业用户运营成本
提供灵活的租赁方式
承载平台:
1、直接部署在底层物理资源上
2、SaaS层部署在PaaS和IaaS平台之上
云计算关键技术
云计算可以按需提供弹性的服务,他的体系构架大致分为3个层次:核心服务层、服务管理层、用户访问接口层。
核心服务层
核心服务层通常分为3个子层:IaaS、PaaS、SaaS
IaaS:提供硬件基础设施部署服务,为永华按需提供尸体或虚拟的计算、存储和 络等资源。
PaaS:是云计算应用程序运行环境,提供应用程序部署与管理服务。
SaaS:是基于云计算基础平台所开发的应用程序。
服务管理层
服务管理层为核心服务层的可用性、可靠性和安全性提供保障。服务管理包括服务质量保证和安全管理等。
用户访问接口层
用户访问接口层实现了云计算服务的泛在访问,通常包括命令行、web服务、web门户等形式。
数据存储
云计算环境下的数据存储,通常称为海量数据存储,或大数据存储。
DAS
DAS是指将存储设备通过SCSI(小型计算机系统专用接口)接口或光纤通道直接连接到一台计算机上。顾名思义,这是为了小型计算机设计的扩充接口,它可以让计算机加装其他外设设备以提高系统性能或增加新的功能。
优点:
1、连接简单:集成在服务器内部;点到点的连接;距离短;安装技术要求不高
2、低成本需求:SCSI总线成本低
3、较好的性能
4、通用的解决方案:DAS的投资低,绝大多数应用可以接受
缺点:
1、有限的扩展性:SCSI总线的距离最大25米;最多15个设备
2、专属的连接:空间资源无法与其他服务器共享
3、备份和数据保护:备份到与服务器直连的磁带设备上,硬件失败将导致更高的恢复成本
4、TCO(总拥有成本高):存储容量的加大导致管理成本上升存储使用效率低
SAN
SAN通过光线通道直接连接到一群计算机上。它是用在服务器与存储资源之间的、专用的、高性能的 络体系,为实现大量原始数据的传输而进行了专门的优化。
优点:
1、实现存储介质的共享
2、非常好的扩展性
3、易于数据备份和恢复
4、实现备份磁带共享
5、LAN Free和Server Free
6、高性能
7、支持服务器群集技术
8、容灾手段
9、低的TCO
缺点:
1、成本较高
2、需要专用的连接设备如FC交换机以及HBA
3、SAN孤岛
4、技术较为复杂
5、需要专业的技术人员维护
NAS
NAS是将存储设备连接到现有的 络上,提供数据和文件服务,应用服务器直接把File I/O请求通过LAN传给远端NAS中的文件系统,NAS中的文件系统发起Block I/O到NAS直接的磁盘。NAS主要面向高校的文件共享任务,适用于那些需要 络进行大容量文件数据传输的场合。
优点:
1、资源共享
2、构架于IP 络之上
3、部署简单
4、较好的扩展性
5、异构环境下的文件共享
6、易于管理
7、备份方案简单
8、低的TCO
缺点:
1、扩展性有限
2、带宽瓶颈,一些应用会占用带宽资源
3、不适应某些数据库的应用
RAID
磁盘阵列是有很多价格较为便宜的磁盘组合而成的一个容量巨大的磁盘组,可利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,可将数据切割成许多区段,分别存放在各个磁盘上。
RAID 0
RAID 0是没有容错设计的条带磁盘阵列,以条带形式将RAID阵列的数据均匀分布在各个阵列中。RAID0没有磁盘冗余,一个磁盘失败导致数据丢失。
总容量 = 磁盘数量 * 磁盘容量
RAID 1
RAID 1以镜像作为冗余手段,模拟磁盘中的数据有多个副本,放在成员磁盘上,具有100%的数据冗余,但磁盘空间利用率置邮50%。
总容量 = (磁盘数量 / 2)* 磁盘容量
RAID 3
RAID 3以XOR校验为冗余方式,只有一个磁盘损坏的情况下,RAID 3能通过校验数据恢复损坏磁盘,但在两个以上磁盘同时损坏的情况下,RAID 3不能发挥数据校验功能。
总容量 = (磁盘数量 – 1)* 磁盘容量
RAID 5
RAID 5以XOR检验为冗余方式,校验数据均匀分布在各个数据磁盘上,对各个数据磁盘的访问为异步操作。相对于RAID 3,RAID 5改善了校验盘的瓶颈。
总容量 = (磁盘数量 – 1)* 磁盘容量
RAID 6
RAID 6能够允许两个磁盘同时失效的RAID级别系统。、
总容量 = (磁盘数量 – 2) * 磁盘容量
RAID 10
RAID 10(镜像阵列条带化)是将镜像和条带组合起来的组合RAID级别,最低一级是RAID镜像对,第二级别为RAID 0。
总容量 = (磁盘数量 / 2)* 磁盘容量
RAID 50
RAID 50是将镜像和条带组合起来的组合RAID级别,最低一级是RAID镜像对,第二级别为RAID 0。
总容量 = (磁盘数量 – 1 )* 磁盘容量
磁盘热备
热备份是指在建立RAID磁盘阵列系统的时候,将其中一个磁盘指定为热备磁盘,此热备磁盘在平常并不操作,当阵列中某一磁盘发生故障时,热备磁盘便取代故障磁盘,并自动将故障磁盘的数据重构在热备磁盘上。
热备磁盘分为全局热备盘和局部热备盘。
快照
快照是某一个时间点上的逻辑卷的映像,逻辑上相当于整个快照源卷(base volume)的副本。可将快照卷分配给任何一台主机。快照卷可读取、写入或复制,需要相当于快照源卷的20%的额外空间,主要用途是利用少量存储空间保存原始数据的备份,文件、逻辑卷恢复及备份、测试、数据分析等。
第十一章 大数据技术与实践
大数据定义
大数据一词由英文“big data”翻译而来,是最近几年兴起的概念,目前还没有一个统一的定义。相比于过去的“信息爆炸”的概念,它更强调数据量的“大”。大数据的”大“是相对而言的,是指所处理的数据规模巨大到无法通过目前主流数据库软件工具处理,在可以接受的时间内完成抓取、存储、管理和分析,并从中提取出人类可以理解的信息。”大“是与时俱进的,不能以具体的数据量来界定大数据与普通数据。
大数据的4V特征
业界普遍认同大数据具有4V特征:数据量大Volume、变化速度快Velocity、多类型Variety与高价值Value
1、Volume是大数据的首要特征,数据体量巨大。当今世界需要进行及时处理以提取有用信息的数据数量级已经从TB级别,跃升到PB甚至EB级别。
2、Variety:数据类型繁多。大数据的挑战不仅是数据量的大,也体现在数据类型的多样化。除了前文提到的 络日志、地理位置信息等具有固定结构的数据之外,还有视频、图片等非结构化数据。
3、Velocity:处理速度快。信息的价值在于及时,超过特定时限的信息就失去了使用的价值。
4、Value:商业价值高,但是价值密度低。单个数据的价值很低,只有大量数据聚合起来处理才能借助历史数据预测未来走势,体现出大数据计算的价值所在。
大数据存储平台
HDFS
HDFS(全称Hadoop Distributed File System)原是Apache开源项目Nutch的组件,现在成为是Hadoop的重要组件,它是一款具有高容错性特点的分布式文件系统,它被设计为可以部署在造价低廉的主机集群上。它将一个大文件拆分成固定大小的小数据块,分别存储在集群的各个节点上。因此HDFS可以存储超大的数据集和单个巨大的文件。这样的分布式结构能够进行不同节点的并行读取,提高了系统的吞吐率。同一个数据块存储在不同的数据节点上,保证了HDFS在节点失败时还能继续提供服务,使其具有了容错性。
HDFS设计目标:
1、检测和恢复硬件故障
2、存储大数据集
3、应用程序流式地访问HDFS上的数据集。
4、由于大部分MapReduce 程序对HDFS上的文件是一次写入,多次读取的
5、可移植性
6、让计算机数据的位置而移动
HBase
Apache HBase是运行于Hadoop平台上的数据库,它是可扩展的、分布式的大数据储存系统。HBase可以对大数据进行随机而实时的读取和写入操作。它的目标是在普通的机器集群中处理巨大的数据表,数据表的行数和列数都可以达到百万级别。受到Google Bigtable 思想启发,Apache开发出HBase, HBase是一个开源的、分布式的、数据多版本储存的、面向列的大数据储存平台。Google的Bigtable是运行于GFS(Google File System)上的,而HBase是运行与Apache开发的Hadoop平台上。
HBase的特性包括:
1)线性和模块化的扩展性;
2)严格的读写一致性;
3)自动且可配置的数据表分片机制;
4)RegionServer之间可以进行热备份切换;
5)为MapReduce操作HBase数据表提供方便JAVA基础类;
6)易用的JAVA客户端访问API;
7)支持实时查询的数据块缓存和模糊过滤;
8)提供Trift 关和REST-ful Web服务,并支持XML,Protobuf和二进制编码;
9)可扩展的Jrubyshell;
10)支持通过Hadoop检测子系统或JMX导出检测数据到文件、Ganglia集群检测系统。
Cassandra
Cassandra是 交 络理想的数据库,适合于实时事务处理和提供交互型数据。以Amazon的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型,P2P去中心化的存储,目前twitter和digg中都有使用。在CAP特性上(CAP即Consistnecy 一致性,Avaliability 可用性,Partition-tolerance分区容忍性),HBase选择了CP,Cassandra更倾向于AP,而在一致性上有所减弱。
Redis
Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。
Redis是一个支持持久化的内存数据库(与Memcache类似),也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库 数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。
大数据计算模式
PRAM
PRAM模型,即并行随机存取机,也称之为SIMD-SM(共享存储的单指令流多数据流)模型,是一种应用于并行计算抽象模型RAM模型是顺序的冯·诺伊曼存储程序模型的自然扩展,由若干具有本地存储器的处理器和一个具有无限容量的共享存储器组成,处理器由公共的时钟进行控制,以同步方式运行。
优点:
RPAM结构简单,简便易行;
PRAM能够表达大多数并行算法
PRAM让算法设计变得简单;让并行算法更加容易移植到不同的并行系统上;
可以按需加入一些诸如同步和通信等功能/p>
缺点:
1)PRAM是一个同步模型,其同步过程很费时的;
2)模型中使用了一个全局共享存储器,且本地存储容量较小,不能很好的体现当前比较多见的分布主存多处理机的性能瓶颈;
3)单一共享存储器的假定,不适合于异步分布存储的MIMD机器;
4)假定每个处理器均可在单位时间内访问任何存储单元,因此要求处理机间通信无延迟、无限带宽和无开销,忽略多个处理器在访问同一存储空间的竞争问题以及处理器读写存储单元带宽有限性等实践中普遍存在的问题,这一假设显然是不现实的;
5)不能很好地描述多线程技术和流水线预取技术,这两种技术当今并行体系结构应用最普遍的技术。
BSP
BSP(Bulk Synchronous Parallel)模型,由哈佛大学Viliant和牛津大学Bill McColl提出,希望像冯·诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。本质上,BSP模型是分布存储的MIMD计算模型,被认为是最有前途的并行计算模型。
一个BSP计算机由n个处理机/存储器组成,通过通信 络进行互联,。一台BSP并行计算机包含三个部分组成:并行计算模块、通信模块、路障同步模块。
logP
LogP模型是一种分布存储的、点到点通信的多处理机模型,其中通信 络由4个主要参数来描述:
L(Latency) 表示源处理机与目的处理机进行消息(一个或几个字)通信所需要的等待或延迟时间的上限,表示 络中消息的延迟。
o(overhead)表示处理机准备发送或接收每个消息的时间开销(包括操作系统核心开销和 络软件开销),在这段时间里处理不能执行其它操作。
g(gap)表示一台处理机连续两次发送或接收消息时的最小时间间隔,其倒数即微处理机的通信带宽
P(Processor)处理机/存储器模块个数。
LogP模型假定一个周期完成一次局部操作,并定义为一个时间单位,那么,L,o和g都可以表示成处理器周期的整数倍。
LogP模型的主要特点有:
1)抓住了 络与处理机之间的性能瓶颈。
2)处理机之间异步工作,并通过处理机间的消息传送来完成同步
3)对多线程技术有一定反映
4)消息延迟不确定,但延迟不大于L
5)LogP模型鼓励编程人员采用一些好的策略
6)可以预估算法的实际运行时间。
LogP模型的不足之处有:
1)对 络中的通信模式描述的不够深入。
2)简单地认为远地读操作相当于两次消息传递,未考虑流水线预取技术、Cache引起的数据不一致性以及Cache命中率对计算的影响。
3)未考虑多线程技术的上下文开销。
4)LogP模型假设用点对点消息路由器进行通信,这增加了编程者考虑路由器上相关通信操作的负担。
MapReduce
MapReduce是Google公司提出的一种用于大规模数据集(大于1TB)的并行运算的编程模型。
执行流程
(1)数据分片
(2)Master分配Map任务
(3)分配了map任务的worker读取和处理相关split的内容
(4)Master协调分配reducer到相应Mapper获取数据,期间称为Shuffle,包括一个按Key排序过程。
(5)Reducer对每个Key相应的Value列表进行读取并处理
(6)Reducer将处理后的文件写入HDFS输出文件
优点:
1、移动计算而不是移动数据,避免了额外的 络负载。
2、任务之间相互独立,实现高容错性。
3、理想状态下可线性扩展的,是为便宜的商业机器而设计的计算模型。
4、MapReduce模型结构简单,终端用户至少只需编写Map和Reduce函数。
5、集群扩展代价曲线平坦。
缺点:
1、一个中心用于同步各个任务。
2、用MapReduce模型来实现常见的数据库连接操作效率低下。
3、MapReduce集群管理、调试、部署以及日志收集工作困难。
4、单个Master节点有单点故障的可能性。
5、当中间结果必须给保留的时候,作业的管理并不简单。
6、对于集群的参数配置调优需要较多经验。
大数据分析处理平台
Impala
Impala是CDH(Cloudera Distribution with Apache Hadoop)的一个组件,是一个对大量数据并行处理(MPP-Massively Parallel Processing)的查询引擎。
HadoopDB
HadoopDB旨在结合MapReduce的可扩展性优势和并行数据库的性能、效率优势,以管理和分析大数据。HadoopDB背后的基本思想是,连接多个单节点数据库系统 (PostgreSQL),使用 Hadoop 作为任务协调者和 络通信层;查询用 SQL 表达,但是其执行是使用 MapReduce 框架跨节点并行化的,以便将单一查询工作尽可能推送到相应的节点数据库中。
HadoopDB的基本原理是,利用Hadoop对部署在集群中多个单一结点上的DBMS服务器进行读取。
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8667 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!