HDFS的工作原理是怎么样的?是如何实现HA模式?

这篇具有很好参考价值的文章主要介绍了HDFS的工作原理是怎么样的?是如何实现HA模式?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文链接:http://www.ibearzmblog.com/#/technology/info?id=714dcb3957e29185493239b269a9ef65

前言

HDFS是能够提供一个分布式文件存储的系统,在大型数据文件的存储中,能够提供高吞吐量的数据访问,那么它是如何实现数据文件的读写的呢?作为集群老大的NameNode当出现服务不可用的情况,HDFS又如何启用备用节点来实现HA的呢?今天我们来好好说下。
HDFS的工作原理是怎么样的?是如何实现HA模式?

HDFS的读写流程

在讲述读写流程前,还是很有必要重新复述下数据块这个概念,在分布式文件系统中,一个大型数据文件会被切分成多个部分,并分别存储在多个DataNode上,每个文件部分就是一个数据块,数据块存储在DataNode上后,对应的DataNode就会将块的信息报告给NameNode。

讲完这些,我们开始说如何读写。

如何读

看下面流程图:
HDFS的工作原理是怎么样的?是如何实现HA模式?
可以看到,要读取HDFS中的文件一共分为6个步骤:

  1. 当HDFS客户端需要读取一个数据文件的时候,首先会调用FileSystem的open()方法获取一个dfs对象(DistributedFileSystem)
  2. DFS通过RPC从NameNnode中获取文件第一批块的位置信息后,会返回一个FsDataInputStream对象。
  3. 返回的FsDataInputStream会被封装成DFSInputStream(分布式文件系统输入流),里面提供了管理NameNode和DataNode输入流的方法。当客户端调用read()方法的时候,DFSInputStream就会找出离客户端最近的DataNode并连接。
  4. 找出DataNode后就会开始读取对应的数据块,数据开始流向客户端。
  5. 当第一个块读取完成后,就会关闭第一个块指向的DataNode连接,然后接着读下一个块。
  6. 当第一批块读取完成后,就会向NameNode获取下一批块的位置信息,然后继续读取。
  7. 当所有块都读取完成后,就会关闭所有的流。

当然,在实际情况下,想一直那么顺利的传输数据是不可能的,如果在读取数据的时候,DataNode和DFSInputStream发生异常的时候,那么DFSInputStream会尝试获取当前读取块第二近的DataNode节点,并会记录哪个DataNode发生错误,后面涉及到该出事DataNode读取的时候,就会自动跳过。

如果读取的块已经坏了,那么就会将这种情况汇报给NameNode,并且从其他DataNode读取该块数据。

如何写

看下面流程图:
HDFS的工作原理是怎么样的?是如何实现HA模式?

  1. 和读操作一样,首先通过FileSystem获取一个DFS对象,并通过DFS对象来的create()方法来创建一个新的文件。
  2. DFS通过RPC调用NameNode去创建一个新文件,NameNode在创建前会做一些额外的校验,如文件是否已经存在、客户端是否有权限创建文件等等。
  3. 前面的操作完成后,DFS会返回一个FsDataOutputStream对象,同样,FsDataOutputStream会被封装成DFSOutputStream(分布式文件系统输入流),同样,DFSOutputStream也提供了协调DataNode和NodeNode的方法。
  4. 当客户端开始写数据的时候,就会将数据块切分成一个个数据包,然后将这些数据包排成一条数据队列。
  5. 多个DataNode组成一条数据管道,当开始传输的时候,首先第一个数据包会传到数据管道的第一个DataNode,当第一个DataNode收到后会将这个数据包传给下一个DataNode。
  6. DFSOutputStream除了数据管道外,还维护着另一个队列:响应队列,这个队列也是由数据包组成的,当DataNode收到数据块的数据包后,就会返回一个响应数据包,当管道中所有的DataNode都收到响应数据包的时候,响应队列才把对应的数据包移除
  7. 客户端在写操作完成后,就会调用close()关闭输出流。
  8. 同时,客户端会通知NameNode把文件标记为已完成,然后NameNode会把文件写入成功的结果返回给客户端。这时整个写操作才完成。

当然,凡是涉及到节点之前的通信,都大概率会出现一些奇怪的问题,例如网络不可用啊、通信节点掉线啊等等,对于这种情况,写操作要比读操作要复杂一点,如果在写操作过程中其中一个DataNode发生错误,那么就有下面几个步骤来处理:

  1. 管道关闭
  2. 正常的DataNode正在写的块会由一个新的ID,并且这个ID会汇报给NameNode,而失败的DataNode上发生错误的块就会在下次上报心跳的时候删掉。
  3. 失败的DataNode会被从管道中移除,而块中剩下的数据包会继续写入到管道里其他的DataNode上。
  4. NameNode同时会标记这个块的副本数量少于指定值,那么会在后面将这个块的副本在其他DataNode上创建。

HDFS的高可用实现

讲完了HDFS的读写流程,我们接下来说下HDFS如何实现高可用。

HDFS的NameNode为单一节点,为HDFS提供对外统一服务,这说明如果NameNode因为某些原因掉线了,那整个HDFS集群就会瘫痪。为了防止这种情况在生产环境中出现,就引入了高可用(HA)模式。

在HA模式中,一般由两个NameNode组成,一个是处于激活(Active)状态,另一个就处于待命(Standby)状态,处于激活状态的NameNode对外提供统一服务,而待命状态的NameNode则不对外提供服务,同时及时同步激活状态的NameNode。当激活的NameNode掉线了,待命的NameNode就马上切换状态,变成Active。

HDFS的高可用架构图如下所示:
HDFS的工作原理是怎么样的?是如何实现HA模式?

