HDFS RBF的Connection管理

2023-11-13

前言


为了解决HDFS Federation下多集群的维护管理,Hadoop社区实现了Router-Based Federation(HDFS-10467)功能。此功能的强大之处在于它在client和集群NN服务之间新加了一层Router的服务。有了这个Router这个服务后,所有客户端的请求将会由这个Router负责转发给下游的NN节点。这样的话,客户端用户就不需要知道下游有哪些NN节点以及各个NN Namespace里分布着什么样的数据了。这些事情Router都会透明地帮client做完。既然Router在这里主要做了请求转发这件事,那么势必它会存在与下游NN建立新的连接然后进行请求转发的步骤。那么问题来了,Router是怎么做这块的处理呢?如果是每次来一个客户端请求,Router对应建立一个新的connection去请求NN,那么这意味着Router会做大量的连接重建立操作,这显然是不太高效的做法。高效一点的做法是是Router自己维护一定的connection,然后尽可能能够复用其中的connection去请求NN。但是这无疑会增加Router Connection这块的管理工作,而且这里还要避免connection泄漏的问题。本文笔者来简单聊聊Router Connection管理这块的内容,Router是如何做到即高效又安全的Connection管理的。

Connection管理的权衡问题


说到Connection管理,这里始终会存在一个权衡问题:是尽可能维护更多的Connection呢还是尽可能少的维护Connection呢?更多的Connection意味着更高的复用率,但同时可能会造成inactive的Connection过多导致影响到下游服务本身。

因此这里Connection管理不是一刀切的做法,没有固定说一定要cache住多少当前的open的Connection,而是一种更加变通的灵活的管理做法。简单来说,当在需要建立更多connection的时候,我们尽量去cache住这些connection。但是当我们发现当下很多connection在一段时间内没有被用到的时候,我们就及时地对其进行close清理掉。RBF的Connection管理正是巧妙地运用了此策略。

RBF的Connection管理


细粒度的Connection Pool划分

在RBF模式下,Router一方面要面对不同client发来的RPC请求,另一方面它还需要转发请求到多个namespace的NN节点。为了做到不同namespace,不同用户间Connection的隔离,Router在这里按照user/namespace/protocol级别进行了Connection的隔离。简单来说,Router按照上述提到的3个维度进行了ConnectionPool的创建,然后每个ConnectionPool自行再进行connection的管理。

Connection的创建


说到connection的管理,它无外乎两大方面的处理,一是connection的创建,二是connection的清理。这里我们先来看看connection的创建。

