Open cindygl opened 6 years ago
官方文档:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
HDFS具有主从架构,一个HDFS集群包含一个NameNode、一个Master Server,用于管理文件系统namespace和客户端对文件的访问。另外还有N个DataNode,通常集群中每个节点一个DataNode,用于管理连接到它们所允许的节点的存储(伪分布式环境中,DataNode跟NameNode位于同一个节点)。HDFS公开文件系统的namespace并允许用户数据存储。存储到HDFS的文件被分成一个或多个块,这些块存储在一组DataNode中。NameNode执行文件系统namespace操作,如打开、关闭和重命名文件和目录。它还确定块到DataNode的映射。DataNode负责提供来自文件系统客户端的读取和写入请求。DataNode还执行块创建,删除和复制。
NN: 名称节点 DN:数据节点 SNN:第二名称节点
大小:128M 参数:hdfs-site.xml dfs.blocksize
生产环境:3 参数:hdfs-site.xml dfs.replication
NameNode:文件系统的命名空间
DataNode:存储数据库 + 数据块的校验和 与NameNode通信:
读写的操作记录在EditLog,不会在fsimage NN: EditLog:实时记录 fsimage:1小时 SNN:定期合并fsimage + EditLog为新的fsimage,推送给NN
如果复制因子为3, 第一副本:放置在上传文件的DataNode上。如果是集群外提交,则随机挑选一台磁盘不太慢、CPU不太忙的节点上; 第二副本:放置在与第一个副本不同的机架的节点上; 第三副本:与第二个副本不同机架的不同节点上; 如果还有更多的副本:随机放在节点中; 如果副本数m>DataNode节点数n,最终数据在集群上会保存n个副本。这是因为NameNode不允许DataNode具有一个块的多个副本,文件创建时副本数是当时的DataNode总数。
hadoop fs -rm -r -skipTrash delete / test2
复制因子减少时,NameNode选择可以删除的多余副本。下一个Heartbeat将此信息传输到DataNode。DataNode删除相应的block,释放可用空间。
读操作是对于client端是透明操作,感觉是连续的数据流,不care它是不是经过NN。
[hadoop@hadoop01 ~]$ hdfs dfs -cat /test.txt
画图表示HDFS文件的读流程(TO BE UPDATED LATER ON)。 InputStream
[hadoop@hadoop01 ~]$ hdfs dfs -put test.txt /
OutputStream
常用命令: 查看hdfs文件有多少个副本数:hdfs fsck /rz.log -files -blocks ...
HDFS 架构设计
官方文档:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
HDFS具有主从架构,一个HDFS集群包含一个NameNode、一个Master Server,用于管理文件系统namespace和客户端对文件的访问。另外还有N个DataNode,通常集群中每个节点一个DataNode,用于管理连接到它们所允许的节点的存储(伪分布式环境中,DataNode跟NameNode位于同一个节点)。HDFS公开文件系统的namespace并允许用户数据存储。存储到HDFS的文件被分成一个或多个块,这些块存储在一组DataNode中。NameNode执行文件系统namespace操作,如打开、关闭和重命名文件和目录。它还确定块到DataNode的映射。DataNode负责提供来自文件系统客户端的读取和写入请求。DataNode还执行块创建,删除和复制。
HDFS进程
NN: 名称节点 DN:数据节点 SNN:第二名称节点
Block块
大小:128M 参数:hdfs-site.xml dfs.blocksize
副本数
生产环境:3 参数:hdfs-site.xml dfs.replication
NameNode
NameNode:文件系统的命名空间
DataNode
DataNode:存储数据库 + 数据块的校验和 与NameNode通信:
Secondary NameNode
读写的操作记录在EditLog,不会在fsimage NN: EditLog:实时记录 fsimage:1小时 SNN:定期合并fsimage + EditLog为新的fsimage,推送给NN
Namespace
数据复制
副本放置策略
如果复制因子为3, 第一副本:放置在上传文件的DataNode上。如果是集群外提交,则随机挑选一台磁盘不太慢、CPU不太忙的节点上; 第二副本:放置在与第一个副本不同的机架的节点上; 第三副本:与第二个副本不同机架的不同节点上; 如果还有更多的副本:随机放在节点中; 如果副本数m>DataNode节点数n,最终数据在集群上会保存n个副本。这是因为NameNode不允许DataNode具有一个块的多个副本,文件创建时副本数是当时的DataNode总数。
安全模式
文件大系统元数据的持久性
通信协议
空间回收
文件删除和取消删除
降低复制因子
复制因子减少时,NameNode选择可以删除的多余副本。下一个Heartbeat将此信息传输到DataNode。DataNode删除相应的block,释放可用空间。
文件读流程
读操作是对于client端是透明操作,感觉是连续的数据流,不care它是不是经过NN。
画图表示HDFS文件的读流程(TO BE UPDATED LATER ON)。 InputStream
文件写流程
OutputStream
常用命令: 查看hdfs文件有多少个副本数:hdfs fsck /rz.log -files -blocks ...