HDFS 概述

HDFS的产生背景和定义

HDFS产生背景

解决海量数据的存储问题

需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。

HDFS定义

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

HDFS 的使用场景:适合一次写入,多次读出的场景。 一个文件经过创建、写入和关闭之后就不需要改变。

优缺点

优点

1.高容错性

2.适合处理大数据

3.可以构建在廉价机器上,通过多副本机制,提高可靠性

缺点

1.不适合低延时数据访问,比如毫米级的存储数据

2.无法高效的对大量小文件进行存储,适用于快速寻找

寻址时间为传输时间的1%时,为最佳状态

3.不支持并发写入、文件随机修改

组成

NameNode

NameNode(nn)是Master,管理者。

  1. 管理HDFS的名称空间

    所有文件的元数据
  2. 配置副本策略

    比如集群中有多个文件a,b,c,设置a的副本有1个、b的副本有2个、c的副本有3个。告诉Datanode维持几份副本
  3. 管理数据块(Block)的映射信息
  4. 处理客服端读写请求

DataNode

NameNode下达命令,DataNode执行实际的操作。

  1. 存储实际的数据块
  2. 执行数据块的读/写操作

Secondary NameNode(2nn)

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

  1. 辅助NameNode,分担其工作量,比如定期合并Fsimage(镜像文件)和Edits(编辑日志),并推送给NameNode
  2. 在紧急情况下,可辅助恢复NameNode(只能恢复部分,因为2nn并没有NameNode的全部数据)

Client

Client就是客户端

  1. 文件切分。文件上传HDFS的时候,Client将文件切分成一个个block(按NameNode的文件块来分)
  2. 与NameNode交互,获取文件的位置信息
  3. 与DataNode交互,读取或者写入数据
  4. Client提供一些命令来管理HDFS,比如NameNode格式化
  5. Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作

文件块大小(面试重点)

HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数dfs.blocksize来设置,默认大小在Hadoop2.x/3.x版本中是128M。

128M是上限,如果10K的文件存进去,剩下的空间还可以给其他文件使用。

默认值128M的原因,如果磁盘的传输速率更大,块的大小可以设置的更大

问题:为什么块的大小不能设置太小,也不能设置太大

如果块设置太小,会增加寻址时间。

如果块设置太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需时间。导致磁盘传输数据的时间过长。

总结:HDFS块的大小设置主要取决于磁盘传输速率。

最新文章

  1. 在JS中获取文件点之后的后缀字符
  2. mysql 5.5.32 多实例环境的启动问题
  3. JavaScript 正则表达式上——基本语法
  4. 利用PHPMailer 来完成PHP的邮件发送 #转载自:大菜鸟在云端#
  5. 还是不想改报告,伊阿忆啊哟-Linux基础继续
  6. python 学习笔记十二 html基础(进阶篇)
  7. java的基本认识
  8. Node以数据块的形式读取文件
  9. Java Hour 24 JDBC
  10. [CC]ccHObject
  11. NetworkShareAccesser: 远程PC1 文件 copy 到PC2 文件夹
  12. python(22)总结下最近遇到的编码问题
  13. JAVA多线程的问题以及处理【转】
  14. matlab——sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)
  15. Realm for Android快速入门教程
  16. C模块划分
  17. linux_redhat_线程后台运行方法
  18. 【入门一】一些简单的C程序及VS的安装
  19. WebService学习------小实例开发(号码归属地查询)
  20. C++ 11保留小数点的四舍五入方案

热门文章

  1. Luogu P2827 [NOIp2016提高组]蚯蚓 | 神奇的队列
  2. 近期业务大量突增微服务性能优化总结-3.针对 x86 云环境改进异步日志等待策略
  3. Edge屏蔽CSDN (必应)
  4. 安装RedHat和Centos后做的15件事情
  5. Robot Framework操作MySQL数据库
  6. vue 快速入门 系列 —— 使用 vue-cli 3 搭建一个项目(上)
  7. 基于Mui与H5+开发webapp的Android原生工程打包步骤(使用新版本5+SDK与Android studio)(部分内容转自dcloud官网)
  8. python一对一教程:Computational Problems for Physics chapter 1-B Code Listings 1.7 - 1.12
  9. RabbitMQ Network Partitions 处理策略
  10. [loj6736]最小连通块