Router是在每次获取connection的时候如果发现可用connection不够的话,则尝试进行connection的创建的,相关代码如下:

  public ConnectionContext getConnection(UserGroupInformation ugi,
      String nnAddress, Class<?> protocol) throws IOException {
   

    ...

    // 1) 根据user+ns+protocol拼出connectionPoolId
    ConnectionPoolId connectionId =
        new ConnectionPoolId(ugi, nnAddress, protocol);
    ConnectionPool pool = null;
    readLock.lock();
    try {
   
      // 2) 根据connectionPoolId取出对应的ConnectionPool
      pool = this.pools.get(connectionId);
    } finally {
   
      readLock.unlock();
    }

    // Create the pool if not created before
    if (pool == null) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDFS RBF的Connection管理 的相关文章

  • 将 CSV 转换为序列文件

    我有一个 CSV 文件 我想将其转换为 SequenceFile 我最终将使用它来创建 NamedVectors 以在聚类作业中使用 我一直在使用 seqdirectory 命令尝试创建 SequenceFile 然后使用 nv 选项将该输
  • 如何解决使用 Spark 从 S3 重新分区大量数据时从内存中逐出缓存的表分区元数据的问题?

    在尝试从 S3 重新分区数据帧时 我收到一个一般错误 Caused by org apache spark SparkException Job aborted due to stage failure Task 33 in stage 1
  • Spark 写入 hdfs 无法使用 saveAsNewAPIHadoopFile 方法

    我在 CDH 5 2 0 上使用 Spark 1 1 0 并试图确保我可以读取和写入 hdfs 我很快意识到 textFile 和 saveAsTextFile 调用旧的 api 并且似乎与我们的 hdfs 版本不兼容 def testHD
  • Talend 和 Apache Spark?

    我对 Talend 和 Apache Spark 在大数据生态系统中的定位感到困惑 因为 Apache Spark 和 Talend 都可以用于 ETL 有人可以用一个例子解释一下吗 Talend 是一种基于工具的大数据方法 通过内置组件支
  • java.lang.ClassNotFoundException:找不到类 org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem

    我是 Spark 和 Kubernetes 世界的新手 我使用 docker image tool sh 实用程序使用与 Hadoop 3 2 捆绑在一起的官方 Spark 3 0 1 构建了 Spark docker 映像 我还为 Jup
  • 如何直接将一个mapper-reducer的输出发送到另一个mapper-reducer而不将输出保存到hdfs中

    问题最终解决检查底部的我的解决方案 最近 我尝试运行 Mahout in Action 的第 6 章 列表 6 1 6 4 中的推荐示例 但我遇到了一个问题 我用谷歌搜索但找不到解决方案 问题是 我有一对映射器减速器 public fina
  • Hadoop Windows 设置。运行 WordCountJob 时出错:“任何本地目录中都没有可用空间”

    我正在按照此视频教程尝试在我的计算机上设置 hadoop 如何在 Windows 10 上安装 Hadoop https www youtube com watch v zujpglKP0Nw 我已经成功设置它 从 sbin 目录执行 st
  • 将 Spark 添加到 Oozie 共享库

    默认情况下 Oozie 共享 lib 目录提供 Hive Pig 和 Map Reduce 的库 如果我想在 Oozie 上运行 Spark 作业 最好将 Spark lib jar 添加到 Oozie 的共享库 而不是将它们复制到应用程序
  • 将 Apache Zeppelin 连接到 Hive

    我尝试将我的 apache zeppelin 与我的 hive 元存储连接起来 我使用 zeppelin 0 7 3 所以没有 hive 解释器 只有 jdbc 我已将 hive site xml 复制到 zeppelin conf 文件夹
  • Hadoop-reducer 如何获取数据?

    据我所知 映射器为每个减速器生成 1 个分区 减速器如何知道要复制哪个分区 假设有 2 个节点运行用于字数统计程序的映射器 并且配置了 2 个缩减器 如果每个映射节点生成 2 个分区 并且两个节点中的分区都可能包含相同的单词作为键 那么减速
  • 适用于 Python 3.x 的 Hive 客户端

    是否可以使用 Python 3 x 连接到 hadoop 并运行 hive 查询 我正在使用Python 3 4 1 我发现可以按照这里写的方式完成 https cwiki apache org confluence display Hiv
  • 与文件名中的冒号“:”作斗争

    我有以下代码 用于加载大量 csv gz 并将它们转储到其他文件夹中 并将源文件名作为一列 object DailyMerger extends App def allFiles path File List File val parts
  • 全部配对图表上的所有路径

    这可能是一个没有最佳解决方案的问题 假设我有一个有向图 不知道它是否有循环 循环检测将是这个问题的方面之一 给定一组顶点 可能是数百万个顶点 我需要计算给定图的所有唯一对之间的所有不同路径 没有重复顶点的路径 我该如何应对这种情况 让我们看
  • 使用 Java API 在 Hadoop 中移动文件?

    我想使用 Java API 在 HDFS 中移动文件 我想不出办法做到这一点 FileSystem 类似乎只想允许在本地文件系统之间移动 但我想将它们保留在 HDFS 中并将它们移动到那里 我错过了一些基本的东西吗 我能想到的唯一方法是从输
  • 以不同用户身份运行 MapReduce 作业

    我有一个与 Hadoop 交互的 Web 应用程序 Cloudera cdh3u6 特定的用户操作应在集群中启动新的 MapReduce 作业 该集群不是一个安全集群 但它使用简单的组身份验证 因此 如果我以自己的身份通过 ssh 连接到它
  • 如何用snappy解压hadoop的reduce输出文件尾?

    我们的 hadoop 集群使用 snappy 作为默认编解码器 Hadoop作业减少输出文件名就像part r 00000 snappy JSnappy 无法解压缩文件 bcz JSnappy 需要以 SNZ 开头的文件 归约输出文件以某种
  • Spark/Yarn:HDFS 上不存在文件

    我在 AWS 上设置了 Hadoop Yarn 集群 有 1 个主服务器和 3 个从服务器 我已经验证我有 3 个活动节点在端口 50070 和 8088 上运行 我在客户端部署模式下测试了 Spark 作业 一切正常 当我尝试使用 Spa
  • AWS EMR 引导操作为 sudo

    我需要更新 etc hosts适用于我的 EMR 集群 EMR AMI 4 3 中的所有实例 整个脚本无非就是 bin bash echo e ip1 uri1 gt gt etc hosts echo e ip2 uri2 gt gt e
  • 通过Oozie命令行指定多个过滤条件

    我正在尝试通过命令行搜索一些特定的 oozie 作业 我使用以下语法进行相同的操作 oozie jobs filter status RUNNING status KILLED 但是 该命令仅返回正在运行的作业 而不是已杀死的作业 需要帮助
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113

随机推荐

  • python可以在多种平台运行 这体现了python语言的_Python快速编程入门课后习题答案...

    目录 前言 第一章 一 填空题 二 判断题 三 选择题 第二章 一 填空题 二 判断题 三 选择题 第三章 一 填空题 二 判断题 三 选择题 第四章 一 单选题 二 判断题 三 填空题 第五章 一 选择题 二 判断题 三 填空题 第六章
  • 3_服务容错_保护断路器_@EnableCircuitBreaker和引入@SpringCloudApplication

    前言 前面做了一个简单的服务 注册 服务发现 服务提供者和消费者的项目 现在我们还是准备之前的项目代码 1 服务容错保护 准备的项目工程 1 服务注册中心 端口为1111 2 服务提供者 端口为8080 8081 3 服务消费者 端口为90
  • 华为OD机试真题- 天然蓄水库【2023】【JAVA、Python、C++】

    题目描述 描述 公元2919年 人类终于发现了一颗宜居星球 X星 现想在X星一片连绵起伏的山脉间建一个天热蓄水库 如何选取水库边界 使蓄水量最大 要求 山脉用正整数数组s表示 每个元素代表山脉的高度 选取山脉上两个点作为蓄水库的边界 则边界
  • Springboot连接FISCO-BCOS链

    依赖 FISCO BOCS 2 5 0 JAVA 1 8 Spring Boot 2 0 2 官方文档 前期准备 部署FISCO BOCS 2 5 0 引入SDK
  • ue 清理缓存_mpvue应用之组件数据缓存清理

    题图 被mpvue周期搞疯的你 之前介绍过美团外卖C端 H5 小程序页面大量基于mpvue框架的能力 使用Vue组件打通了原生小程序页面和H5页面的隔阂 再结合小程序自带的原生组件功能 就构成了整个外卖跨端应用的终端部分架构 但是随着页面规
  • 唐诗三百首出现最多的字是什么?大数据分析告诉你

    一个人要是长时间一直做一件事 思维容易固化 就像那些从太空回来的宇航员 吃饭时容易丢开拿在手里的勺子 当勺子掉在地上时 哦 我已经回到地球了 所以 适当尝试新鲜事物 既是对大脑的放松 也是开阔思路的好机会 好方法 那这次 博主尝试的新事物是
  • 腾讯面经 集合

    腾讯机器学习复试 gbtd和xgboost区别和优缺点 XGBoost是GBDT一个工程化的实现 第一 GBDT将目标函数泰勒展开到一阶 而xgboost将目标函数泰勒展开到了二阶 使用泰勒展开到二阶的原因 统一损失函数求导的形式以支持自定
  • CFLAGS详解

    Makefile选项CFLAGS LDFLAGS LIBS CFLAGS 表示用于 C 编译器的选项 CXXFLAGS 表示用于 C 编译器的选项 这两个变量实际上涵盖了编译和汇编两个步骤 CFLAGS 指定头文件 h文件 的路径 如 CF
  • XXXXXXXXXXXXX

    Netflix主机性能监视工具Vector http www chinaz com web 2015 0414 398451 shtml 云雀科技是总部位于西雅图的新兴的云服务公司 利用业界 最新技术打造下一代具有高密度动态计算能力的云平台
  • 初学网络安全不可不知的:10款开源安全工具

    随着互联网的不断发展 安全问题也越来越受到企业的重视 但安全问题往往需要大量资金的投入 例如聘请安全工程师 产品研发 测试等流程 这对于那些原本就资金紧缺的企业而言 是绝对无法接受的 因此 为了减少在这方面的资金投入 许多安全人员都会选择使
  • keyframes介绍与调用动画方法

    keyframes介绍 keyframes changecolor 0 background red 50 background red 100 background green 在一个 keyframes 中的样式规则可以由多个百分比构成
  • APB总线详解及手撕代码

    本文的参考资料为官方文档AMBA 3 APB Protocol specification 文档下载地址 https pan baidu com s 1Vsj4RdyCLan6jE quAsEuw pwd w5bi 提取码 w5bi APB
  • Spring Bean如何保证并发安全

    1 可以设置Bean的作用域为原型 这样每次从容器中获取到的Bean就是一个新的实例 避免了多线程共享同一个对象实例的问题 2 不改变Bean作用域的情况下 可以避免在Bean中存可变状态的声明 尽量使用局部变量或使用线程安全的数据结构 3
  • Visual Station 2022的头文件包含目录设置的区别

    1 前言 对vs的包含头文件的组织 你困惑吗 困惑 有点困惑 BullS 在没喊出 BullSHI 之前 我先查了很多博客 结果 有的说 VC Directories gt Include Directories 适用于当前项目 C C g
  • BUUCTF [ACTF2020 新生赛]Exec

    1 刚打开的时候如图所示 先随便用一个地址127 0 0 1 2 然后查下目录127 0 0 1 ls ls看文件目录 发现flag 直接抓127 0 0 1 cat flag 拿到flag flag fdc896b1 e032 4e87
  • 如何训练自己的tokenizer

    训练自己的 tokenizer 通常需要以下几个步骤 准备数据 选择一些文本数据作为训练数据 并将其按照一定的方式拆分成若干个 token 例如将句子按照空格拆分成单词 选择模型 选择一种适合你的任务的模型 例如基于字符的模型或基于单词的模
  • electron 生成 arm64 的包

    vue electron https blog csdn net qq1195566313 article details 131713875 打包配置修改如下 electronBuilder build config appId com
  • 目标检测-YOLOv7代码及训练

    目录 论文及代码下载 代码结构 代码学习 1 train py 1 1 参数 1 2 Resume 训练中断后继续训练 1 3 Train 训练 2 yolov7 yaml 2 1 parameters and anchors 2 2 网络
  • 阿姆达尔定律

    原文地址 作者 Jakob Jenkov 译者 张坤 阿姆达尔定律可以用来计算处理器平行运算之后效率提升的能力 阿姆达尔定律因Gene Amdal 在1967年提出这个定律而得名 绝大多数使用并行或并发系统的开发者有一种并发或并行可能会带来
  • HDFS RBF的Connection管理

    文章目录 前言 Connection管理的权衡问题 RBF的Connection管理 细粒度的Connection Pool划分 Connection的创建 Connection的清理 参考资料 前言 为了解决HDFS Federation