【Hadoop】--HDFS介绍

 

目录

一、什么是HDFS

二、HDFS的特点

三、HDFS的读写过程

四、HDFS的常用指令


一、什么是HDFS

HDFS是基于Java的分布式文件系统,允许您在Hadoop集群中的多个节点上存储大量数据。它专门存储超大数据文件,为整个Hadoop生态圈提供了基础的存储服务

HDFS是一个主/从(Master/Slave)体系架构,由于分布式存储的性质,集群拥有两类节点NameNode和DataNode。NameNode(名字节点):系统中通常只有一个,中心服务器的角色,管理存储和检索多个DataNode的实际数据所需的所有元数据。

DataNode(数据节点):系统中通常有多个,是文件系统中真正存储数据的地方,在NameNode统一调度下进行数据块的创建、删除和复制。

                                                              HDFS官方框架图

二、HDFS的特点

优点

  • 高容错性:数据自动保存多个副本,副本丢失后,自动恢复
  • 适合批处理:移动计算而飞数据。数据位置暴露给计算框架
  • 适合大数据处理:GB,TB,设置PB级数据。百万规模以上文件数量。10K+节点规模。
  • 流式文件访问:一次性写入,多次读取。保证数据一致性。
  • 可构建在廉价机器上:通过多副本提高可靠性。提供容错和恢复机制。

缺点

  • 不适合低延迟数据访问场景:比如毫秒级,低延迟与高吞吐率
  • 不适合小文件存取场景:占用NameNode大量内存。寻道时间超过读取时间。
  • 不适合并发写入,文件随机修改场景:一个文件只能有一个写者。仅支持append

三、HDFS的读写过程

hdfs的读过程:

1、客户端发送请求,调用DistributedFileSystem API的open方法发送请求到Namenode,获得block的位置信息,因为真正的block是存在Datanode节点上的,而namenode里存放了block位置信息的元数据。

2、Namenode返回所有block的位置信息,并将这些信息返回给客户端。

3、客户端拿到block的位置信息后调用FSDataInputStream API的read方法并行的读取block信息,图中4和5流程是并发的,block默认有3个副本,所以每一个block只需要从一个副本读取就可以。

4、datanode返回给客户端。

HDFS的写过程:

1、客户端发送请求,调用DistributedFileSystem API的create方法去请求namenode,并告诉namenode上传文件的文件名、文件大小、文件拥有者。

2、namenode根据以上信息算出文件需要切成多少块block,以及block要存放在哪个datanode上,并将这些信息返回给客户端。

3、客户端调用FSDataInputStream API的write方法首先将其中一个block写在datanode上,每一个block默认都有3个副本,并不是由客户端分别往3个datanode上写3份,而是由

     已经上传了block的datanode产生新的线程,由这个namenode按照放置副本规则往其它datanode写副本,这样的优势就是快。

4、写完后返回给客户端一个信息,然后客户端在将信息反馈给namenode。

5、需要注意的是上传文件的拥有者就是客户端上传文件的用户名

四、HDFS的常用指令

 hadoop fs -mkdir /tmp/input              在HDFS上新建文件夹
 hadoop fs -put input1.txt /tmp/input  把本地文件input1.txt传到HDFS的/tmp/input目录下
 hadoop fs -get  input1.txt /tmp/input/input1.txt  把HDFS文件拉到本地
 hadoop fs -ls /tmp/output                  列出HDFS的某目录
 hadoop fs -cat /tmp/ouput/output1.txt  查看HDFS上的文件
 hadoop fs -rmr /home/less/hadoop/tmp/output  删除HDFS上的目录
 hadoop dfsadmin -report 查看HDFS状态,比如有哪些datanode,每个datanode的情况
 hadoop dfsadmin -safemode leave  离开安全模式
 hadoop dfsadmin -safemode enter  进入安全模式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值