分布式概论课程知识总结2

1,什么是分布式计算?什么是并行计算?分布式计算与并行计算的区别?

 

分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果

并行计算是相对于串行计算来说的。可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。并行计算的目的就是提供单处理器无法提供的性能(处理器能力或存储器),使用多处理器求解单个问题。

区别:(1)并行计算借助并行算法和并行编程语言能够实现进程级并行(如MPI)和线程级并行(如openMP)。而分布式计算只是将任务分成小块到各个计算机分别计算各自执行。(2)粒度方面,并行计算中,处理器间的交互一般很频繁,往往具有细粒度和低开销的特征,并且被认为是可靠的。而在分布式计算中,处理器间的交互不频繁,交互特征是粗粒度,并且被认为是不可靠的。并行计算注重短的执行时间,分布式计算则注重长的正常运行时间。

 

2,什么是并发与并行?并发与并行有什么区别?

并行:当系统有一个以上CPU时,则线程的操作有可能非并发.当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)

并发:如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态.这种方式我们称之为并发(Concurrent).

区别:并发就是一个处理器同时处理多个任务,并行就是多个处理器或者是多核的处理器同时处理多个不同的任务。

 

3,RPC 是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,RPC采用客户机/服务器模式。请阐述一下RPC远程调用流程图。

运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:

1.调用客户端句柄;执行传送参数

2.调用本地系统内核发送网络消息

3.消息传送到远程主机

4.服务器句柄得到消息并取得参数

5.执行远程过程

6.执行的过程将结果返回服务器句柄

7.服务器句柄返回结果,调用远程系统内核

8.消息传回本地主机

9.客户句柄由内核接收消息

10.客户接收句柄返回的数据

 

4,什么是SOAP协议,SOAP协议与HTTP协议有什么关系?请说明SOAP消息结构?

 

简单对象访问协议(SimpleObject Access Protocol,SOAP),是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。webService三要素(SOAP, WSDL (Web Services Description Language),UDDI( UniversalDescription Discovery and Integration ))之一, soap用来传递信息的格式,WSDL 用来描述如何访问具体的接口,uddi用来管理,分发,查询webService具体实现可以搜索 Web Services简单实例 ; SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象

 

SOAP和HTTP的关系:

SOAP采用了已经广泛使用的两个协议:HTTP 和XML。HTTP用于实现 SOAP 的RPC 风格的传输, 而XML 是它的编码模式。采用几行代码和一个XML 解析器, HTTP 服务器( MS 的 IIS 或 Apache) 立刻成为SOAP 的 ORBS。SOAP 通讯协议使用 HTTP 来发送XML 格式的信息。HTTP与RPC 的协议很相似,它简单、配置广泛,并且对防火墙比其它协议更容易发挥作用。HTTP 请求一般由 Web 服务器软件(如 IIS 和Apache)来处理, 但越来越多的应用服务器产品正在支持HTTP。XML 作为一个更好的网络数据表达方式( NDR)。SOAP 把 XML 的使用代码化为请求和响应参数编码模式, 并用HTTP 作传输。具体地讲, 一个SOAP 方法可以简单地看作遵循SOAP编码规则的HTTP请求和响应, 一个 SOAP终端则可以看作一个基于HTTP的URL, 它用来识别方法调用的目标。像CORBA/ IIOP一样, SOAP不需要具体的对象绑定到一个给定的终端,而是由具体实现程序来决定怎样把对象终端标识符映像到服务器端的对象。

 

SOAP消息结构:

<?xml version="1.0"?>

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>

...

</soap:Header>

<soap:Body>

...

<soap:Fault>

...

</soap:Fault>

</soap:Body>

</soap:Envelope>

 

5,在GFS中变动操作是一种改变chunk内容或者chunk的原数据的操作,,比如改写或者增加操作。请详细解释这个更改的控制流过程。


1.客户端向 master 请求当前 chunk 的令牌位置以及其他所有副本的位置。如果没有chunkserver持

有这个 chunk 的令牌,则 master 选择一个 chunk 副本授权一个令牌(在图上没有标出)

2. master 给出应答,包括了primary 和其他副本位置(secondary)标记。客户端 cache 这些数据,

用于以后的变动。只有当 primary 不能访问或者 primary 返回它不再持有令牌的时候,客户端才需