在这个架构中出现了一些从没见过的组件,下面我来逐个剖析:

  • NameNode的Active和Standby状态上面说了,这里就不细说。
  • 主备切换器,它是另外一个单独的进程运行,主要负责NameNode的主备切换。主备切换器实时健康NameNode的情况,当NameNode发送故障时,就会通过Zookeeper的选举机制来进行选举和切换。
  • JournalNode集群:这是一个共享数据存储系统,这个系统保存了NameNode在运行过程中产生的HDFS元数据,而备用的NameNode节点则会从通过JournalNode来同步主NameNode的信息。当新的主NameNode确认元数据完全同步后才会对外提供服务。

结尾

HDFS的工作原理已经讲到这里,后面会更新YARN方面的文章。文章来源地址https://www.toymoban.com/news/detail-502155.html

到了这里,关于HDFS的工作原理是怎么样的?是如何实现HA模式?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何提高网站seo排名(关键词排名怎么样优化)

    让排名更稳定提升的优化技巧有哪些? 排名一直是网站优化中的重点问题,网站难免会遇到一些问题导致网站排名波动不稳定,但这对网站的发展是不友好的,那么怎样才能让网站的排名更加稳定呢?下面一起来了解一下。 一、网站空间的稳定安全 网站

    2024年02月13日
    浏览(76)
  • 随身宝怎么样 随身宝是什么以及随身宝如何使用

    现如今随身wifi市场可谓是竞争激烈,现在的随身wifi巨头360随身wifi,小米wifi,小度wifi可谓是wifi市场的三驾马车,但是是否有这样的一款产品可以当随身WiFi使用,可以当移动电源使用,又可以当无线网卡使用,又可以当U盘使用,最后还可以翻墙看《生活大爆炸》。呵呵,小

    2024年02月06日
    浏览(36)
  • 新旧笔记本电脑怎么样转移数据?换电脑数据如何迁移

    新旧笔记本电脑怎么样转移数据 ?小编给大家推荐几个方法,来将旧电脑的数据迁移到新电脑。   方法一:通过互联网的方式,比如邮箱、QQ、微信发送,或者网盘上传再下载等,但这些方法适合不太大的文件数据。 方法二:直接将旧电脑硬盘链接到新电脑上,然后将旧硬

    2024年02月06日
    浏览(79)
  • 云电脑安全性怎么样?企业如何选择安全的云电脑

    云电脑在保障企业数字资产安全方面,采取了一系列严谨而全面的措施。随着企业对于数字化转型的深入推进,数字资产的安全问题日益凸显,而云电脑作为一种新兴的办公模式,正是为解决这一问题而生。云电脑安全吗?可以放心使用吗?云电脑如何保障数据安全性?以下

    2024年04月11日
    浏览(26)
  • gpt人工智能写论文怎么样-chatGTP如何写论文

    使用 GPT 写论文具体的操作方法因人而异,但可以提供一些建议: 充分理解论文的题目、主题和结构,并确定论文所需的内容和方向。 针对论文的不同部分,使用 GPT 模型进行自动化生成或补充,例如摘要、介绍、正文、结论、参考文献等。 对 GPT 生成的文本进行筛选和修改

    2024年02月08日
    浏览(44)
  • 微软 ChatGPT 版 Bing 上线了,使用体验如何?和ChatGPT对比怎么样?

    微软 ChatGPT 版 Bing 是一款集成了 ChatGPT 的新版搜索引擎,可以提供人工智能深度优化后的搜索结果,以及具有人工智能聊天功能的 Bing 搜索。 微软称,在来自 169 个国家和地区的用户进行了为期一周的测试后,有 71% 的测试用户认可了这款新版 Bing,并表示它可以加深用户的参

    2024年02月11日
    浏览(26)
  • 魅族智能路由器怎么样?魅族智能路由器参数配置如何

    魅族智能路由器配置如何呢?相信还有很多朋友对于魅族新产品魅族智能路由器的参数配置还不太清楚,下文小编就为大家带来魅族智能路由器参数方面的内容,一起去了解下吧。 据最新曝光的消息,魅族智能路由器已经在研发中了。看来,除了魅族MX4 Pro之外,魅友们又有一

    2024年02月07日
    浏览(45)
  • 注册安全工程师含金量怎么样,注安证书发展前景如何

    【佑森注安导读】:安全工程师在建筑安全行业发挥着很重要的作用,含金量是高的。一般一线城市注册安全工程师的年收入在15-20w或以上,二三线城市注册安全工程师的月收入在12-15w或以上,接下来就跟着小佑了解一下-注册安全工程师含金量怎么样,注安证书发展前景如何

    2024年02月05日
    浏览(30)
  • 华为云流水线CodeArts Pipeline怎么样?能实现哪些功能?

    华为云流水线服务 CodeArts Pipeline ,旨在提升编排体验,开放插件平台,并提供标准化的DevOps企业治理模型,将华为公司内的优秀研发实践赋能给伙伴和客户。 灵活编排、高效调度 开放流水线插件 内置企业DevOps研发治理模型 体验通道:https://devcloud.cn-north-4.huaweicloud.com/cicd/

    2024年02月15日
    浏览(38)
  • 华为喵王多少钱 华为喵王3g路由器怎么样 华为喵王配置如何

    有关注小米手机的朋友应该知道其最近推出了一款路由器吧?华为手机也学着小米玩起了猜“神奇的玩具”游戏,据爆料称这款“神奇的玩具”代号为“喵王”,是路由器,究竟这款华为喵王多少钱呢?有心的朋友还是想败下来的,那华为喵王功能怎么样?下面这篇文章就来帮

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包