HDFS分布式存储框架
来源:互联网 发布:淘宝装修教学视频 编辑:程序博客网 时间:2024/05/21 05:41
HDFS实现了大数据的分布式存储,在HDFS集群中主要包括namenode节点和datanode节点。
namenode节点
namenode节点负责管理元数据信息以及响应客户端的请求(上传、下载...注意,HDFS集群不支持修改操作)。
管理元数据
什么是元数据,为什么需要对元数据信息进行管理呢?因为集群是分布式的,不是单机存储(文件存储在真是路径下)。虽然是分布式存储,但是我们访问的时候实际上是看不到集群的,就像是在一个计算机上进行操作(这台计算机如同Linux系统一般,所有文件存储在根目录“/”下),用户不需要知道文件具体存放在集群中的哪个节点。要实现这样的功能,就需要元数据信息。总的来说,元数据保存了虚拟路径到真实路径的映射(一条元数据信息大概占用150byte)。虚拟路径是指HDFS中的路径,真实路径包括了一下信息:文件具体切成了几个block,每个block偏移量及具体存放位置。
元数据的存储目录在集群启动之前已经创建好,我们知道集群启动前需要对namenode进行格式化操作(hdfs namenode -format),这个格式化操作其实就是创建用来保持元数据的目录,并写入一些文件,元数据信息及其存储路径(真实路径)如下图所示。可以看出元数据分为两种,分别是fsimage和edits。其中edits保存最新的元数据信息,fsimage保存较旧的元数据(当edits大到一定程度时合并到fsimage,合并操作(checkpoint)由secondNamenode负责)。
响应客户端请求
对HDFS的访问是通过namenode来完成。当用户上传文件时,首先需要向namenode申请,namenode返回集群中的datanode给用户所在主机(同时,namenode也保存了所上传文件的元数据信息,写入了fsimage),然后向这些datanode写入。当需要从集群中下载文件时,首先把文件的虚拟路径丢给namenode,namenode找到虚拟路径所对应的真实路径返回给用户所在主机,然后从真实路径进行下载。下载文件时涉及到一个问题,就是对元数据信息进行检索,当集群存储的文件很多时,元数据信息可能有几个G,怎么对这个文件进行快速的检索?直接对磁盘中的文件进行检索肯定是不行的,这样很慢,实际情况是namenode启动时会把元数据信息加载到内存中(edits和fsimage都加载),实现快速访问。因此,namenode节点需要配备较大的内存(每百万数据块需要1000MB内存,一个数据块一条元数据信息)
datanode节点
datanode节点工作机制相对namenode简单很多,datanode负责真实数据的存储。datanode上存储的文件是以block为单位,block默认大小为128M,小于128M的文件也视为一个block,大于128M的文件会被切分成多个block。block的存储路径及block文件如下图所示。
- HDFS分布式存储框架
- HDFS分布式存储及特点
- 后端分布式系列:分布式存储-HDFS 架构解析
- php 使用 hdfs 分布式存储海量小文件
- php 使用 hdfs 分布式存储海量小文件
- hbase安装(分布式+外挂zk+hdfs存储)
- 分布式内存文件系统alluxio的安装,底层存储使用hdfs
- 分布式存储-HDFS 与 GFS 的设计差异
- 简析分布式计算框架:Hive HBase Hadoop HDFS
- Moosefs分布式存储框架详细介绍
- PacificA:微软设计的分布式存储框架
- 后端分布式系列:分布式存储-HDFS NameNode 设计实现解析
- 后端分布式系列:分布式存储-HDFS DataNode 设计实现解析
- 后端分布式系列:分布式存储-HDFS Client 设计实现解析
- 后端分布式系列:分布式存储-HDFS 异常处理与恢复
- 后端分布式系列:分布式存储-HDFS 与 GFS 的设计差异
- 谈谈Hadoop框架的底层存储组件HDFS
- HDFS-hadoop分布式文件系统
- IIS6.0 IIS7.5应用程序池自动停止的解决方法
- 智能制造的一些个人感想
- 程序是怎么跑起来的? —— CPU 是什么?C/C++程序的运行
- fg,bg,jobs.&,ctrl+z
- php消息队列的应用
- HDFS分布式存储框架
- java的类和对象
- service unavailable iis应用程序池自动停止关闭的原因
- P1035 贪婪的送礼者
- Activity 生命周期
- 如何快速office2010安装并激活
- python中的%s %是什么意思
- tshark批量切流实践和思考
- java 微信开发token验证失败的一种情况