[TOC]
hadoop 存储模式,主要架构特点,起源组件,HDFS技术特征,编程题一个;
虚拟化产品,服务器虚拟化技术,虚拟机迁移,
openstack主要组件,nova,swife做什么,openstack做什么
hadoop
2.0包含 hadoop HDFS,Mapreduce,Hbase,Zookeeper,Pig
- 应用范围:构建大型分布式集群,数据仓库,数据挖掘
- 有三种部署环境:单机模式不需要与其他节点交互,不需要使用HDFS,直接读写本地的文件系统;伪分布式系统:在一台单机上运行,用不同的进程模仿分布式的各类节点;分布式模式:在不同的机器上部署系统
- 完全模式部署Hadoop时,最低需要两台机器(一个主节点,一个从节点),此外,硬件方面,每台机器最低要求有1GB内存,20GB硬盘空间
体系架构
common:是为其他模块的公共组件,定义了程序员取得集群服务的编程接口,为其他模块提供公共API;降低Hadop设计的复杂性,减少其他模块之间的耦合性,增强的hadoop的健壮性
Common功能:提供公用API和程序员编程接口,本地Hadoop库(Native Hadoop Library),超级用户superuser,服务级别认证,http认证
HDFS 分布式存储
HDFS为了提高扩展性,采用了master/slave架构来构建分布式存储集群,很容易向集群中任意添加
文件分块存储
真正的文件I/O时客户端直接和datanode交互
- NameNode使用事务日志(EditLog)记录HDFS元数据的变化,使用映象文件(FsImage)存储文件系统的命名空间
- 事务日志和映象文件都存储在NameNode的本地文件系统中。
- 将新的元数据刷新到本地磁盘的新的映象文件中,这样可以截去旧的事务日志,这个过程称为检查点(Checkpoint)
- HDFS还有Secondary NameNode节点,它辅助NameNode处理映象文件和事务日志。
- HDFS的拓扑结构:
- 一般拓扑:只有单个NameNode节点,使用SecondaryNameNode或BackupNode节点实时获取NameNode元数据信息,备份元数据。
- 商用拓扑:有两个NameNode节点,并使用ZooKeeper实现NameNode节点间的热切换
HDFS的内部特性
- 冗余备份
- HDFS将每个文件存储成一系列数据块(Block),默认块大小为64MB(可配置)。
- 为了容错,文件的所有数据块都会有副本(副本数量即复制因子,可配置)。
- HDFS的文件都是一次性写入的,并且严格限制为任何时候都只有一个写用户。
- 副本存放:HDFS集群一般运行在多个机架上,不同机架上机器的通信需要通过交换机
- 副本选择:HDFS会尽量使用离程序最近的副本来满足用户请求,这样可以减少总带宽消耗和读延时。
- 心跳检测:NameNode周期性地从集群中的每个DataNode接受心跳包和块报告,收到心跳包说明该DataNode工作正常;NameNode周期性地从集群中的每个DataNode接受心跳包和块报告,收到心跳包说明正常工作;NameNode会不断检测这些需要复制的数据块,并在需要的时候重新复制。
- 数据完整性检测:HDFS客户端软件实现了对HDFS文件内容的校验和检查(Checksum)。DataNode获得的数据块对应的校验和隐藏文件中的不同,客户端就会判定数据块有损坏,将从其他DataNode获取该数据块的副本
- 元数据磁盘失效: 映象文件和事务日志是HDFS的核心数据结构。NameNode可以配置为支持维护映象文件和事务日志的多个副本。 任何对映象文件或事务日志的修改,都将同步到它们的副本上。
- 简单一致性,流数据访问:HDFS的应用程序一般对文件实行一次写、 多次读的访问模式。HDFS上的应用主要以流式读为主,做批量处理;更注重数据访问的高吞吐量。
- 客户端缓存:客户端创建文件的请求不是立即到达NameNode,HDFS客户端先把数据缓存到本地的一个临时文件,程序的写操作透明地重定向到这个临时文件;当这个临时文件累积的数据超过一个块的大小(64MB)时,客户端才会联系NameNode。
- 流水线复制:当客户端准备写数据到HDFS的文件中时,数据一开始会写入本地临时文件。DataNode从前一个节点接收数据的同时,即时把数据传给后面的节点,这就是流水线复制
- 架构特征:HDFS被设计为运行在普通硬件上,所以硬件故障是很正常的。错误检测并快速自动恢复是HDFS的最核心设计目标。
- 超大规模数据集:HDFS支持大文件存储,而且提供整体上高的数据传输带宽。l 一个单一的HDFS实例应该能支撑数以千万计的文件,并且能在一个集群里扩展到数百个节点
YArn操作系统:
调度策略
- 容量调度算法:CapacityScheduler是一种多用户多任务调度策略,它以队列为单位划分任务,以Container为单位分配资源,它也是Hadoop 2.0默认的调度策略,为多个用户共享集群资源提供安全可靠的保障容量调度策略通过队列来划分资源;队列间关系类似于一棵多叉树,队列间一层层继承,根队列称为root队列,Yarn初次启动时默认启动队列为root.default队列
- 公平调度策略:FairScheduler是一种允许多个Yarn任务公平使用集群资源的可插拔式调度策略;会将资源分配给集群中所有的任务;
安全策略
定登录用户(服务)是否是其声称的用户(服务)实现Hadoop用户认证
hadoop编程接口
hadoop组件
虚拟化技术
服务器虚拟化 存储虚拟化 网络虚拟化 桌面虚拟化
服务器虚拟化
虚拟化层次;完全虚拟化:完全虚拟化具有很好的兼容性,在服务器虚拟化中得到广泛应用;半虚拟化:半虚拟化技术降低了由于虚拟化而引入的系统性能损失
- CPU虚拟化:1)虚拟CPU的正确运行是要保证虚拟机指令正确运行,现有的实现技术包括模拟执行和监控执行; 2)调度问题是指VMM决定当前哪个虚拟CPU在物理CPU上运行,要保证隔离性、 公平性和性能;
- 内存虚拟化:把物理内存同一管理,包装成多个虚拟的物理内存提供给若干虚拟机使用,每个虚拟机拥有各自的独立内存空间;
- I/O设备虚拟化:把真实的设备统一管理起来,包装成多个虚拟设备给若干个虚拟机使用,响应每个虚拟机的设备访问请求和I/O请求 同样是由VMM管理
虚拟机迁移
虚拟机迁移是将虚拟机实例从源宿主机迁移到目标宿主机,并且在目标宿主机上能够将虚拟机运行状态恢复到其在迁移之前相同的状态,以便能够继续完成应用程序的任务
– 实时迁移:保持虚拟机运行的同时,把它从一个计算机迁移到另一个计算机,并在目的计算机恢复运行的技术
– 内存迁移是最困难的部分:
– 网络资源的迁移:迁移时VM的所有网络设备,包括协议状态(如TCP连接状态)以及IP地址都要随之一起迁移;
– 存储设备的迁移:需要占用大量时间和网络带宽,通常的解决办法是以共享的方式共享数据和文件系统,而非真正迁移;作为存储设备共享数据
虚拟机隔离技术
虚拟机隔离是指虚拟机之间在没有授权许可的情况下,互相之间不可通信、 不可联系的一种技术
网络隔离:l 构建虚拟机安全文件防护网;l 基于访问控制的逻辑隔离机制;
l通过硬件虚拟:让每个虚拟机无法突破虚拟机管理器给出的资源限制;l 硬件提供的内存保护机制;l 进程地址空间的保护机制,IP地址隔离。
- 内存隔离:MMU技术;管理虚拟存储的控制线路,管理物理存储器的控制线路,提供硬件机制的内存访问控制
- 网络隔离:在于系统对通信数据的控制,即通过不可路由的协议来完成网间的数据交换
- 专用通信设备 专有安全协议 加密验证机制 应用层数据提取和鉴别认证技术
- 产品介绍:vmware面向云计算的一系列产品和解决方案
- 将虚拟机状态信息压缩存储在共享存储器的文件中
- ② 将虚拟机的动态内存和执行状态通过高速网络在源ESX服务器和目标ESX服务器之间快速传输
- ③ 虚拟化网络以确保在迁移后虚拟机的网络身份和连接能保留
存储虚拟化
虚拟化存储系统在原有存储系统结构上增加了虚拟化层,将多个存储单元抽象成一个虚拟存储池,存储单元可以是异构,可以是直接的存储设备,也可以是基于网络的存储设备或系统
- 基于主机的存储虚拟化:服务器的存储虚拟化或者基于系统卷管理器的存储虚拟化,其一般是通过逻辑卷管理来实现的,性价比较高,性能低下,可扩展性差,不支持异构平台
- 基于存储设备的存储虚拟化:存储设备的磁盘、 适配器或者控制器上实现虚拟化功能。
- 基于网络的存储虚拟化:在网络设备上实现存储虚拟化功能,包括基于互连设备和基于路由器两种方式:基于路由器的虚拟化在性能、 效果和安全方面都要好一些::::缺点:如果连接主机到存储网络的路由器出现故障,也可能会使主机上的数据不能被访问,但是只有与故障路由器连接在一起的主机才会受到影响,其余的主机还是可以用其他路由器访问存储系统,且路由器的冗余还能够支持动态多路径。
- vmfs:产品:
- 磁盘锁定:锁定已启动的虚拟机的磁盘,以避免多台服务器同时启动同一虚拟机
- 故障一致性和恢复机制:用于快速识别故障的根本原因,帮助虚拟机,物理机和存储设备从故障中恢复
- 逻辑映射:得虚拟机能够直接访问物理存储子系统
网络虚拟化
数据中心网络虚拟化分为核心层、 接入层和虚拟机网络虚拟化三个方面
数据中心内网传输效率低,使用云计算后,数据同步传送的大流量,备份大流量,虚拟机迁移采用统一的交换网络减少网络布线,和维护工作量和扩容成本
- 核心层网络虚拟化,主要指的是数据中心核心网络设备的虚拟化
- 接入层虚拟化,可以实现数据中心接入层的分级设计。 根据数据中心的走线要求,接入层交换机要求能够支持各种灵活的部署方式和新的以太网技术:(优先级流量控制PFC,链路发现协议,增强传输选择ETS,拥塞通知)
桌面虚拟化
第一代桌面虚拟技术实现了在同一个独立的计算机硬件平台上,同时安装多个操作系统,并同时运行这些操作系统
第二代桌面虚拟化技术进一步将桌面系统的运行环境与安装环境、 应用与桌面配置文件进行了拆分,从而大大降低了管理复杂度与成本,提高了管理效率
OpenStack
既是一个社区,也是一个项目和一个开源软件,提供了一个部署云的操作平台或工具集
NASA的nova和rackspace公司的Swift
OpenStack是一个管理计算、 存储和网络资源的数据中心云计算开放平台,通过一个仪表板,为管理员提供了所有的管理控制,同时通过Web界面为其用户提供资源。
计算服务(Nova)、 存储服务(Swift)、镜像服务(Glance)网络管理服务Quantum 6.存储管理服务Cinder7.仪表盘Horizon
Nova
Nova处理OpenStack云中实例(instances)生命周期的所有活动。 这样使得Nova成为一个负责管理计算资源、 网络、 认证、 所需可扩展性的平台。
– API 对外接口与云设施交互
– Message Queue(Rabbit MQ Server):通过消息队列AMQP完成通信
– Compute Worker管理实例的生命周期,通过Message Queue 接受实例的生命周期管理请求,并承担操作工作
– Network Controller:处理主机的网络配置,包括IP地址分配,为项目配置VLAN,实现安全组,配置计算节点网络
– Volume Worker:管理LVM的实例卷,新建卷,删除卷,为实例附加卷
– Scheduler调度器把Nova-API调用映射为OpenStack组件,调度器作为一个Nova的守护进程运行
Libvirt的主要目标是为各种虚拟化工具提供一套方便、 可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式
RabbitMQ是一种处理消息验证、 消息转换和消息路由的架构模式,它协调应用程序之间的信息通信,并使得应用程序或者软件模块之间的相互意识最小化,有效实现解耦
RabbitMQ适合部署在一个拓扑灵活易扩展的规模化系统环境中,有效保证不同模块、 不同节点、 不同进程之间消息通信的时效性;l RabbitMQ特有的集群HA安全保障能力可以实现信息枢纽中心的系统级备份,同时单节点具备消息恢复能力
Swift
可扩展的对象存储系统
Proxy Server、 Storage Server和Consistency Server
Proxy Server是提供Swift API的服务器进程,负责Swift其余组件间的相互通信。
Storage Server提供了磁盘设备上的存储服务
Consistency Server 目的是查找并解决由数据损坏和硬件故障引起的错误
云数据中心
网络部署
- 改进型树结构:核心,汇聚,接入
消除了树形结构上层链路对吞吐量的限制;l 为内部节点间通信提供多条并行链路 -
递归层次结构:构建高层次网络时,需要的低层网络的个数等于每个低层网络中的服务器个数加1,其拓扑结构如图所示
- 光交换网络:
- 软件定义网络
节能
DVFS节能技术
当CPU未被完全利用时,通过降低CPU的供电电压和时钟频率主动降低CPU性能,这样可以带
来立方数量级的动态能耗降低,并且不会对性能产生影响。
2.基于虚拟化的节能技术
允许在一个主机上创建多个虚拟机,因此减少了硬件资源的使用数量,改进了资源利用率。
3.基于主机关闭/开启的节能技术
基于主机关闭/开启技术的节能策略可以分为随机式策略、 超时式策略和预测式策略三类
云计算核心算法
Paxos算法
一致性解决算法:processor可以担任三个角色“proposer” 、 “accepter” 和“learner”中的一个或多个角色
一致性判断: 一个value被proposer提出之后才可以被choose
每次只有一个value被choose
value只有被choose后才可以被learners获取
DHT算法
DHT分布式哈希表采用Hash函数加速了查找速度和增强了安全性,而且便于管理,同时不会占用太多的网络带宽
\过DHT层的LookUp(Key)操作,可以把应用层的数据均匀分布在网络的各个节点内,这种方法使下层网络完全不受中心控制
Gossip算法
分布式容错 最终一致性 去中心化
冗余通信会大大增加网络和CPU的负载并进一步影响算法收敛的速度
易受感染(Susceptible):单元不了解信息,但可以接受到这条信息
传染(Infective)单元知道(接收到)信息,按照指定规则进行传播。
恢复(Recovered)单元知道(接收到)信息,但不进行转发。
发表回复