大数据之hdfs架构、读写策略、shell命令

一、hdfs架构简介

    

   文件系统:由三部分组成与文件管理有关软件、被管理文件以及实施文件管理所需数据结构

    元数据:用于描述要素、数据集或数据集系列的内容、覆盖范围、质量、管理方式、数据的所有者、数据的提供方式                    等有关的信息。更简单的说,是关于数据的数据。HDFS就是将巨大的数据变成大量数据的数据。

架构组成:

       •一个HDFS文件系统包括一个主控节点NameNode和一组DataNode从节点
             NameNode 一个主服务器,用来管理整个文件系统的命名空间和元数据,以及处理来自外界的文件 访问 请求
NameNode 保存了文件系统的三种元数据:命名空间、数据名和文件名的映射表、每个数据块副本的位置信息; 可以执行文件操作 比如打开、关闭、重命名等 ; 而且 NameNode 负责 DataNode 分配 数据块并建立数据块和 DataNode 的对应关系。
DataNode用来实际存储和管理文件的数据块,负责处理文件系统用户具体的数据读写请求,同时也可以处理NameNode对数据块的创建、删除副本的指令
典型的部署模式采用 NameNode 单独运行于一台服务器节点上,其余的服务器节点,每一台运行个 DataNode
读写策略——数据读取
1、客户端调用FileSystem 实例的open 方法,获得这个文件对应的输入流InputStream
2、通过RPC 远程调用NameNode ,获得NameNode 中此文件对应的数据块保存位置,包括这个文件的副本的保存位置( 主要是各DataNode的地址) 。
3、获得输入流之后,客户端调用read 方法读取数据。选择最近的DataNode 建立连接并读取数据。
4、如果客户端和其中一个DataNode 位于同一机器(比如MapReduce 过程中的mapper 和reducer),那么就会直接从本地读取数据。
5、到达数据块末端,关闭与这个DataNode 的连接,然后重新查找下一个数据块。
6、不断执行第2 - 5 步直到数据全部读完
7、客户端调用close ,关闭输入流DF S InputStream

读写策略——数据写入
1、客户端调用Fi leSystem 实例的create 方法,创建文件。NameNode 通过一些检查,比如文件是否存在,客户端是否拥有创建权限等;通过检查之后,在NameNode 添加文件信息。注意,因为此时文件没有数据,所以NameNode 上也没有文件数据块的信息。
2、创建结束之后, HDFS 会返回一个输出流DFSDataOutputStream 给客户端。
3、客户端调用输出流DFSDataOutputStream 的write 方法向HDFS 中对应的文件写入数据。
4、数据首先会被分包,这些分包会写人一个输出流的内部队列Data 队列中,接收完数据分包,输出流DFSDataOutputStream 会向NameNode 申请保存文件和副本数据块的若干个DataNode , 这若干个DataNode 会形成一个数据传输管道。DFSDataOutputStream 将数据传输给距离上最短的DataNode ,这个DataNode 接收到数据包之后会传给下一个DataNode 。数据在各DataNode之间通过管道流动,而不是全部由输出流分发,以减少传输开销。
5、因为各DataNode 位于不同机器上,数据需要通过网络发送,所以,为了保证所有DataNode 的数据都是准确的,接收到数据的DataNode 要向发送者发送确认包(ACK Packet ) 。对于某个数据块,只有当DFSDataOutputStream 收到了所有DataNode 的正确ACK. 才能确认传输结束。DFSDataOutputStream 内部专门维护了一个等待ACK 队列,这一队列保存已经进入管道传输数据、但是并未被完全确认的数据包。
6、不断执行第3 - 5 步直到数据全部写完,客户端调用close 关闭文件。
7、DFSDataInputStream 继续等待直到所有数据写人完毕并被确认,调用complete 方法通知NameNode 文件写入完成。NameNode 接收到complete 消息之后,等待相应数量的副本写入完毕后,告知客户端。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值