千家信息网

NameNode有什么用

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,小编给大家分享一下NameNode有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一 NameNode的作用Name
千家信息网最后更新 2025年12月03日NameNode有什么用

小编给大家分享一下NameNode有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一 NameNode的作用

NameNode是文件系统的大脑,管理文件的命名空间以及对集群中文件的访问,存储着元数据。保存的最重要的两个映射:文件名&数据块(保存在磁盘上,持久化的) ,数据块&DateNode列表(NameNode不保存,是通过DataNode传递的)。

NameNode 与客户端,DataNode,NameNode之间都可以通信,分别通过实现ClientProtocol,DataNodeProtocol和NameNodeProtocol接口。

二 文件读写过程分析

1 文件读取过程

首先客户端使用FileSystem.open()函数打开文件,DistributedFileSystem使用RPC与NameNode通信,得到文件的数据块信息,对于每一个数据块,元数据返回的是保存该数据块的数据节点的地址。

然后DistributedFileSystem 返回FSDataInputStream 给客户端用来读取数据,客户端调用Stream的read()方法开始读取数据。

DFSInputSteam连接保存此文件第一个数据块的最近的数据节点,data从数据节点读到客户端,当数据块读取完毕,DFSInputStream关闭与此数据节点的连接,连接下一个数据块的最近的数据节点。当所有节点读取完毕,调用FSDataInputSteam的close函数关闭。

在读取过程中,如果客户端在与数据节点的通信中,出现错误,则直接读取下个节点,并将此节点记录下来。

2 文件写入过程

首先客户端调用create()方法创建文件,DistributedFileSystem调用RPC与NameNode通信,传达客户端要新建一个文件,元数据节点检查命名空间,确定文件原来不存在,并且客户端有创建文件的权限,然后在创建文件。返回DFSOutputStream,使得客户端写入数据。

DFSOutputStream 将数据分成块,写入data queue,因为数据的写入是流式的,data queue 由Data Stream 读取,并通知其他的数据块(假设默认复制3块),分配的数据节点放在一个pipeline里。

Data Streamer将数据块写入pipeline中的第一个数据节点,第一个数据节点又将数据块写入第二个数据节点,第二个数据节点将数据写入第三个数据节点。DFSOutput Stream为发出去的数据块保存了ack queue,等待pipeline中的数据节点告知数据写入成功。如果数据节点在写入过程中失败,关闭pipeline,将ack queue 中的数据块放入data queue 的开始。失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中另外的两个数据节点。元数据则被通知,复制块数目不足,将会创建第三份备份。

当客户端结束写入数据,则调用stream的close()函数

三 java API 对文件的基本操作

1 FileSystem类(开启文件系统)

Configuration conf=new Configuration();//获取配置信息FileSystem fs=FileSystem.get(URI.create(uri),conf);//得到地址InputStream input=null;input=fs.open(new Path(uri));IOUtils.copyBytes(input,System.out,4096,false);//读取文件,打印出来IOUtils.closeStream(input);

2 FileStatus类(查看文件状态)

//查看HDFS中文件或者目录的元信息。FileStatus fstus=fs.getFileStatus(new Path(uri));fstus.getPath();//得到文件路径fstus.getLen(); //得到文件长度fstus.ModificationTime()//得到最新修改时间fstus.getReplication()//得到文件备份树fstus.getOwner()//得到文件拥有者

3 BlockLocation(查看数据块的位置)

//查找某个文件Block在HDFS集群的位置。FileStatus fstus=fs.getFileStatus(new Path(uri));BlockLocation []block=fs.getFileBlockLocations(fstus,0,fstus.getLen));

4 查看文件是否存在

//列出HDFS下的所有文件。检查是否存在,使用exist()方法。Path []paths=new Path[args.length];FileStatus fstus=fs.listStatus(paths);Path []listedPaths=FileUtil.stat2Paths(fstus);for(Path p:listedPaths){       System.out.println(p);}

以上是"NameNode有什么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 文件 节点 客户 客户端 过程 通信 信息 函数 方法 篇文章 两个 位置 内容 地址 备份 空间 系统 集群 检查 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 全面加强村级网络安全建设通知 江西软件开发工程学院 中华人民共和国网络安全战 数据库语言中比较时间 虹口区网络技术咨询零售价格 实验五 数据库的安全性设计 睿云服务器远程连接不了 我身边的网络安全作文800 网络安全模板的优点 还原数据库必须选择还原来源 阿里云服务器默认密码 边缘服务器创建证书 通州区数据库耐磨材料价格优惠 数据库创建表空间的参数 个人怎么建立计算机服务器 区市两级人大检查网络安全 烨宇软件开发有限公司 极差制直销软件开发公司电话 遇到网络安全问题英文 计算机网络技术实训14 当前学生网络安全意识 微信支付服务器版本 虹口区网络技术咨询零售价格 青浦区服务器回收哪里有 上海智能巡检软件开发怎么收费 arcgis批量管理数据库 pg数据库配置文件路径 数据库中截取标准日期的年 互联网黑科技干货满满 网络安全推普周主题班会
0