Hadoop学习记录1-什么是HDFS?

Hadoop学习记录(1)-什么是HDFS?

Hadoop作为处理大数据的分布式存储和计算框架,很多程序员已经对他耳熟能详了。作为一个工作三年的java后端程序员,准备学习了解一下该框架,特立此贴记录学习。

HDFS简介

HDFS(Hadoop Distributed File System)是高扩展、高容错、高性能的分布式文件系统,负责数据的分布式存储和备份。本质是一个主/从体系结构的分布式文件系统,主要包含一个NameNode、一个Secondary NameNode和多个Data Node。

  • 1、元数据
    元数据不是具体的文件内容,它包含三类信息:

    • 文件和目录自身的属性信息,例如文件名、目录名、父目录信息、文件大小、创建时间、修改时间等。
    • 文件内容存储的相关信息。例如文件分块情况、副本个数、每个副本所在的DataNode信息等。
    • 用来记录HDFS中所有Data Node的信息,用于管理Data Node。
  • 2、NameNode
    用于存储元数据以及处理客户端发出的请求。在Data Node中存放元信息的文件是fsimage文件。在系统运行期间,所有对元数据的操作都保存在内存中,并被持久化到另一个文件edits中。当NameNode启动时,fsimage会被加载到内存,然后对内存中的数据执行edits记录的操作,以确保内存中所保留的数据处于最新的状态。

  • 3、Secondary NameNode
    用于备份NameNode的数据,周期性将edits文件合并到fsimage文件并在本地备份,将新的fsimage文件存储到NameNode,取代原来的fsimage,删除edits文件。并生成一个新的edits继续存储文件修改状态。

  • 4、DataNode
    真正存储数据的地方。在DataNode中,文件以数据块的形式进行存储。当文件传到HDFS端时以128MB的数据块将文件进行切割,将每个数据块存到不同的或相同的DataNode并且备份副本。一般默认3个,NameNode会负责记录文件的分块信息,确保在找到该文件时找到并整合所有5、数据块
    文件在上传到HDFS时根据系统默认文件块大小把文件分成一个个数据块。数据块会被存储到各个节点,每个数据块都会备份副本。

HDFS之宕机处理

  • 1、冗余备份
    文件被分为一个或多个数据块存储时,进行了副本备份,默认为3。
  • 2、副本存放
    以dfs.replication=3为例,在同一台机器的两个节点上各创建一个副本,在另一台机器的某个节点上再放一个副本。前者防止该机器的某个节点宕机,后者防止某个机器宕机。
  • 3、宕机处理
    当一切运行正常时,Data Node会周期性的发送心跳信息给NameNode(默认为3秒一次)。如果NameNode在预定的时间内没有收到DataNode的心跳(默认为10分钟),他为认为该节点出问题了,把它从集群中移除。对于HDFS来说,丢失一个DataNode,相当于丢失了存储在该节点的数据块的副本。HDFS会检测到存储在该节点的数据块的副本数量低于要求,然后主动对这些数据块创建所缺失的副本,以达到满副本状态。DataNode可能因为多种原因脱离集群,如硬件故障、主板故障、电源老化和网络故障等。
    当HDFS读取某个数据块时,如果正好该节点宕机了,客户端就会到存储该数据块的其它节点读取。同时HDFS也会检测到该数据块副本个数不符合要求而重新补全副本。
    当HDFS存储数据块时,如果要存放数据块的节点宕机。HDFS会再分配一个节点给数据块用来备份,然后备份宕机节点中数据块的副本。

HDFS的特点和总结

优点

  • 高容错性。通过对文件的数据块进行多个副本的备份实现,副本丢失时会检测到并自动补全。
  • 适合大数据的处理。能够处理GB、TB甚至PB级别的数据。
  • 流式数据访问。以流式数据访问模式来存储超大文件,“一次写入,多次读取”。文件一旦写入,不能修改,只能增加。可以保证数据的一致性。

缺点

  • 不适合低延迟数据访问
  • 无法高效存储大量小文件。因为文件系统的元数据存放在NameNode的内存中,所以内存大小便是能够存储文件数量的瓶颈。
  • 不支持多用户写入及任意修改文件。HDFS的一个文件只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。目前HDFS不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值