Hadoop第一讲--HDFS(分布式文件存储系统)

  • HDFS 是什么?

       HDFS 名称是(Hadoop Distributed File System )首字母缩写,即分布式文件存储系统,是Hadoop 大数据项目的一个子项目。是基于流数据模型访问和处理超大文件数据的需求而开发。具有高容错性,高可扩展性,高吞吐率等特性,为大数据集的应用提供了良好的应用。

  另外 HDFS 来源于google 2003年发表的一篇论文,严格来说就是GFS(Google File System) 的克隆版。

  •   HDFS 的优点

      1,高容错性

            数据块Block 默认有3个副本 ,会自动保存数据,即使有丢失也会自动恢复。

     2,大数据处理

            能够处理超大数据 GB ,TB ,PB 量的数据。百万规模以上的文件数量。10k+节点

     3,对机器要求低可以构建在廉价的机器上

       通过多副本提高了可靠性,提供了容错和恢复机制。

      4,流式访问

       一次写入多次读取,文件一旦写入就不能修改只能追加。

      5,适合批处理

     通过移动计算而不是移动数据

      把数据位置暴露给计算框架。

  • HDFS 缺点

   1,低延时数据场景访问不能用

        只适合高吞吐的场景,也就是在某一段时间内读取大量的数据,但是在毫秒级内无法完成这么大的读取量。

   2,小文件存储的场景不能用

        小文件存储的寻道时间会比读取的时间长,这样就违背 了hdfs 的设计目标了。

       过多的小文件会占用大量的nameNode  内存,这样得不偿失。

   3,并发写入,随机修改场景不能用

       一个文件只能有一个文件写入者,不能多线程写入,并且追加只能用 append.

 

  • HDFS 系统架构

 按我的理解可以分为4个角色:1,Client 客户端  2,NameNode 主管 3,SecondaryNameNode 辅助员  4,DataNode 执行员

1,客户端 Client

                 主要负责对上次道系统的文件进行切分成block 然后存储。

                 并且与NameNode 和 DataNode 交互文件的位置信息并写入数据。

                 提供一下命令管理hdfs 系统并关闭系统。

2, 主管  NameNode

                  处理客户端的请求

                 管理数据块block 的 映射信息 。

                配置block 副本的策略

3, 辅助员 secondary NameNode

      辅助主管完成其他的工作量

     定期合并  fsimage 和 fsedits  并推送给 主管

 

4,执行员 DataNode

   存储实际的数据块,完成读写文件操作

他们的关系如图:

      

Hadoop第一讲--HDFS(分布式文件存储系统)_第1张图片

 

  • HDFS 如何读取文件

      简单来说 就是, 打开 DistributedFileSystem 实例   向 NameNode获得文件的第一批block的locations

     通过FSDataInputStream对象  Client 的read 方法 读取dataNode 数据。

 

Hadoop第一讲--HDFS(分布式文件存储系统)_第2张图片

 

  • 放副本的策略
  •  

Hadoop第一讲--HDFS(分布式文件存储系统)_第3张图片

 

Hadoop第一讲--HDFS(分布式文件存储系统)_第4张图片

 

  • DataNode(DN) 

 
– 存储数据(Block) – 启动DN线程的时候会向NN汇报block信息 – 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收 到DN的心跳,则认为其已经lost,并copy其上的block到其它DN 

 

 

  •  NameNode(NN)

– NameNode主要功能:接受客户端的读写服务 – NameNode保存metadate信息包括 • 文件owership和permissions • 文件包含哪些块 • Block保存在哪个DataNode(由DataNode启动时上报) – NameNode的metadate信息在启动后会加载到内存 • metadata存储到磁盘文件名为”fsimage” • Block的位置信息不会保存到fsimage 
 
• edits记录对metadata的操作日志 

 

 

  •  HDFS 数据存储单元(block) 

 
– 文件被切分成固定大小的数据块 • 默认数据块大小为64MB ,可配置 • 若文件大小不到64MB ,则单独存成一个block – 一个文件存储方式 • 按大小被切分成若干个block ,存储到不同节点上 • 默认情况下每个block都有三个副本 – Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本 数可以变更,Block Size不可变更 
 

 

你可能感兴趣的:(Hadoop第一讲--HDFS(分布式文件存储系统))