林子雨大数据技术原理及应用第三章课后作业答案
大数据第三章课后作业
201708 2017152418 张明旭
1.试述分布式文件系统设计的需求。
(1)透明性
包括访问透明性、位置透明性、性能和伸缩透明性;访问透明性:用户不需要专门区分哪些是本地文件,哪些是远程文件。用户能够通过相同的操作来访问本地和远程文件资源;位置透明性:不改变路径名的前提下,不管文件副本数量和实际存储位置发生何种变化,对用户而言都是透明的;性能和伸缩透明性:系统中节点的增加和减少以及性能的变化对用户而言是透明的,用户感觉不到什么时候节点加入或退出;
HDFS 只能提供一定程度的访问透明性,完全的位置透明性、性能和伸缩透明性。
(2)并发性
客户端对于文件的读写不应该影响其他客户端对同一文件的读写;
HDFS机制非常简单,任何时候只允许有一个程序写入某个文件。
(3)文件复制
 一个文件可以拥有不同位置的多个副本
HDFS采用多副本机制。
(4)硬件和操作系统异构性
可以在不同的操作系统和计算机上实现同样的客户端和服务器端程序; 
HDFS 采用JAVA,具有很好的跨平台性。
(5)可伸缩性
支持节点的动态加入和退出; 
HDFS建立在大规模廉价机器上的分布式文件系统集,具有良好的可伸缩性。
(6)容错
保证文件服务器在客户端或服务器出现问题的时候能正常使用;
  HDFS 具有多副本机制和故障自动检测 恢复机制。
(7)安全
无法复制文件保障系统的安全性;
 HDFS 安全性较弱。
2.分布式文件系统是如何实现较高水平的扩展的?
分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集。
3.试述HDFS中的块和普通文件系统中的块的区别。
HDFS中的块比普通文件系统中的块大很多。且在HDFS中如果一个文件小于数据块的大小,它并不占用整个数据存储块的空间。
4.试述HDFS中的名称节点和数据节点的具体功能。
名称节点:负责文件和目录的创建删除和重命名等,管理数据节点和文件块的映射关系。
数据节点:负责数据的存储和读取。
5.在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的。
名称节点不参与数据的传输。
6.HDFS只设置唯一一个名称节点,在简化系统的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面。
1)命名空间的限制:
名称节点是保存在内存中,因此名称节点能够容纳对象(文件,块)的个数受到内存空间大小的限制
2)性能的瓶颈
整个分布式文件系统的吞吐量受限于单个名称节点的吞吐量
3)隔离问题
由于集中只有一个名称节点,只有一个命名空间,因此无法为不同应用程序
进行隔离
4)集的可用性
一旦唯一的名称节点发生故障,会导致整个集不可用
7.试述HDFS的冗余数据保存策略。
HDFS采用多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分不到不同的数据节点上。
8.数据复制主要是在数据写入和数据恢复的时候发生,HDFS数据复制是使用流水线复制的策略,请阐述该策略的细节。
这个文件首先被写入本地,被切分成若干个块,每个块向HDFS集中名称节点发起写请求,名称节点会将各个数据节点的使用情况,选择一个数据节点列表返回给客户端,当第一个数据节点接收块的时候,写入本地,并且向第二数据节点发起连接请求,把自己的接收的块传给第二个数据节点,依次类推,列表中的对个数据节点形成一条数据复制的流水线。最后数据写完后,数据复制同时完成
9.试述HDFS是如何探测错误发生以及如何进行恢复的。
(1)名称节点出错:
1)把名称节点的元数据信息同步存储到其他文件系统;
2)可以把第二名称节点作为不就措施
一般会把两者结合使用,其他文件系统的元数据信息放到第二名称节点进行恢复,并把第二名称节点作为名称节点使用(这样做仍然会有一部分数据丢失)
(2)数据节点出错:
数据节点定期向名称节点发送心跳信息,向名称节点报告状态,如果名称节点没有收到某些数据节点时,这时名称节点将这些数据节点标记为宕机,由于这些数据节点不可用导致一些数据块的副本数据量小于冗余因子时,就会启动数据冗余复制,生成新的副本
(3)数据出错:
网络传输和磁盘错误等因数都会造成数据的错误,客户端读取数据后,会采用md5对数据块进行校验,以正确读取到正确的数据。如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并向名称节点报告这个文件错误,名称节点会定期检查并重新复制这个块
10.请阐述HDFS在不发生故障的情况下读文件的过程。
1) 使用HDFS提供供的客户端Client, 向远程的Namenode发起RPC请求;
2) Namenode会视情况返回文件的部分或者全部block列表, 对于每个block, Namenode都会返回有该block拷贝的DataNode地址;
3) 客户端Client会选取离客户端最近的DataNode来读取block; 如果客户端本身就是DataNode,那么将从本地直接获取数据;
4) 读取完当前block的数据后, 关闭当前的DataNode链接, 并为读取下一个block寻最佳的DataNode;
5)当读完列表block后, 且文件读取还没有结束, 客户端会继续向Namenode获取下一批的block列表;
6) 读取完一个block都会进行checksum验证, 如果读取datanode时出现错误, 客户端会通知Namenode, 然后再从下一个拥有该block拷贝的datanode继续读。
11.请阐述HDFS在不发生故障的情况下写文件的过程。
1) 使用HDFS提供的客户端Client, 向远程的Namenode发起RPC请求
2) Namenode会检查要创建的文件是否已经存在, 创建者是否有权限进行操作, 成功则会为文件创建一个记录, 否则会让客户端抛出异常;
3) 当客户端开始写入文件的时候, 客户端会将文件切分成多个packets, 并在内部以数据队列“data queue( 数据队列) ”的形式管理这些packets, 并向Namenode申请blocks, 获取用来存储replicas的合适的datanode列表, 列表的大小根据Namenode中replication的设定而定;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。