hadoop-hdfs

简介

包括:
0)hadoop Common
1)分布式存储系统HDFS。
2)分布式计算框架MapReduce
3)分布式资源管理框架 YARN

HDFS

存储模型:字节

1)文件线性切割成块(block):偏移量offset(byte)
偏移量指切割后的文件第一个字节在源文件中的角标。例如:12字节的文件切割乘2个文件每个文件6个字节,那么,第一个文件offset为0,第二文件offset为7
2)block分散存储在集群节点中
3)单一文件block大小一致,文件与文件可以不一致
4)block可以设置副本数,副本分散在不同节点,副本数不建议超过节点数量
5)文件上传可设置block大小和副本数
6)已上传的block副本数可以调整,大小可不再变
7)只支持一次写入多次读取,同一时刻只有一个写入者
8)可以append追加数据

架构模型

1)文件元数据MetaData,文件数据
数据包括:元数据、数据本身,数据本身的元数据
2)NameNode 节点保存文件元数据:单节点 posix
3)DataNode节点保存文件Block数据:多节点
4)DataNode与NameNode保持心跳,提交Block列表
5)HdfsClient与NameNode交互元数据信息
6)HdfsClient与NameNode交互Block数据
hadoop-hdfs_第1张图片
客户端通知namenode上传文件,namenode返回datanode,客户端将文件上传到datanode,文件上传完毕,datanode通过心跳告知namenode元数据信息。

NameNode(NN)

1)基于内存存储
2)用于接收客户端读写服务;手机DataNode汇报的Block列表信息
3)NN保存metadata信息,metadata信息包括:文件owership和permissions;文件大小、时间;block偏移量、位置信息;block每个副本的位置

DataNode(DN)

1)本地磁盘目录存储数据Block,文件形式存储
2)同时存储block的元数据信息文件
3)启动DN时会向NN汇报block信息
4)通过向NN发送心跳保持联系,>10min未收到DN心跳,则认为该Datanode已挂掉并复制对应的副本的block到其它DN

优点

高容错性:数据自动保存多个副本,副本丢失后自动恢复;
适合批处理:移动计算而非数据。数据位置暴露给计算框架(Block偏移量);
适合大数据处理;
可搭建在廉价的机器上;

缺点

不适合低延迟数据访问;
无法高效存储大量的小文件;
不支持多用户写入及任意修改文件;
优缺点描述参考

NameNode持久化

1)NameNode的metadate信息会在启动后加载到内存中
2)metadata存储到磁盘文件名为:fsimage
3)Block的位置信息不回保存到fsimage
4)edits记录对metadata的操作日志

安全模式

1)namenode启动,加载映像文件fsimage,并执行编辑日志edits中的操作
2)文件系统元数据的映射成功建立后,会创建一个新的fsimage文件和一个孔的编辑日志
3)此时NN运行在安全模式下。即NN对客户端来说是只读的
4)该阶段NN收集所有DN的报告,当数据库达到最小副本数以上时,则认为“安全”。在一定比例(可设置)的数据库被确定为安全后,再经过一段时间,结束安全模式
5)当检测到副本数不足时,进行复制直到达到最小副本数,系统中数据块的位置并不是由NN维护,而是以块列表形式存储在DN中。

SecondaryNameNode(SNN)

1)非NN备份,主要用于帮助NN合并edits log,减少NN启动时间
2)SNN执行合并时机
可配置执行时间,通过配置文件设置时间间隔fs.checkpoint.period默认3600s;
可通过配置文件设置edits log文件的最大值fs.checkpoint.size,默认64M;
hadoop-hdfs_第2张图片

Block副本放置策略

1)第一个副本,放置于上传文件的DN,如果是集群外提交,则随机挑选一台磁盘不太满cpu不忙的节点。
2)第二个副本,放在与第一个副本不同机架的节点
3)第三个副本,与第二个副本相同机架的节点。
4)更多副本,随机节点。

hdfs写流程

hadoop-hdfs_第3张图片
客户端请求NN,NN根据放置策略返回sort(与客服端距离远近排序)后的DN。客户端和离自己最近的DN1建立socket链接,DN1和DN2建立socket链接,DN2和DN3建立socket链接。客户端读取源文件,更具需要将文件块切割成更小的数据块进行传输,DN1不会等到整个文件上传完毕才向其它DN传输而是在每一个数据块接收完后随即向其它DN传输。

hdfs读流程

hadoop-hdfs_第4张图片
客户端请求NN,获得数据块所在的DN位置信息,每个数据有多个副本优先取距离最近的副本下载,会对每个block进行校验是否有损坏。下载完后拼接为一个完整的文件。也可以只获取部分block。

hdfs文件权限

r;w;x读写执行。创建文件的用户为该文件拥有者。

你可能感兴趣的:(hadoop)