【HDFS】客户端读某个块时,如何对块的各个副本进行网络距离排序?

这篇具有很好参考价值的文章主要介绍了【HDFS】客户端读某个块时,如何对块的各个副本进行网络距离排序?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文包含如下内容:
① 通过图解+源码分析/A1/B1/node1和 /A1/B2/node2 这两个节点的网络距离怎么算出来的
② 客户端读文件时,副本的优先级。(怎么排序的,排序规则都有哪些?)
③ 我们集群发现的一个问题。

客户端读时,通过调用getBlockLocations RPC 获取文件的各个块。
在给客户端返回这些块信息之前,NameNode会对每个块的各个副本(例如默认的3副本)按照一定规则排序。

这些规则大概有:
① 把在decommissioned/stale/slow这些状态节点上的副本移到后面;
② 计算客户端与每个副本所在节点的网络距离,把距离小的放在前面;
③ 同时也会考虑 storage type、节点的load(Xceiver线程数)等因素。

顺着 ClientProtocol#getBlockLocations 这个RPC方法往下找,最终找到相关的源码位置,
org.apache.hadoop.hdfs.server.namenode.FSNamesystem#sortLocatedBlocks方法:

此方法参数:文章来源地址https://www.toymoban.com/news/detail-637407.html

  • clientMachine:代表客户端机器的字符串,一般是ip;
  • blocks:客户端要读的文件的块的信息(LocatedBlocks对象里有LocatedBlock对象的列表)。
  private 

到了这里,关于【HDFS】客户端读某个块时,如何对块的各个副本进行网络距离排序?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【大数据】HDFS客户端命令行(hdfs dfs)详细使用说明

    hadoop分布式文件系统客户端命令行操作 全局变量说明 Path 路径支持正则表达式 通配符 名称 匹配 * 星号 匹配0或多个字符 ? 问号 匹配单一字符 [ab] 字符类别 匹配{a,b}中的一个字符 [^ab] 非字符类别 匹配不是{a,b}中的一个字符 [a-b] 字符范围 匹配一个在{a,b}范围内的 字符(包括

    2024年02月09日
    浏览(36)
  • 【Hadoop】HDFS读写流程和客户端命令使用

    🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步

    2024年02月11日
    浏览(30)
  • 【HDFS】ResponseProcessor线程详解以及客户端backoff反压

    ResponseProcessor如何处理datanode侧发过来的packet ack的 客户端侧backoff逻辑。 ResponseProcessor:主要功能是处理来自datanode的响应。当一个packet的响应到达时,会把这个packet从ackQueue里移除。

    2024年02月11日
    浏览(54)
  • 【HDFS】每天一个RPC系列----complete(二):客户端侧

    上图给出了最终会调用到complete RPC的客户端侧方法链路(除去Router那条线了)。 org.apache.hadoop.hdfs.DFSOutputStream#completeFile(org.apache.hadoop.hdfs.protocol.ExtendedBlock): 下面这个方法在complete rpc返回true之前,会进行重试,直到超过最大重试次数抛异常。 另外需要注意的是,这个方法在

    2024年02月13日
    浏览(35)
  • “远程客户端操作hdfs创建文件夹”,验证环境是否配置成功,以及HDFS错误整改

    编写“远程客户端操作hdfs创建文件夹”代码,验证环境是否配置成功! 1、错误点1: 改正方法: 第一步:点击文件项目文件模块 第二步:会发现红色框里的显示的是15,这里我们需要改成8,如下图: 2、错误点2: 改正方法: 第一步:点击文件项目文件设置,后按照图中步

    2024年02月12日
    浏览(49)
  • 大数据:HDFS操作的客户端big data tools和NFS

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月09日
    浏览(40)
  • 【HDFS】Hadoop-RPC:客户端侧通过Client.Connection#sendRpcRequest方法发送RPC序列化数据

    org.apache.hadoop.ipc.Client.Connection#sendRpcRequest : 这个方法是客户端侧向服务端发送RPC请求的地方。调用点是Client#call方法过来的。 此方法代码注释里描述了一个细节:这个向服务端发送RPC请求数据的过程并不是由Connection线程发送的,而是其他的线程(sendParamsExecutor这个线程池)

    2024年02月09日
    浏览(37)
  • RustDesk自建中转服务器如何自己编译 RustDesk客户端,将企业固定IP/域名写进客户端,客户端安装无需配置直接使用(三)

    Ubuntu20.04.4 LTS Docker Version: 20.10.12 RustDesk1.20 Git-2.39.0-64-bit visual studio 2022 VSCodeUserSetup-x64-1.74.1 RustDesk自建中转服务器如何自己编译 RustDesk客户端,将企业固定IP/域名写进客户端,客户端安装无需配置直接使 最近有粉丝反映,编译最后会提示key不匹配等问题,拉取普通开源版,别

    2024年02月05日
    浏览(126)
  • Windows如何部署TortoiseSVN客户端

    TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用户进行版本控制和团队协作,广泛应用于软件开发和项目管理领域。 TortoiseSVN主要用于管理项目代码的版本控制,可以追踪文件的修改、记录变更历史、解决冲突等

    2024年01月21日
    浏览(42)
  • SQLServer如何获取客户端IP

    SQLServer如何获取客户端IP 很多用户询问如何通过SQLServer获取客户端IP从而定位一些问题,比如链接泄露,其实主要是利用几个相关视图,如下给出一些SQL方便用户排查 当前链接 所有链接 查看更详细的链接参数配置 ------获取

    2024年02月09日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包