HDFS基本原理
一、什么是HDFS
HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。
二、HDFS架构
个HDFS集群包含一个单独的NameNode和多个DataNode。HDFS采用一种称为rack-aware的策略。Rack1 和Rack2

备份数据的存放:备份数据的存放是HDFS可靠性和性能的关键。HDFS采用一种称为rack-aware的策略来决定备份数据的存放。通过一个称为Rack Awareness的过程,NameNode决定每个DataNode所属rack id。缺省情况下,一个block块会有三个备份,一个在NameNode指定的DataNode上,一个在指定DataNode非同一rack的DataNode上,一个在指定DataNode同一rack的DataNode上。这种策略综合考虑了同一rack失效、以及不同rack之间数据复制性能问题。
副本的选择:为了降低整体的带宽消耗和读取延时,HDFS会尽量读取最近的副本。如果在同一个rack上有一个副本,那么就读该副本。如果一个HDFS集群跨越多个数据中心,那么将首先尝试读本地数据中心的副本。安全模式:系统启动后先进入安全模式,此时系统中的内容不允许修改和删除,直到安全模式结束。安全模式主要是为了启动检查各个DataNode上数据块的安全性
三、HDFS核心组件详解
*********************************************************NameNode**************************************************

1、NameNode是HDFS的核心模块,也是HDFS架构的master。NomeNode一点宕机则整个HDFS服务不可用。
2、NameNode仅仅存储HDFS的元数据:文件系统中的文件目录结构,并且能跟踪整个集群中的文件。
3、NameNode不存储实际的文件数据,实际数据是存储在DataNode中,他存储的是文件分块的基础数据;能通过文件获取文件的快列表及其分布在哪些dataNode上。
4、NameNode并不会将文件的分块数据持久化存储,这些信息会在HDFS启动时由各个dataNode上报过来。他把这些数据存入内存中。并且会定时对内存中的数据进行快照。所以对于NameNode节点的机器内存应该大一些。
5、NameNode在hadoop 2.0版本之前是单点的,Hadoop 2.0版本才提出了高可用 (High Availability, HA) 解决方案,并且经过多个版本的迭代更新,已经广泛应用于生产环境。
*********************************************************DataNode**************************************************
1、DataNode:HDFS的Slave节点,存储文件实际的数据,负责将数据落入磁盘。所以DataNode节点需要较大的磁盘。
2、DataNode在启动时会将自己发布到NameNode上,并上报自己持有的数据块表。定期向NameNode发送心跳,如果NameNode长时间没有接受到DataNode发送的心跳,NameNode就会认为该DataNode以及失效,将其剔除集群。心跳参数dfs.heartbeat.interval=3(默认3秒发送一次心跳)
3、当某个DateNode宕机后,不会影响数据和集群的可用性。NameNode会安排其他DataNode进行副本复制接管他的工作。
4、DataNode会定时上报自己负责的数据块列表。
*********************************************************Secondary NameNode**************************************************
SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint. 镜像备份的作用:备份fsimage(fsimage是元数据发送检查点时写入文件);日志与镜像的定期合并的作用:将Namenode中edits日志和fsimage合并,防止如果Namenode节点故障,namenode下次启动的时候,会把fsimage加载到内存中,应用edit log,edit log往往很大,导致操作往往很耗时。
四、HDFS操作流程
**************************************************文件上传流程******************************************
1、客户端发起写文件请求 hadoop fs -put
2、nameNode检查上传文件的命名空间是否存在(就是检测文件目录结构是否存在),创建者是否有权限进行操作。然后返回状态高数客户端你可以上传数据
3、客户端按照分块配置大小将文件分块。然后请求NameNode我要上传blk1,副本数是三个,这个文件一共分割了5块。
4、NameNode检测自己管理下的DateNodes是否满足要求,然后返回给客户端三台DateNode节点信息(存储策略是机架模式)。
5、Client端根据返回的DataNode信息选择一个离自己最近的一个DataNode节点,创建pipeLine(数据传输管道),DataNode1->DataNode2创建pipeLine,DataNode2->DataNode3创建pipeLine;DataNode3通过这一串管道传递给client数据传输管道已经建立完毕。
6、client端创建Stream流(以packet为单位传输数据 64kb)上传数据。
7、DataNode1接受并保持源源不断的packet,然后把packet源源不断的传递给DataNode2,DataNode2也做相应的操作。
8、DataNode也通过pipeLine发送ACK认证数据是否接收完毕。
9、第一个数据块上传完毕后client端开始上传第二个数据块
*********************************************************文件的获取流程****************************************
1、client 发起 hadoop fs -get请求
2、NomeNode检查该文件的信息,文件的分块信息和每个分块所对应哪个DateNode,,以及备份信息和备份信息所在哪个DataNode。把这些信息返回给client端。(返回原则也是机架原则,根据网络拓扑将距离最近的DataNode排在前边返回)
3、根据NameNode的信息,请求各个文件块对应的DataNode节点获取文件数据。
4、合并下载过来的数据块,形成一个完整的文件。
HDFS基本原理的更多相关文章
- HDFS基本原理及数据存取实战
---------------------------------------------------------------------------------------------------- ...
- HDFS基本原理总结
HDFS由三个基本组件组成:NameNode,SecondaryName,DataNode,其思想类似于Linux的文件系统,可以进行类比. 1.NameNode介绍: 1.管理整个文件系统的命名空间 ...
- 【图文详解】HDFS基本原理
本文主要详述了HDFS的组成结构,客户端上传下载的过程,以及HDFS的高可用和联邦HDFS等内容.若有不当之处还请留言指出. 当数据集大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区,并 ...
- Hadoop之HDFS(二)HDFS基本原理
HDFS 基本 原理 1,为什么选择 HDFS 存储数据 之所以选择 HDFS 存储数据,因为 HDFS 具有以下优点: 1.高容错性 数据自动保存多个副本.它通过增加副本的形式,提高容错性. 某一 ...
- hdfs的基本原理和基本操作总结
hdfs基本原理 Hadoop分布式文件系统(HDFS)被设计成适合执行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有非常多共同点. 但同一时候,它和 ...
- 最通熟易懂的Hadoop HDFS实践攻略
HDFS是用来解决什么问题?怎么解决的? 如何在命令行下操作HDFS? 如何使用Java API来操作HDFS? 在了解基本思路和操作方法后,进一步深究HDFS具体的读写数据流程 学习并实践本文教程后 ...
- Hadoop_HDFS_02
1. HDFS入门 1.1 HDFS基本概念 HDFS是Hadoop Distribute File System的简称, 意为: Hadoop分布式文件系统. 是Hadoop三大核心组件之一, 作为 ...
- 大数据和Hadoop平台介绍
大数据和Hadoop平台介绍 定义 大数据是指其大小和复杂性无法通过现有常用的工具软件,以合理的成本,在可接受的时限内对其进行捕获.管理和处理的数据集.这些困难包括数据的收入.存储.搜索.共享.分析和 ...
- 定时脚本: 删除HDFS中的过期文件
1. 基本原理: 通过hadoop fs -ls *命令获取相关文件或目录的修改时间,然后与设定的过期时间进行比较,之后执行删除操作即可 2. 相关代码: #!/bin/bash source ~/. ...
随机推荐
- 从高版本的 SQL Server 向低版本的 SQL Server 转移数据
1.在源数据库上右键任务,选择生成脚本- 2.在生成脚本的高级选项中,根据数据库的内容,选择相应的选项,主要是红框圈出的部分,最后选择仅架构(若数据库的数据量不大,可以直接导出 架构和数据,在新数据库 ...
- NSURLSession的文件下载
小文件的下载,代码示例: //NSURLSession的下载 [[[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:@ ...
- DOJO之gridx
GridX简介 Gridx是IBM公司的职员对Dojo中的Grid进行进一步扩展的组件,但是它是重新开发了Grid而不是继承Grid. 虽然同样都是基于Dojo store, 但与DataGrid/E ...
- 《Python自动化测试九章经》
Python是当前非常流行的一门编程语言,它除了在人工智能.数据处理.Web开发.网络爬虫等领域得到广泛使用之外,他也非常适合软件测试人员使用,但是,对于刚入行的测试小白来说,并不知道学习Python ...
- c++ 模板特化与局部特化
c++ 模板特化与局部特化 模板的由来是要处理泛化,也就是任何类型都可以处理.但是泛化的同时,如果针对某种特殊的类型,又更加效率的处理方法.c++提供针对特殊的类型,可以定义不同的处理方法.针对某种特 ...
- linux修改权限
修改system目录(包括子目录)的所有者和组 sudo chown -R seven:seven system
- gn-build
I'm not completely sure from the error you describe but it sounds like you don't have a .gn file in ...
- Introduction to Semidefinite Programming (SDP)
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-251j-introduction-to-mathe ...
- select使用css居右对齐
select{ direction: rtl; } 下面的方法无效 select{ text-align: right; }
- Worker Services的新项目模板
.NET Core3.0创建Worker Services2019-10-24 09:05 成天 阅读(1438) 评论(20) 编辑收藏 .NET CORE 3.0新增了Worker Ser ...