Hadoop教程

HDFS NameNode Hadoop怎么分片

本文主要是介绍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 指定。

 

 

这篇关于HDFS NameNode Hadoop怎么分片的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!