要重新联系 master。

3.客户端把数据发布给每一个副本。客户端可以以任意顺序发布这些数据。每一个chunkserver都

在内部的 LRU 缓冲中 cache 这些数据,这些数据一旦被提交或者过期就会从缓冲中去掉。通过把

数据流和控制流的分离,我们可以不考虑哪个chunkserver是 primary,通过仔细调度基于网络传

输的代价昂贵的数据流,优化整体的性能。3.2 节进一步讨论了这个。

4.当所有的副本都确认收到了数据,客户端发起一个写请求给 primary。这个请求标记了早先发给

所有副本的数据。primary 分配一系列连续的序列号给所有的收到的变动请求,这个可能是从好

多客户端收到的,这提供了必要的序列化。primary 按照这个序列号顺序变动他自身本地的状态。

5.prmary把写请求发布到所有的secondary 副本。每一个 secondary 副本都依照和 primary 分配的

相同的序列号顺序来进行变动的提交。

6. secondary 副本全部都给primary 应答,表示他们都已经完成了这个操作。

7. primary 应答给客户端。如果有任何副本报告了任何错误,都需要报告给客户端。在发生错的情况下,写入者会在 primary 成功但是在 secondary 副本的某些机器上失败。(如果在 primary 失败,不会产生一个写入的序列号并且发布序列号)。客户端请求就是由失败的情况,并且修改的区域就有不一致的状态。我们的客户端代码是通过重试改动来处理这些错误。

6,什么是MapReduce? 请描述Map/Reduce工作过程

MapReduce是Google的一项重要技术,它是一个编程模型,用以进行大数据量的计算。

对于大数据量的计算,通常采用的处理手法就是并行计算。

Map/Reduce工作过程

在Map/Reduce框架中,每一次计算请求,被称为作业。在分布式计算Map/Reduce框架中,

为了完成这个作业,它进行两步走的战略,首先是将其拆分成若干个Map任务,分配到不

同的机器上去执行,每一个Map任务拿输入文件的一部分作为自己的输入,经过一些计算生成某种格式的中间文件,这种格式,与最终所需的文件格式完全一致,但是仅仅包含一分数据。因此,等到所有Map任务完成后,它会进入下一个步骤,用以合并这些中间文件获

得最后的输出文件。此时,系统会生成若干个Reduce任务,同样也是分配到不同的机器去执行,它的目标,就是将若干个Map任务生成的中间文件为汇总到最后的输出文件中去。经过如上步骤,最终,作业完成,所需的目标文件生成。整个算法的关键,就在于增加了一

个中间文件生成的流程,大大提高了灵活性,使其分布式扩展性得到了保证。

 

7,Hadoop整体架构设计中,假定节点失效是常态。请描述以下三个节点失效情况i)DataNode中的磁盘坏了,ii) DataNode机器宕机了,iii)NameNode宕机了. Hadooop系统是如何处理的?

i:DataNode正常服务,坏掉的磁盘上的数据尽快通知NameNode

ii:

*        问:NameNode怎么知道DataNode挂掉了?

*        答:datanode每3秒钟向namenode发送心跳,如果10分钟datanode没有向namenode发送心跳,则namenode认为该datanode已经dead,namenode将取出该datanode上对应的block,对其进行复制。

iii:

*        将NameNode的fsimage与edit log从Namenode复制到临时目录

*        将fsimage同edit log合并,并产生新的fsimage(减少启动时间)

*        将产生的新的fsimage上传给NameNode

*        清除NameNode中的edit log

注:持久化元数据:

*        操作日志(edit log)

*        记录文件创建,删除,修改文件属性等操作

*        Fsimage

*        包含完整的命名空间

*        File -> Block的映射关系

*        文件的属性(ACL, quota, 修改时间等)

Secondary NameNode仅仅对NameNode中元数据提供冷备方案

 

8,我们通过BigTable来存储网内容,假设一个Web网页URL是http://hadoop.apache.org/,行名是一个反向URL, contents列族存放网页内容,现在系统有三个时间戳t1,t2,t3对应的网页内容“<html>.. “

请画出该网页在BigTable中对应的逻辑视图。

 

Row Key

Time Stamp

Column Contents

org.apache.hadoop

t3

“<html>..”

t2

“<html>..”

t1

“<html>..”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值