HDFS特点
适合一次读入 多次写出
优点
高容错性:
- 数据自动保存多个副本,通过增加副本的形式,提高容错性
- 某个副本丢失以后,可以自动恢复
适合处理大数据
- 数据规模
- 文件规模
- 可以构建在廉价机器上,多副本机制,提高可行性
缺点
不适合低延时的数据访问
无法高效的对大量小文件进行存储
- 存储大量小文件会占用NameNode大量内存来存储文件目录和块信息,NameNode内存是有限的
- 小文件存储寻址时间会超过读取时间
不支持并发写入、文件随机修改
- 一个文件只能有一个 写,不允许多个线程同时写
- 仅支持数据append(追加),不支持文件的随机修改
HDFS架构
- NameNode(nn):是master 管理者。用于管理HDFS的名称空间;配置副本策略;管理数据块(block)映射信息;处理客户端读写请求
- DataNode:slave,当NameNode下达命令,DataNode执行实际操作。用于存储实际的数据块;执行数据块的读写操作
- Secondary NameNode(2NN):上图没有,并非NameNode热备(热备是指如果NN不能运行,2NN可以立即替换NameNode并提供服务),所以2NN不能立刻替换NN并提供服务。其主要作用:辅助NN,分担其工作量,比如定期合并Fsimge(镜像文件),Edits(内容日志),并推送给NN;在紧急情况下可以辅助恢复NN。
- client :客户端。作用:文件切分,文件上传到HDFS时,Client将文件切分成一个个的文件块(按照NN的文件块进行切分)
HDFS文件块的大小
HDFS中的文件在物理上是分块存储,块的大小可以通过配置参数(dfs.blocksize)来规定,在Hadoop2.x/3.x中是128M 1.x是64M