Hadoop学习笔记[1]-HDFS基本知识和读写原理
大数据领域的技术基石主要来源于谷歌的三篇论文GFS、MapReduce和BigTable,分别是文件系统、计算框架和数据库,本文所说的HDFS对应其中的GFS,先抛出一个小问题,在HDFS出现之前,市面上就已经存在各种各样的分布式文件系统,那么为什么Hadoop之父还要搞一个HDFS?
1、HDFS基本架构
1-1 存储模型
- 1)、文件线性按照字节切割成块,具有offset和块ID【数据被切割在不同的块的时候怎么办?】
- 2)、不同文件之间的块大小可以不一样(默认是128M,不同版本不同,和硬件有关)
- 3)、一个文件除了最后一个block块,其余块大小一致
- 4)、block的大小根据硬件的IO特性调整
- 5)、block会被分散在集群的不同节点存储,具有location
- 6)、block具有副本,没有主从的概念,副本不能出现在同一节点
- 7)、副本是满足可靠性和性能的关键
- 8)、文件上传时可以指定block大小和副本数,上传后只能修改副本数
- 9)、不支持修改数据,允许追加数据(Hive底层用的是hdfs存储,所以对修改操作支持很差,因为修改数据之后会导致hdfs文件中某个块的大小不一致,导致后续所有的块的偏移量都出现错误,需要将文件重新存储一次,所以修改操作=重新全量写文件到HDFS)
1-2 架构设计描述
- 1)、主从架构
- 2)、由一个NameNode和一些DataNode组成
- 3)、NameNode负责存储和管理文件的元数据,并维护一个层次型的目录树