Hadoop l3 HDFS
什么是hdfs
hadoop分布式文件系统,作为大数据生态圈最底层而存在
横跨多台计算机上的存储系统
hdfs用多台计算机存储文件并且提供统一的访问接口
是高度同错的
一主多从的架构
数据 存储的内容本身
元数据 解释性数据
文件系统元数据一般为 文件大小 最后修改时间 底层存储位置 属性 所属用户 权限等信息
HDFS起源和发展
这里就不记了,纯纯八股


hadoop不能直接对文件内容进行修改
hadoop特性

主从架构
master/slave 主从架构集群 ,有一个Namenode和一定数目的datanode实现,namenode为主节点,datanode为分节点分块存储 (blocks)
物理上分块存储 默认大小128M
可以修改hdfs-default.xml来修改dfs.blocksize副本机制(RepLication)
默认三个副本,额外复制两份 ,用dfs.replication控制元数据记录
文件自身属性信息:文件名称 权限 修改时间 复制银子 文件块大小
文件块位置映射信息:记录文件快和Datanode之间的映射抽象统一的目录结构
namespace
层次性文件组织结构,由namenode负责维护数据块存储
各个Block由datanode节点承担
每一个Block可以在多个datanode上存储

hdfs shell操作
可以使用 hadoop fs[generic options]
HDFS shell CLI 支持多个操作系统
具体操作什么文件系统取决于URL协议
默认访问的文件系统取决于
fs.defaultFS属性,以该属性值为默认文件系统

创建文件夹

查看目录下内容

上传文件到HDFS指定目录下

上传文件取决于你本地的客户端
查看

同样的tail也可以用
下载HDFS文件

拷贝

追加数据操作

主要用于小文件的追加合并
HDFS重命名

HDFS职能

主角色 :namenode
Namenode为hadoop分布式文件系统的核心
维护管理文件系统元数据 目录树结构,文件和块的位置信息
为访问HDFS的唯一入口
内部通过内存和磁盘文件管理元数据

从角色 datanode
Datanode是从属角色,负责具体的数据块存储
主角色辅助角色 secondarynamenode
辅助namenode
帮助主角色进行元数据文件的合并
namenode职责

datanode职责

namenode需要大内存,datanode需要大磁盘
HDFS写数据流程

Pipeline管道
客户端将数据块写入第一个数据节点,每个节点保存数据之后复制到第二个数据节点一以此类推
为什么不用拓扑式传输?
充分利用带宽,减少同步延时
ACK响应
去复习计网
三副本存储策略
默认副本存储策略由
BlockPlacementPolicyDefault决定第一块副本 优先本地
第二块副本 不同于第一块副本的不同机架
第三块副本 第二块副本相同机架不同机器

上传文件具体过程




客户端先找namenode->用pipline传递客户端和datanode->上传过程中要考虑三副本策略