微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HDFS NameNode Hadoop怎么分片

HDFS 上传文件和读文件的流程

(1)由客户端 Client 向 NameNode 节点发出请求;
(2)NameNode 向 Client 返回可以存数据的 Datanode 列表,这里遵循机架感应原则(把副本分别放在不同的机架,甚至不同的数据中心);
(3)客户端首先根据返回的信息先将文件分块(Hadoop2.X 版本每一个 block 为128M,而之前的版本为 64M); 

(4)通过 NameNode 返回的 Datanode 信息,将文件块以写入方式直接发送给Datanode,同时复制到其他两台机器(认一份数据,有两个副本);
(5)数据块传送完成以后,datanode 向 Client 通信,同时向 NameNode 报告;
(6)依照上面(4)到(5)的原理将所有的数据块都上传,结束后向 NameNode 报告表明已经传完所有的数据块。

  • Hadoop1版本
    • 客户端依据最近空闲原则选择一个节点,在不同机架上选择第二个副本节点,在第二个节点的同机架下选择第三个节点
  • Hadoop2版本
    • 客户端依据最近空闲选择一个节点,在当前节点同机架下选择第二个副本节点,在不同机架上选择第三个节点

 

 

NameNode 在启动的时候会做哪些操作

 

NameNode 启动的时候,会加载 fsimage
Fsimage 加载过程完成的操作主要是为了:
(1)从 fsimage 中读取该 HDFS 中保存的每一个目录和每一个文件
(2)初始化每个目录和文件的元数据信息
(3)根据目录和文件的路径,构造出整个 namespace 在内存中的镜像
(4)如果是文件,则读取出该文件包含的所有 blockid,并插入到 BlocksMap 中。

 

 

Hadoop怎么分片

 

HDFS 存储系统中,引入了文件系统的分块概念(block),

块是存储的最小单位,HDFS定义其大小为 64MB。

与单磁盘文件系统相似,存储在 HDFS 上的文件均存储为多个块,不同的是,如果某文件大小没有到达 64MB,该文件也不会占据整个块空间。

在分布式的 HDFS集群上,Hadoop 系统 保证一个块存储在一个 datanode 上。

HDFS 的 namenode 只存储整个文件系统的元数据镜像,这个镜像由配置 dfs.name.dir指定,

datanode 则存有文件Metainfo 和具体的分块,存储路径由 dfs.data.dir 指定。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