1HDFS概述

概述:

HDFS它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的有很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

使用场景:适合一次写入,多次读出的场景切不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用

优点:

1容错性高,数据自动保存多个副本,它通过副本的形式,提高容错性。某一个副本丢失以后,它可以自动恢复。

2适合做大数据分析

1数据规模:能够处理数据规模达到GB TB 甚至PB的数据

2文件规模:能够处理百万规模以上的文件数量,数量相当之大

3可构架再廉价机器上,通过多副本机制,提高可靠性。

缺点:

1不适合低延迟时数据的访问,比如毫秒级的数据,是做不到的。

2无法高效的对大量小文件进行存储

1存储大量得小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息,这样是不可取的,因为NameNode的内存总会是有限的

2小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标

3不支持并发写入,文件随机修改。

1一个文件只能有一个些,不允许多个线程同时写;

2仅支持数据append,不支持文件的随机修改。

2HDFS组成架构

hadoop hdfs用户 简述hdfs的用户机制_客户端

1 NameNode(nn):就是Master,它是一个主管,管理者

1:管理HDFS的名称空间;

2配置副本策略;

3管理数据块映射信息

4处理客户断读写请求。

2 DateNode:就是Slave。NameNode下达命令,DataNode执行实际的操作

1存储实际的数据块

2执行数据的读写操作

3 Client:就是客户端

1文件切分,文件上HDFS的时候,Client将文件切分成一个一个的Block块然后进行上传

2与NameNode交互,获取文件的位置信息;

3与DateNode交互,读取或写入数据;

4Client提供一些命令来管理HDFS,比如NameNode格式化;

5Client提供一些命令来访问HDFS,比如对HDFS增删查改

4 Secondary NameNode: 并非NameNode的热备份。当NameNode挂掉的时候,它并不会能马上替换掉NameNode并提供服务。

1辅助NameNode 分担其工作量。比如定期合并Fsimage和Edits,并推送给NameNode;

2在紧急情况下,可辅助恢复NameNode。

HDFS的Shell操作

上传 :

-moveFromLocal:从本地剪切粘到HDFS

-copyFromLocal : 从本地文件系统拷贝文件到HDFS路径去

-appendToFile: 追加一个文件到已存在的文件末尾

-put:等同于copyFromLocal

下载:

-copyToLocal:从HDFS拷贝到本地

-get:等同于CopyToLocal,就是HDFS下载文件到本地

-getmerge:合并下载多个文件

直接操作:

-ls:显示目录信息

-mkdir:在HDFS上创建目录

-cat:显示文件内容

-chgrp,-chmod ,-chown 和Liunx文件系统用法一样

-cp:从HDFS的一个路径拷贝到HDFS的另一个路径

-mv:在HDFS目录中移动文件

-tail:显示一个文件的末尾1kb的数据

-rm: 删除文件或文件夹

-rmdir:删除空目录

-du:统计文件夹的大小信息

-setrep:设置HFDS中文件的副本数量

3HDFS的读写流程

hadoop hdfs用户 简述hdfs的用户机制_数据_02

1 客户端通关DistributedFileSystem向NameNode发起请求上传文件,NameNode检查是否具有权限和该文件是否已经存在。

2 NameNode检查完毕会向客户端返回响应可以上传文件

3客户端请求上传第一个Block存储到那几个节点,请求返回DataNode,

4 Name返回节点,采用这几个节点存储数据

5 客户端FSDataOutputStream会向这几个Datanode1请求上传数据,Datanode1收到请求会继续调用Datanode2,然后Datanode2调用Datanode3,将这个通信管道建立完成。

6建立成功向客户端返回应答信息

7 FSDataOutputStream开始往DataNode1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,Datanode1收到一个Packet就会传给Datanode2,Datanode2传给Datanode3;Datanode1每传一个packet会放入一个应答队列等待应答。

8 当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。

Hadoop3.1.3副本节点选择

hadoop hdfs用户 简述hdfs的用户机制_hadoop hdfs用户_03

HDFS读数据流程

hadoop hdfs用户 简述hdfs的用户机制_客户端_04

1客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查元数据,找到文件块所在的DataNode地址

2 挑选一台最近的服务器,请求读取数据。

3 DataNode开始传输数据给客户端(从磁盘里读取数据输入流,以Packet为单位来做校验)。

4 客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

4 NameNode和SecondaryNameNode

hadoop hdfs用户 简述hdfs的用户机制_数据_05

NameNode

1 第一次启动NameNode,先加载编辑日志和镜像文件到内存中,如果是第一次启动NameNode格式化后,创建Fsimage和Edits文件。

2 客户端进行发起操作请求。

3 NameNode记录操作日志,更新滚动日志。

4 NameNode在内存中对元数据进行操作

Secondary NameNode

1 Sencodedary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。

2 Sencodedary NameNode请求执行CheckPoint

3 NameNode滚动正在写的Edits日志

4 将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。

5 Secondary NameNode 加载编辑日志和镜像文件到内存,并合并

6 生成新的镜像文件fsimage.chkpoint。并拷贝到NameNode,NameNode将fsimage.chkpoint重新命名fsimage。

hadoop hdfs用户 简述hdfs的用户机制_hadoop hdfs用户_06

hadoop hdfs用户 简述hdfs的用户机制_数据_07

hadoop hdfs用户 简述hdfs的用户机制_数据_08

CheckPoint触发的两种条件,1 每一小时执行一次,2 一分钟检查一次操作次数,当操作次数达到1百万时执行

5 DataNode工作机制


hadoop hdfs用户 简述hdfs的用户机制_HDFS_09

(1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

(2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。

(3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。

(4)集群运行中可以安全加入和退出一些机器。

DataNode掉线时限时参数设置

hadoop hdfs用户 简述hdfs的用户机制_hadoop hdfs用户_10