1.启动hdfs进程名称
namenode 名称节点
datanode 数据节点
secondary namenode 第二名称节点
2.分块存储之前默认64m,现在默认128m (dfs.blocksize 128m)例子:
一个文件 110M 110/128 分为1 块 第一块 110M
130M 130/128 分为2 块 第一块 128M 第二块 2M (128M)
3.存放的副本数假如设置三份 (dfs.replication: 3)如下:
一个文件 110M * 3 110/128 = 1 *3 块 第一块 110M 第二块 110M 第三块 110M
130M 130/128 = 2 块 第一块 128M 第二块 2M (128M)
4.hdfs架构设计:
hdfs由namenode节点,datanode节点,secondary namenode节点组成。
namenode主节点负责文件元数据的操作,作用是存储 命名空间:fsimage+editlog(hadoop操作命令的日志) 存放文件的属性(文件名称+目录结构+文件属性+生成时间+副本数+文件权限等) 文件存储在datanode位置( 文件+块+机器(datanode)) 记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建
datanode从节点负责处理文件内容的读写请求,跟文件内容相关的数据流不会经过Namenode,只会询问它数据存放在哪个DataNode,否则Namenode会成为系统的瓶颈。
一个数据块在Datanode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳 。作用是存储数据块 block 每隔3秒向datanode发送一个心跳包接收到心跳信号意味着该Datanode节点工作正常。10个心跳 发生一个blockReport ,块状态报告包含了一个该Datanode上所有数据块的列表。
secondary namenode 第二名称节点
存储:fsimage+editlog
作用:每隔1小时 checkpoint 去namenode的拿fsimage+editlog ,合并成fsimage.ckpt,推送给namenode,
参数设置: dfs.namenode.checkpoint.period 3600
问题:
1.namenode 进程挂了,文件路径还在,重启namennode
2.namenode 机器挂了,文件路径不存在(文件损坏,磁盘损坏), secondary namenode的fsimage(11点)来恢复namenode,
那么59分钟的数据,操作日志丢了
hdfs分布式文件存储系统特点:分块存储,冗余,可扩展