标签:
文章包括以下内容:
1. Hadoop2简介与Hadoop1区别
2. Hadoop2主要改进
3. HDFS概述
4. HDFS主要特性
5. HDFS不适合的场景
6. HDFS体系结构
7. HDFS构成
8. 数据块
9. 数据块的好处
10. HDFS读写流程
---------------------------------------------------------------------------------
1. Hadoop2简介与Hadoop1区别
2. Hadoop2主要改进
增加了4部分内容:YARN、NameNode HA、HDFS federation、Hadoop RPC序列化扩展性
3. HDFS概述
HDFS是一个分布式文件系统,具有高容错的特点。它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问,适合那些需要处理海量数据集的应用程序。
4. HDFS主要特性
支持超大文件;
检测和快速应对硬件故障;
流式数据访问;
简化一致性模型。
5. HDFS不适合的场景
低延迟数据访问;
大量的小文件;
多用户写入文件,修改文件。
6. HDFS体系结构
7. HDFS构成
NameNode上保存着HDFS的名字空间,DataNode将HDFS数据以文件的形式存储在本地的文件系统中,它并不知道有关HDFS文件的信息,它把每个HDFS数据块存储在本地文件系统的一个单独的文件中。
8. 数据块
HDFS也有块的概念,hadoop2中HDFS块默认大小128MB,hadoop1中HDFS块默认大小64MB,以Linux普通文件的形式保存在数据节点的文件系统中。数据块是HDFS的文件存储处理的单元。
9. 数据块的好处
HDFS可以保存比存储节点单一磁盘大的文件;
简化了存储子系统,简化了存储管理,也消除了分布式管理文件元数据的复杂性;
方便容错,有利于数据复制。
10. HDFS读写流程
读流程
首先,HDFS提供的客户端(HDFS client)向远程的NameNode发起RPC请求,然后NameNode会视情况访问文件部分或全部块的位置(block location)。对于每个block,NameNode都会返回有该block拷贝的DataNode地址,然后返回生成FSData InputStream,HDFS client再根据这个流进行数据的一个流的读操作。客户端会选取离其最近的DataNode来读取block,如果客户端本身就是DataNode,将从本地直接获取数据,读取完当前block数据后,关闭当前DataNode连接,并为读取下一个block寻找最佳的DataNode。当读完列表的block后,其文件读取还没有结束,客户端会继续向NameNode获取下一批的block列表,当读取完一个block,会进行校验,如果读取的DataNode出现错误,会重新访问NameNode,然后从下一个拥有该block拷贝DataNode读取。
写流程
HDFS客户端向远程的NameNode发起RPC请求,NameNode会检查要创建的文件是不是存在,创建者是否有权限操作,成功,会为文件创建一个记录,否则,会让客户端抛出异常。当客户端开始写入文件的时候,文件会被分为多个package,会放入队列,这时候,FSDataOutputStream会向NameNode申请block,分清你要写到哪些block里,申请完以后,会支持一个写的操作。因为HDFS有冗余机制,当然这个冗余机制可以根据具体情况设定,默认是3份。假设集群冗余是3份,它会首先写入第一个DataNode,然后再写第二个DataNode,再写入第三个DataNode。如果写入成功,则按原路径返回给客户端。如果中间某个DataNode出现了问题,这时候就会有一个最小不等数,如果我们最小不等数设为1,那么我写3个节点的数据只写成功2个,那返回以后还是会写入HDFS,不过在后面会进行一个副本恢复,这就是一个写的流程。
创建子路径流程
向HDFS增加新的路径,只会和NameNode交互,在NameNode上追加新开辟的记录,这就是HDFS创建路径的流程,它不会和DataNode交互。
删除数据流程
删除数据时,客户端会和NameNode交互,它会有RPC告诉哪些数据要删除,并在NameNode上做标记,等到DataNode对NameNode返回信号的时候,NameNode会指定DataNode删除相应的block。
标签:
原文地址:http://www.cnblogs.com/muzili-ykt/p/5932051.html