IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop HDFS文件系统 -> 正文阅读

[大数据]Hadoop HDFS文件系统

HDFS全称Hadoop Distributed File System。它是一个基于Java开发的分布式文件系统,用于在hadoop集群的多个节点上存储大数据量文件。

HDFS是一个主-从(master-slave)架构,一个hadoop集群中HDFS只能有一个Namenode和多个Datanode组成,这两类节点分工明确:

1、NameNode(名字节点):HDFS系统中只有一个,是一个中心服务器角色,负责管理构建HDFS的名字空间(namespace),比如打开、关闭、重命名文件或目录;管理和检索多个DataNode的实际数据所需的所有元数据。

2、DataNode(数据节点):HDFS集群中一般是一个集群节点有一个Datanode,负责管理它所在节点上的存储。在Namenode的统一调度下进行数据块的创建、删除和复制。

HDFS当做一个整体对外暴露文件系统的名字空间,用户可以以文件的形式在上面存储数据。但是从HDFS集群内部把一个文件分解成一个或者多个数据块,存储在一组的Datanode节点上。

下面是Hadoop官方提供的HDFS框架图:

?HDFS文件的读写过程

hdfs读过程,如下图:

1、客户端发送读取文件请求,首先要用HDFS API的open方法,发送请求到Namenode节点,通过Namenode节点获取到文件的块存储的位置(在哪几个datanode上面)。

2、Namenode返回所有block的位置信息,并将这些信息返回给客户端。这里为啥先访问Namenode,虽然Datanode存放文件的块信息,但是文件块的具体位置信息是存放在Namenode上。

3、客户端拿到block的位置信息后调用HDFS API的read方法并行的读取block信息,图中4和5流程是并发的,HDFS默认block存储在三个DataNode节点上,所以每一个block只需要从一个副本读取即可。

4、datanode把结果数据返回给客户端。

hdfs写过程,如下图:

1、客户端发送请求,调用HDFS API的create方法到Namenode,create的入参有上传的文件名,文件大小,文件拥有者。

2、然后Namenode根据上传的文件大小切成多个block块,存储复制到多个Datanode上,并将存储的信息和位置信息返回给客户端。

3、然后客户端调用 HDFS的 write方法将block块写入对应的Datanode上,这里要注意的是hdfs的块是有副本的,默认是3个副本,并不是由客户端一次写入到3个副本当中,而是有block块所在的Datanode产生新的线层进行副本的复制。

4、写完后返回给客户端一个信息,然后客户端再将信息反馈给namenode。

适用:

1、高容错性环境:数据会自动保存多个副本,副本就算丢失,也能够自动回复。

2、适合批处理:可以进行快速的分布式计算,移动计算。

3、适合大数据量的处理:GB/TB级别的数据或百万规模以上文件数量。

4、流式文件的访问:一致性写入,多次读取。

5、可搭建在廉价的机器上,通过分布式集群提高性能,通过高容错性和可靠性的模型框架提供恢复机制。

不适用:

1、数据访问实时性较高的应用场景,对延时要求在毫秒级的应用,不适合采用HDFS进行存储。

2、大量小文件,因为HDFS整个文件系统的文件数量受限于Namenode的内存大小。如果文件过多,比如100万个文件,每个文件占用一个文件块(大小150字节),则最少需要300M的内存。因此上亿级别的文件数量在现有的服务器上难以支持。

3、多方写入,需要在任意的文件上进行修改的应用场景,HDFS采用的是追加方式写入数据,是不支持修改操作的。

参考:https://www.oraclejsq.com/hdpjc/060102518.html

大数据技术 3: 漫画解读 HDFS 原理 - Skye的文章 - 知乎 https://zhuanlan.zhihu.com/p/53641345

技术分享丨HDFS 入门 - 馨宁的文章 - 知乎 https://zhuanlan.zhihu.com/p/21249592

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:09:17  更:2021-08-07 12:09:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 20:14:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码