资源描述
第一讲:云计算概述
1 什么是云计算?
云计算是一种能够将动态伸缩的虚拟化资源通过互联网以服务的方式提供给用户的计算模式。根据云提供的服务类型,可以划分为基础设施云、平台云、应用云。根据云的服务方式,可以划分为公有云、私有云、混合云。
2 云计算的优势?
优化产业布局
– 成本关键由硬件成本转为电力成本、散热成本
– 分散的、高能耗模式转变为集中的、资源友好的模式
– 自给自足资源作坊转变为规模效应的工业化资源工厂
推进专业分工
– 专业的大型云计算厂商
– 实力雄厚的科研技术团队推动硬件技术革新
– 具有丰富知识和经验的维护管理团队和配套软件
– 产业链中的新产业契机
提升资源利用率
– 更加高效的解决常规业务
– 更好的应对突发任务或事件
– 更加平衡的资源分配和负载
减少初期投资
– 更少的IT基础设施投入
– 更少的软件投入
– 更少的人力投入
– 更短的培训周期
– 更灵活的转型支持
降低管理开销
– 服务化管理
– 无需自己建立维护管理团队
– 随需应变的解决方案
– 知识、经验更加丰富的管理队伍
– 通过业务模块的可配置提高系统的灵活性
3 云计算的动因?
芯片与硬件技术
– 硬件能力的激增、成本的大幅下降,使得独立运作的公司集中客观的硬件能力实现规模效益成为可能
资源虚拟化
– 资源在云端,需要被统一的管理
– 异构硬件、兼容性问题
– 虚拟化技术应用需求
面向服务的架构SOA
– 开放式数据模型
– 统一通信标准
– 更加丰富的服务
– 更加松散耦合、灵活的IT架构
– 转变了人们对IT系统的认识
软件即服务SaaS
– 转变了人们使用服务的方式
– 使得终端用户熟悉服务的交互模式
– 改变了IT界的商业模式
– 实力雄厚的大公司负责基础设施,小企业通过创新挖掘充满潜力的市场
– “长尾理论”
互联网技术
– 基础设施
– 多种接入方式
– 更加广阔的覆盖
– 带宽和可靠性得到大幅提升
– 使得IT新模式的稳定性、可靠性、安全性、可用性、灵活性、可管理性、自动化程度、节能环保等得到保障
Web2.0技术
– 用户从信息的获得者变成信息的贡献者
– 博客(微博)、内容聚合、百科全书(Wiki)、社交网络、对等网络(P2P)
– 富互联网应用(Rich Internet Application)成为网络应用发展的趋势
– 改变了人们的生活方式
– 为云计算提出了内在需求
4 查找资料:
业界主流的云计算产品
典型的云计算应用
补充:
1 云计算特征是什么?
硬件和软件都是资源
资源可以根据需要进行动态扩展与配置
按用计费、无需管理
物理上分布式共享,逻辑上以单一整体呈现
2 云计算的发展历程?
超级计算机
集群计算
分布式计算
网格计算
效用计算
云计算
第二讲:云服务
1云服务的基本层次?
云计算的基本层次分为三层,依次为IaaS, PaaS和SaaS。
IaaS(架构即服务),提供了核心计算资源和网络架构的服务。基础设施栈包括操作系统访问、防火墙、路由和负载平衡。示例产品:Flexiscale和Amazon EC2。
PaaS(平台即服务)提供平台给系统管理员和开发人员,令其可以基于平台构建、测试及部署定制应用程序。也降低了管理系统的成本。典型服务包括Storage、Database、Scalability。示例产品:Google App Engine、AWS:S3、Microsoft Azure。
SaaS(软件即服务)通过Internet提供软件的模式,用户向提供商租用基于Web的
软件来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。示例产品:Google Docs、CRM、Financial Planning、Human Resources、Word Processing等。
2 IaaS的基本功能?
资源抽象
资源监控
负载管理
数据管理
资源部署
安全管理
计费管理
3 PaaS的基本功能?
开发平台
运行时环境
运营环境
补充:
1 IaaS服务流程?
规划阶段->部署阶段->运行阶段
2 PaaS实现步骤?
总体设计
开发平台
运行环境
运营环境
3 云平台上开发应用的优势?
– 提供高级编程接口,简单易用,缩短编程人员上手时间
– 应用的开发与运行基于相同的平台,兼容性问题较少
– 开发者无需考虑应用的可伸缩性、服务容量问题
– 平台层的运营管理功能还能够帮助开发人员对应用进行监控和计费
4 应用层的特征?
– 网络访问模式
– 租用付费
– 高度整合
第四讲:虚拟化
1 虚拟化的概念?
虚拟化是表示计算机资源的抽象方法,通过虚拟化可以用与访问抽象前资源一致的方法来访问抽象后的资源。这种资源的抽象方法并不受实现、地理位置或底层资源的物理配置限制。(wiki)
2 服务器虚拟化的特性?
多实例
– 一个物理服务器上可以运行多个虚拟服务器
– 支持多个客户操作系统
– 物理系统资源以可控的方式分配给虚拟机
隔离性
– 虚拟机之间完全隔离
– 一个虚拟机的崩溃不会对其他虚拟机造成影响
– 虚拟机之间的数据相对独立,不会泄露
– 虚拟机之间如果需要互相访问,方式等同于独立物理服务器之间的互相访问
封装性
– 硬件无关
– 对外表现为单一的逻辑实体
– 一个虚拟机可以方便的在不同硬件之间复制、移动
– 将不同访问方式的硬件封装成统一标准化的虚拟硬件设备,保证了虚拟机的兼容性
高性能
– 可通过扩展获得“无限”的性能
– 虚拟化抽象层需要一定管理开销
3 服务器虚拟化的关键技术?
计算虚拟化
–CPU虚拟化
–计算负载的动态分配
–能耗管理
存储虚拟化
–内存虚拟化
–磁盘存储动态分配
设备与I/O虚拟化
–软件方式实现
–统一、标准化的接口
–操作指令转译
实时迁移技术
–将整个虚拟机的运行状态完整、快速地从原宿主机的硬件平台转移到新的宿主机硬件平台。
4 创建虚拟化解决方案的步骤?
创建虚拟化解决方案
部署虚拟化解决方案
管理虚拟化解决方案
5 什么是数据中心?
数据中心是一整套复杂的设施,它不仅仅包括计算机系统和其它与之配套的设备(例如
通信和存储系统),还包含冗余的数据通信连接、环境控制设备、监控设置以及各种安全装
置。
6 虚拟化与云计算的关系?
虚拟化技术以及各种计算机科学概念,如效用计算、SOA等,的发展和商业实现打开了
云计算的大门,而云计算本质上说应该就是虚拟化服务。从虚拟化和云计算的过程,我们实
现了跨系统的资源调度,将大量的计算机资源组成资源池,用于动态地创建高度虚拟化的资
源提供给用户,从而最终实现应用、数据、IT 资源以服务的方式通过网络提供给客户。可以
说云计算是虚拟化的最高境界,虚拟化是云计算的底层结构。
补充:
1 虚拟化的典型类型?
基础设施虚拟化
系统虚拟化
软件虚拟化
2 虚拟化的目的
对象脱离原有环境
在计算机上被表示
通过计算机控制按需获取
第五讲:OpenStack
1 AWS模式是什么,有什么优点?
Amazon Web Services(AWS)
模式:用户应用使用IaaS基础IT资源,将PaaS和通用服务作为应用架构中的组件来构建自己的服务
特点:通过Web Service接口开放数据和功能;一切以服务实现;通过SOA框架使系统
达到松耦合。
2 IaaS模式核心需求有哪些?
云拥有者:配置和操作基础架构;服务的提供者:注册云服务、查看服务的使用情况;
查看服务的计算情况;服务的使用者:创建和存储自定义的镜像、启动监控和终止实例。
3 Openstack都包含哪些核心项目,作用是什么?
Nova(计算)、Swift(对象存储)、Glance(镜像)、Keystone(身份)、Dashboard(自
助门户)、Quantum(网络连接)、Cinder(块存储服务)。
4 镜像和实例有什么区别和联系?
镜像:固定搭配
实例:固定搭配的一个实例
镜像的存在便于对大量实例的管理,如归类、缩短选择时间、计费等
5 Nova有哪些核心模块,工作过程是什么?
Nova是一套控制器,用于为单个用户或使用群组启动虚拟机实例。将提供预制的镜像或是为用户创建的镜像提供存储机制,这样用户就能够将镜像以虚拟机的形式启动。
Nova-api:负责接收和响应终端用户有关虚拟机计算和云硬盘存储的请求,是整个Nova
的入口。
Nova-compute:主要的执行守护进程,职责是基于各种虚拟化技术实现创建和终止虚
拟机。整合了CPU/内存、存储和网络三类资源部署管理虚拟机,实现计算能力的交付。
Nova-volumn:职责是创建、挂载和卸载持久化的磁盘虚拟机。
Nova-network:职责是实现网络资源池的管理。
Nova-schedule:职责是调度虚拟机在哪个物理宿主机上部署。
AMQP消息中间件:实现服务接口与实现解耦以及子系统之间的通信。通过HTTP协议,
采用REST风格实现接口定义和响应,发送执行消息指令至队列,由具体的订阅实现模块执
行指令。
6 Keystone权限控制过程是什么?
User:用户,就是一个人的账号
Credential:用来证明用户身份的证据
Authentication:鉴权,也即对用户身份鉴别的一个过程。
Token:令牌。对用户鉴权完毕之后,Keystone会为用户颁发一个令牌,这样用户在请求其他服务的时候,只需要亮出自己的令牌即可,而不需要发送自己的密钥。当然以防仿冒
令牌,令牌是有时限的。
Service:服务,Keystone提供了系统能够提供的服务目录,例如Nova, Glance, Swift等。
Endpoint:直译为端点,其实指的是要访问的服务的地址。如果细分的话,又可以进一
步分为对外提供服务的地址,管理地址等。
Role:即赋予该用户的权限,Openstack提供的是一个多租户环境,在Openstack中租
户对应到项目(Project)。一个用户可以同时属于多个不同的项目,当然在不同的项目中可以
充当不同的角色,也即拥有不同的权限。
关键的两点:1) User从Keystone获取令牌以及服务列表;2)User访问服务时,亮出自
己的令牌,相关的服务向Keystone求证令牌的合法性。
7 Quantum原理是什么?
实现网络连接管理,解决网络虚拟化问题。
8 Swift的核心概念有哪些?
– Object:对象。基本的存储实体,所有数据按照对象进行存储。
– Container:容器。对象的装载体,组织数据的方式,存储的隔间,类似于文件夹,但不能嵌套,object存储于container中。
– Account:账户。权限单位,account拥有若干container。
9 Swift的组件有哪些,都有什么作用?
Proxy Server:提供Swift API的服务器进程,负责Swift其余组件间的相互通信
Storage Server:提供了磁盘设备上的存储服务
Consistency Server:查找并解决由数据损坏和硬件故障引起的错误,包含Auditor、Updater和Replicator
Ring:用于记录存储对象和物理位置间的映射关系
10 Ring算法思想是什么?
一致性哈希算法:Swift利用一致性哈希算法构建了一个冗余的可扩展的分布式对象存
储集群。Swift采用一致性哈希的主要目的是在改变集群的Node数量时,能够尽可能少地
改变已存在Key和Node的映射关系。 该算法的思路分为以下三个步骤。 首先计算每个节点的哈希值,并将其分配到一个0~2^32的圆环区间上。其次使用相同方法计算存储对象的哈希值,也将其分配到这个圆环上。随后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个节点上。如果超过2^32仍然找不到节点,就会保存到第一个节点上。
Replica。
Zone:把集群的Node分配到每个Zone中,其中同一个Partition的Replica不能同时放
在同一个Node上或同一个Zone内。
Weight:未来添加存储能力更大的Node时,分配到更多的Partition。
11 Quorum协议的内容是什么?
在分布式存储系统中用于控制一致性级别的一种策略。
N = numbers of nodes that store data(同一份数据的Replica的份数)
W = number of successful writes in a put request(更新一个数据对象时需要确保成功更新
的份数)
R = number of successful reads in a get request(读取数据时需要读取的Replica的份数)
W + R > N W>N/2(常用:N=3、w=R=2)
第六讲:云存储
1 大规模数据存储面临的新问题与挑战
– 成本问题
– 容量问题
– 可靠问题
– 使用问题
2 GFS体系结构
Client:GFS提供给应用程序的库文件形式访问接口;Master:GFS的管理节点,逻辑上
只有一个,保存系统元数据;Chunk Server:GFS的数据存储节点,大小固定(64MB)。采
用中心服务器模式,不缓存数据,在用户态下实现,提供专用的访问接口。
Master节点任务:存储元数据;文件系统目录管理与加锁;与ChunkServer进行周期性
通信;数据块创建、复制与负载均衡;垃圾回收;陈旧数据块删除。
3 GFS的容错机制
Master容错
– 三类元数据:命名空间(目录结构)、Chunk与文件名的映射以及Chunk副本的位置信息。
– 前两类通过日志提供容错,Chunk副本信息存储于Chunk Server,Master出现故障时可恢复。
Chunk Server容错
– 每个Chunk有多个存储副本(通常是3个),分别存储于不通的服务器上。
– 每个Chunk又划分为若干Block(64KB),每个Block对应一个32bit的校验码,保证数据正确(若某个Block错误,则转移至其他Chunk副本)。
4 Paxos协议
分布式环境下保持一致性的协议。
– 决议(value)只有在被proposers 提出后才能被批准,未经批准的决议称为“提案(proposal)”。
– 在一次Paxos算法的执行实例中,只批准(chosen)一个value。
– learners 只能获得被批准(chosen)的value。
5 Chubby锁机制
Chubby是Google为解决分布式一致性问题而设计的提供粗粒度锁服务的文件系统。Chubby系统本质上就是一个分布式的、存储大量小文件的文件系统。Chubby中的锁就是文
件,创建文件就是进行加锁操作。用户通过打开、关闭和存取文件,获取共享锁或独占锁,
并且通过通信机制,向用户发送更新信息。
6 Chubby的通信协议
操作的允许授权是通过限时的、倒计时“租期”系统来处理的。
7 Bigtable数据结构
– 分布式多维映射表
– 通过行关键字+列关键字+时间戳进行索引
– Bigtable对存储的数据不做解析,看做字符串,具体数据结构实现需要用户自行处理
– 每行数据有一个可排序的关键字和任意列项;
– 可将多个列归并为一组,称为“族”,同一个族的数据被压缩在一起保存。
– 逻辑上的表被划分成若干子表,每个子表存储了table的一部分行(每个子表由多个SSTable文件组成,SSTable文件存储在GFS上)
8 Bigtable优化机制
局部性群组
– 根据需要,将原本不存储在一起的数据,以列族为单位存储至单独的子表。
布隆过滤器
– 判断某个元素是否隶属于集合。
合并压缩
– 合并压缩操作读取多个SSTable,创建一个新的SSTable来保持其中的最新数据。
9 云存储应用的特点
通用的设备支持;数据同步与共享;任意格式/大小文件;免费+付费。
第七讲:MapReduce算法原理
1 Mapreduce算法的架构
每个mapreduce 任务都被初始化为一个job ,每个 job 分为两个阶段,实现了Map 和Reduce两个功能:
Map :把一个函数应用于集合中所有成员,然后返回一个基于这个处理的结果集。
Reduce:对结果集进行分类和归纳。
2 Wordcount算例
自动分割文本。
分割后的每一对<key,value> 进行用户定义的map处理,生成新的<key,value>对。
系统自动对输出结果集归拢排序,传给reduce。
通过reduce 生成最后结果。
3 Hadoop执行MR的过程
master 节点运行jobTracker 实例,接收客户端job请求,一个job 是对一个数据集的处理,slave 节点运行 TaskTracker 实例,一个 task 是一次map或者reduce处理过程。
MR 程序由一个 jar 文件和一个 xml 文件组成,jar 包含程序代码,xml 包含程序配置操作。
客户端设定配置之后,交 job ,将job 数据发送到 jobTracker 的文件系统中,Mapreduce库会把所输入文件分割成 M 块,放到不同的 datanote 上。
JobTracker 将 job 放入队列进行调度,并把 jar 和配置文件放到共享空间
Hadoop 有一个机器内进程间操作通信的机制,taskTracker 周期性告诉 jobTracker 工作状
态,如果空,job 给 task 分配任务,开一个进程处理。
MR 程序被传送到各个数据所在的 HDFS 的 datanote 上运行,mapper 被输送到数据节点上进行计算,中间结果被输送到 reducer 上进行计算,Reducer 将计算结果分布式保存到HDFS。
当所有 map 和 reduce 任务完成时,master 会唤醒用户程序,通知任务完成,再取执行新的任务。
4 MR算法执行过程中的数据流转过程
用户文件上传到HDFS,由mapreduce 库切割分别存储到datanote 上
以行号,文本形式传入map 中,经过自定义map 处理产生<key,value> 对,构成中间结
果集缓存在本地内存中。
reducer 接到master 的收集中间结果集任务后,通过远程调用读取中间结果,并将其排
序,key 相同的value 进行合并处理化简。
最终结果写入到GFS 文件系统中
补充:
1 什么是MapReduce?
一个软件架构,是一种处理海量数据的并行编程模式;
用于大规模数据集(通常大于1TB)的并行运算;
MapReduce实现了Map和Reduce两个功能:
– Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集
– Reduce对结果集进行分类和归纳
– Map()和Reduce() 两个函数可能会并行运行,即使不是在同一的系统的同一时刻
2 MapReduce的优化?
– 任务备份机制
– 本地处理
– 跳过有问题的记录
3 MapReduce中的术语?
job:MapReduce的一整个过程
task:在一个job中,每个mapper和每个reducer做的事情
task attempt:运行一个task。
主节点运行JobTracker实例,它接受来自客户端的工作要求。JobTracker的主要功能包括:
作业控制:在hadoop中每个应用程序被表示成一个作业,每个作业又被分成多个任务,JobTracker的作业控制模块则负责作业的分解和状态监控。
资源管理。
taskTracker实例运行在slave节点。TaskTracker的功能包括:
汇报心跳:Tracker周期性将所有节点上各种信息通过心跳机制汇报给JobTracker。
执行命令:JobTracker会给TaskTracker下达各种命令,主要包括:启动任务(LaunchTaskAction)、提交任务(CommitTaskAction)、杀死任务(KillTaskAction)、杀死作业(KillJobAction)和重新初始化(TaskTrackerReinitAction)。
第八讲:MapReduce算法应用
1 Mapreduce算法设计思想
任务的分解与结果的汇总。
2 运用mapreduce算法解决实际问题
词频:
WordCount 基础上map 函数中,加入<*,num> 键值对,一次mapreduce 过程得到每个词出现的个数及总数
inverted index (若干文本文件- > 倒排索引结果):
map 输出:<{token,fileID},one>
combiner 输出:<{token,fileID},sum >
reduce 输出:<key,value> = <word ,articleId:num >
计算文本相似度:
— 进行倒排索引
—计算两两文章对的相似性
map:同一个词对应的文章链表中,两两文章构成一组<{article1,article2},num>
reduce:进行收集
—统计文章相似度
3 算法调优
给shuffle过程尽可能多的内存空间;Map和Reduce函数尽量少用内存;运行Map和
Reduce任务的JVM 的内存尽量大;Map端尽量估算Map输入的大小,减少溢出写磁盘的
次数;Reduce端的中间数据尽可能的多驻留在内存;增加Hadoop的文件缓冲区。
4 Mapreduce运行过程中的各种参数及其作用
缓冲区大小(100MB);缓冲区容量阈值(0.8);最多合并流数(10);溢出写次数最小
值(3);压缩标志(false);压缩方式;TaskTracker的工作线程数(40);Reduce任务复制线程(5);Reduce获取一个Map输出最大时间(300s);Map输出内存缓冲区占堆空间的百分比(0.7);缓冲区溢出阈值(0.66);Map输出阈值(1000);合并因子(10);输入内存阈值(0.0);Hadoop文件缓冲区(4KB)
5 参数调优
将map输出作为输入传给reducer,确保每个reducer的输入都按键排序的过程叫shuffle,shuffle是调优的重点。
Map
— 产生输出时,通过缓冲写入内存:缓冲区大小,容量阈值,指定路径
— 按照要传送到的reducer 对数据进行partirion ,每个partition 内部按照key 进行键
内排序:合并流数;
— 压缩map 输出效率更高:压缩标志;压缩方式
— reducer 通过http 方式从map 处得到输出文件分区,分区的工作线程数由tasktracker
控制:工作线程数(tracker.http.threads )
Reduce
— 只要一个map 任务完成,reduce 任务就开始复制其输出:复制线程数;获取map
最大时间
— 若map 输出小,复制到内存中;否则先写入到内存缓冲区,达到阈值后写到磁盘:
内存缓冲区占堆空间百分比;溢出阈值;map 输出阈值;
— 后台线程根据合并因子将其合并成更大的排好序的文件:合并因子
— reduce 开始时,内存中map 输出大小不能超过输入内存阈值,以便为reduce ᨀ供
尽可能多的内存:输入内存阈值
— 输出结果写入HDFS系统:hadoop文件缓冲区大小
6 案例的mapreduce算法
第九讲:Hadoop
1 Hadoop项目的由来
起源于一个开源的网络搜索引擎项目Apache Nutch,借鉴GFS,实现了一个开源的实现HDFS,05年nutch上实现了一个mapreduce系统,完成了所有主要算法的mapreduce+HDFS移植。
2 HDFS的体系结构
采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干DataNode组成,其中NameNode作为主服务器, 管理文件系统的命名空间和客户端对文件的访问操作。DataNode管理存储的数据。
HDFS允许用户以文件的形式存储数据, 文件被分成若干个数据块, 而且这若干个数据块存放在一组DataNode上。NameNode是整个HDFS的核心, 它通过维护一些数据结构来记录每一个文件被分割成了多少个块、这些块可以从哪些DataNode中获得, 以及各个DataNode的状态等重要信息。NameNode 执行文件系统的命名空间操作, 如打开、关闭、重命名文件或目录等, 也负责数据块到具体DataNode的映射。DataNode负责处理文件系统客户端的文件读写操作, 并在 NameNode 的统一调度下进 行数据块的创建、删除和复制操作。
3 HDFS的运行机制
可靠性保障:
冗余机制——数据复制
故障检测——datanode (心跳包,块报告,数据完整性监测)namenode(日志和镜像)
读文件流程:
–客户端调用DistributedFileSystem对象的open()方法
– DistributedFileSystem通过RPC联系namenode,得到所有数据块信息,对每个数据块,namenode返回存有该块副本的datanode地址,并且这些datanode根据他们与客户端的距离进行排序
– DistributedFileSystem类返回一个FSDataInputStream对象给客户端并读取数据
–客户端对该对象调用read()方法读取数据
– FSDataInputStream连接距离最近的datanode读取数据,数据读取完毕时FSDataInputStream会关闭与该datanode的连接,然后寻找下一个块的datanode
– FSDataInputStream可能并行读取多个datanode,当客户端完成读取时,对FSDataInputStream调用close()方法
— FSDataInputStream从datanode读取数据时如果遇到错误,会尝试从该块的另外一个最近的datanode读取数据,并记住故障datanode保证以后不会继续从该节点读取其他块
– 每个读取的块通过校验和确认以保证数据完整
– 如果FSDataInputStream发现一个损坏的块,则在从其他datanode读取块之前通知namenode
写文件流程:
– 客户端调用DistributedFileSystem对象的create()方法创建文件
– DistributedFileSystem通过RPC联系namenode,namenode执行各种检查确保待建立的文件不存在,且客户端拥有创建该文件的权限
– 如果检查通过,namenode为新文件创建一条记录,否则抛出一个IOException异常
– DistributedFileSystem给客户端返回一个FSDataOutputStream对象进行写数据
– FSDataOutputStream将待写入数据分成数据包并写入内部队列dataqueue
– DataStreamer处理dataqueue,根据datanode列表要求namenode分配适合的新块来存储数据备份
– namenode分配的数据备份datanode(通常3个)形成一个管线,DataStreamer将数据包传输给管线中的第一个节点,然后该节点存储完之后发送给第二个节点,以此类推
– FSDataOutputStream维护一个确认队列ackqueue,当收到管线中所有datanode的确认后,该数据包从确认队列中删除
– 如果datanode发生故障,则关闭管线,将确认队列中的数据包添加回数据队列的最前端,将故障的数据块和datanode信息返回给namenode以便该datanode恢复后删除错误数据块,从管线中删除错误节点,并把剩余数据块写入正常datanode
– 如果复本数量不足,则namenode根据datanode分配新的datanode并创建新的复本,该datanode被加入管线继续正常存储
4 Htable的数据结构
行:每行数据有一可排序的关键字和任意列项;不同行的列的数目可以大不相同
列:用“族”来定义;“族:标签”;物理上将同族数据存储在一起;数据可以通过时间
戳区分版本
5 Hbase的运行机制
数据存储实体为区域,表按照水平的方式划分为一个或多个区域,每个区域有一个随机id ,且区域内行为键值有序的。区域以分布式方式存储在集群内。通过区域服务器运行:
写:写数据首先写入“预写日志”;先缓存,再批量写入;完成后在日志中做标记
读:区域服务器先在缓存中查找,找到则直接服务;
合并:映射文件数量超过阈值,则区域服务器进行合并
分割:区域文件大过阈值时,按照行方式对半分割;在元信息表中生成子元信息表;主
服务器在得知分割后,将子表分配给新的区域服务器服务
失效恢复:将失效服务器的区域分配给其他服务器,原“预写”日志进行分割并分配给
新的区域服务器
6 ZooKeeper的数据读写机制
ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用。
ZooKeeper是一个由多个Server组成的集群,一个Leader,多个Follower(每个Server都保存了一份数据副本;全局数据一致;分布式读写;更新请求转发,由Leader实施)。
一些约定:更新请求顺序执行;数据更新原子性;全局唯一数据视图;实时性。
7 Yarn对Hadoop的核心改进
原框架中的JobTracker和TaskTracker 被ResourceManager, ApplicationMaster 与NodeManager取代。
ResourceManager是一个中心的服务, 它做的事情是调度、启动每一个Job所属的
ApplicationMaster 、另外监控 ApplicationMaster 的存在情况。
NodeManager功能比较专一, 就是负责Container状态的维护, 并向RM 保持心跳。
ApplicationMaster负责一个Job生命周期内的所有工作,类似老的框架中JobTracker。可以运行在resourceManager以外的机器上
改进后的优点:
减少了jobTracker也即resourceManager的资源消耗,让监测每一个Job子任务(tasks)状态的程序分布式化
ApplicationMaster 是一个可变更的部分, 用户可以对不同的编程模型写自己的AppMst,让更多类型的编程模型能够跑在Hadoop集群中
对于资源的表示以内存为单位,比以task 任务数目分配更加合理
客户端调用API或者接口,程序框架改变后不再需要被强制更新。
补充:
1 Pig和HDFS
HDFS——存储海量数据
Pig——数据流语言和运行环境,用以检索非常大的数据集
展开阅读全文