Hadoop-HDFS

1.HDFS简介

  HDFS是基于 流数据 访问模式的 分布式文件系统 ,其设计建立在 “一次写入、多次读取” 的基础上,提供高吞吐量、高容错性的数据访问,能很好地解决海量数据的存储问题。

  其中,流数据 是指数千个数据源 持续生成 的数据,可以理解为随时间延续而 无限增长 的动态数据集合。
通俗点说,如果把数据比如成一个水库,那么流进去的水,就是流数据(就像我们听的音乐,属于音乐流;而看到的文字、图片这些较为固定的,一次性下载的,形成不了流)。

2.优缺点

1.优点

  高容错性。提供了容错和恢复机制,副本丢失后,自动恢复。
  高可靠性。数据自动保存多个副本,通过多副本提高可靠性。
  适合大数据处理。两个维度:数据规模和文件规模。可以处理超大文件,比如 TB级甚至PB级 的文件。
  适合批处理。移动计算而非移动数据;数据位置暴露给计算框架。
  支持流式数据访问。一次性写入,多次读取(一个数据集一旦生成,就会被复制分发到不同的存储节点,各节点可以进行读取/访问);保证数据一致性。
  低成本运行。可以运行在低成本的硬件之上。
2.缺点
  不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
  无法高效的对大量小文件进行存储(1.存储大量小文件的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。2.小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。)
  不支持并发写入、文件随机修改(1.一个文件只能有一个写,不允许多个线程同时写。2.仅支持数据 append(追加),不支持文件的随机修改。)

3.架构

在这里插入图片描述
**Client:**客户端。
  文件切分。文件上传 HDFS 的时候,Client 将文件切分成一个一个的Block,然后进行存储。
  与NameNode交互,获取文件的位置信息。
  与DataNode交互,读取或者写入数据。
  Client提供一些命令来管理HDFS,比如启动或者关闭HDFS。
  Client可以通过一些命令来访问HDFS。
NameNode:就是Master,它是一个主管、管理者。
  管理HDFS的名称空间
  管理数据块(Block)映射信息
  配置副本策略
  处理客户端读写请求。
**DataNode:**就是Slave,NameNode下达命令,DataNode执行实际的操作
  存储实际的数据块。
  执行数据块的读/写操作。
Secondary NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
  辅助NameNode,分担其工作量
  定期合并Fsimage和Edits,并推送给NameNode。
  在紧急情况下,可辅助恢复NameNode。

editlog(操作日志):在NameNode启动的情况下,对HDFS进行的各种操作进行记录。(HDFS客户端执行的所有操作都会被记录到editlog文件中,这些文件由edits文件保存)
fsimage:包含HDFS中的元信息(比如修改时间、访问时间、数据块信息等)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值