HDFS高阶优化方案:短路本地读取,节点负载平衡器

news2024/11/16 13:52:09

HDFS高阶优化方案

  • 短路本地读取:short circuit local reads
    • 背景
    • 实现
      • 老版本的设计实现
      • 安全性改进版设计实现
        • Unix domain socket
    • 配置
      • 配置一----libhadoop.so
      • 配置二---hdfs-site.xml
  • 节点block负载平衡器:balancer
    • 背景
    • 命令行配置
    • 运行balancer

短路本地读取:short circuit local reads

背景

  • 在HDFS中,不管是local reads(DFSClient和Datanode在同一个结点)还是Remote reads(DFSClient和DataNode不在同一个结点),底层处理方式都是一样的,都先由DataNode读取数据,然后再通过RPC(基于TCP)把数据传给DFSClient。这样处理是比较简单的,但是性能会受到一些影响,因为需要DataNode在中间做一次中转。
  • 尤其Local Reads的时候,既然DFSClient社数据是在一个机器上面,那么很自然的想法,就是让DFSClient绕开DataNode自己去读取数据。所谓的“短路”读取绕过来DataNode,从而允许客户端直接读取文件。显然,这仅在客户端与数据位于同一机器的情况下才可行。短路读取为许多应用提供了显著的性能提升。
    在这里插入图片描述

实现

老版本的设计实现

  • 在HDFS-2246这个JIRA中,因为读取数据DFSClient和数据在同一台机器上,那么DataNode就把数据在文件中的路径,从什么地方开始读(offset)和需要读取多少(length)等信息告诉DFSClient,然后DFSClient去打开文件自己读取。
  • 问题在于配置复杂以及安全问题
    • 首先是配置问题,因为是让DFSClient自己打开文件读取数据,那么就需要配置一个白名单,定义哪些用户拥有访问DataNode的数据目录权限
    • 如果有新用户加入,那么就得修改白名单。需要注意的是,这里是允许客户端访问DataNode的数据目录,也就意味着,任何用户拥有了这个权限,就可以访问目录下其他数据,从而导致了安全漏洞。
      在这里插入图片描述

在这里插入图片描述

安全性改进版设计实现

  • 在HDFS-347中提出来一种新的解决方案,让短路本地读取数据更加安全
    在这里插入图片描述

  • 在linux中,有个技术叫做Unix domain socket。这是一种进程间的通讯方式,它使得同一个机器上的两个进程能以socket的方式通讯

  • 它带来的另一大好处就是,利用它两个进程处理可以传递普通数据外,还可以在进程间传递文件描述符

    • 假设机器上的两个用户a和b,a又有访问某个文件的权限而b没有,而b又需要访问这个文件
    • 借助Unix domain socket可以让a打开文件得到一个文件描述符,然后把文件描述符传递个b,b就能读取文件里买你的内容了,及时它没有相应的权限。
    • 在HDFS的场景里,a就是DataNode,b就是DFSClient,需要读取的文件就是DataNode数据目录中的某个文件
      在这里插入图片描述

Unix domain socket

Unix domain socket(Unix域套接字)是一种用于进程间通信的机制,特别适用于同一台计算机上的进程间通信。它是在Unix和类Unix操作系统中实现的。

Unix domain socket与网络套接字(例如TCP/IP套接字)相比具有以下特点:

安全性:Unix domain socket只能用于同一台计算机上的进程通信,不通过网络,因此相对来说更安全,不容易受到网络攻击。

性能:由于不涉及网络协议的处理,Unix domain socket具有较低的延迟和较高的吞吐量,速度更快。

权限控制:Unix domain socket可以利用文件系统的权限设置,对访问进行精确控制,从而实现更细粒度的权限管理。

Unix domain socket通常被用于本地进程间的通信需求,如某个进程提供服务,其他进程通过Unix domain socket与之进行通信。它广泛应用于各种场景,包括Web服务器、数据库、消息队列等。例如,Nginx等Web服务器可以使用Unix domain socket与后端应用程序进行通信,提高性能和安全性。

总结起来,Unix domain socket是一种本地进程间通信的机制,具有高性能、安全性好,适用于同一台计算机上的进程间通信需求。

配置

配置一----libhadoop.so

  • 因为java不能直接操作Unix domain socket,所以需要安装hadoop的native包libhadoop.so。在编译hadoop源码的时候课可以通过编译native模块获取。可以用如下命令来检查native包时候安装好。
hadoop checknative

在这里插入图片描述

配置二—hdfs-site.xml

  • dfs.client.read.shorticrcuit是打开短路本地读取功能的开关
  • dfs.domain.socket.path是DataNode和DFSClient之间沟通的socket的本地路径

在这里插入图片描述

  • 还要确保socket本地路径提前创建好
mkdir -p /var/lib/hadoop-hdfs

注意:这里创建的是文件夹hadoop-hdfs,而上述配置中的dn_socket是DataNode自己创建的,不是文件夹

节点block负载平衡器:balancer

背景

  • HDFS数据可能并不总是在DataNode之间均匀分布。一个常见的原因是向现有的集群中添加了新的DataNode。HDFS提供了一个Balancer程序,分析block防止信息并且在整个DataNode节点之间平衡数据,知道被视为平衡为止
  • 所谓的平衡指的是每个DataNode的利用率(本机已用空间与本机总容量之比)与集群的利用率(HDFS整体已利用空间与HDFS集群总容量的比)之间相差不超过给定阈值百分比
  • 平衡器无法在单个DataNode上的各个卷(磁盘)之间进行平衡
    在这里插入图片描述

命令行配置

在这里插入图片描述

运行balancer

  • 设置平衡数据传出带宽
hdfs dfsadmin -setBalcanerBandwidth newbandwidth

其中newbandwidth是每个DataNode在平衡操作起价可以使用最大网络带宽量,以每秒字节数为单位
比如:hdfs dfsadmin -setBalcanerBandwidtth 104857600(100M)

  • 运行balancer
    默认参数运行:hdfs balancer
    指定阈值运行:hdfs balancer -threshold 5 balancer将阈值5%运行(默认值10%)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/814825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程创建大盘点

进程创建回顾 通过 fork() 创建子进程,然后通过 execve(...) 将子进程的进程空间替代为 path 所指定程序的进程空间,随后执行 path 所指定的程序 问题 进程创建是否只能依赖于 fork() 和 execve(...) ? 再轮进程创建 fork() 通过完整复制当前进程的方…

金蝶云星空和旺店通·旗舰奇门单据接口对接

金蝶云星空和旺店通旗舰奇门单据接口对接 对接系统:旺店通旗舰奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化智能化管理升…

参数量仅有50KB的超轻量级unet变种网络egeunet【参数和计算量降低494和160倍】医疗图像分割实践

今天看到一篇挺有意思的文章,做的是跟医疗图像分割相关的工作,但是不像之前看到的一些工作一味地去追求高精度,因为医疗领域本身就是一个相对特殊的行业,对于模型产生的结果的精确性要求是很高的,带来的是参数量级的庞…

Pytorch深度学习-----神经网络之卷积层用法详解

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Co…

交通运输安全大数据分析解决方案

当前运输市场竞争激烈,道路运输企业受传统经营观念影响,企业管理者安全意识淡薄,从业人员规范化、流程化的管理水平较低,导致制度规范在落实过程中未能有效监督与管理,执行过程中出现较严重的偏差,其营运车…

【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)

目录 一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 🔴静态数据成员: 🔴静态函数成员: ⭕使用静态成员的优点 ⭕使用静态成员的注意事项 三、友…

国际化警告Fall back to translate ‘creator‘ key with ‘zn‘ locale.

发现是自己粗心写错了一个单词 这个需要改成zh

OC对象内存布局与isa指针

文章目录 一、Objective-C的本质二、一个objc对象如何进行内存布局?考虑父类的情况三、一个objc对象的isa指针指向什么?有什么作用四、objc对象的类方法和实例方法有什么本质区别和联系? 一、Objective-C的本质 Objc的底层实现是C\C代码&…

微信小程序tab加列表demo

一、效果 代码复制即可使用,记得把图标替换成个人工程项目图片。 微信小程序开发经常会遇到各种各样的页面组合,本demo为list列表与tab组合,代码如下: 二、json代码 {"usingComponents": {},"navigationStyle&q…

goctl template一定制化服务配置生成

官网介绍: 模板(Template)是数据驱动生成的基础,所有的代码(rest api、rpc、model、docker、kube)生成都会依赖模板, 默认情况下,模板生成器会选择内存中的模板进行生成&#xff0c…

easyui实用点

easyui实用点 1.下拉框(input框只能选不能手动输入编辑) data-options"editable:false"//不可编辑2.日期框,下拉框,文本框等class class"easyui-datebox"//不带时分秒 class"easyui-datetimebox"…

口碑+丨香港邮政联合极智嘉建立全港首个机器人邮包分拣系统

近日,香港邮政与全球仓储机器人引领者极智嘉(Geek)在其中央邮件中心联手建立全港首个机器人包裹分拣系统。该全新系统采用极智嘉分运结合解决方案,每小时可处理达1,000个邮包,助力香港邮政利用创新科技简化邮包分拣流程、提升工作效率&#x…

allwinner 全志RS485调试,GPIO状态与万用表测量不同

全志RS485调试 思路:UART驱动中已经将485流控功能加进去了,所以我们只需要根据硬件原理图配置一下485脚的GPIO就行了。 硬件原理图: 将UART3 UART4的RTS脚配置为485流控脚就行, RX和TX不需要配置,在pinctrol已经配置好…

热风梳C22.2 NO.3亚马逊加拿大审核标准

加拿大是目前亚马逊所有站点中,商业规模大、发展势头迅猛的站点之一。亚马逊加拿大站每月吸引近1600万访客。其优势在于在加拿大,目前平台的竞争较小,商家容易出单。既然加拿大站有这么多优势,那产品上架需要有哪些检测认证合规方…

[MAUI 项目实战] 手势控制音乐播放器: 手势交互

原理 定义一个拖拽物,和它拖拽的目标,拖拽物可以理解为一个平底锅(pan),拖拽目标是一个坑(pit),当拖拽物进入坑时,拖拽物就会被吸附在坑里。可以脑补一下下图&#xff1…

腾讯地图点标记加调用

先看效果 PHP代码 <?phpnamespace kds_addons\edata\controller;use think\addons\Controller; use think\Db;class Maps extends Controller {// 经纬度计算面积function calculate_area($points){$totalArea 0;$numPoints count($points);if ($numPoints > 2) {…

Qt、Qt Creator下载、安装

一、Qt、Qtcreator简介 Qt是一个跨平台应用开发框架。 Qt Creator是一个跨平台的集成开发环境&#xff08;IDE&#xff09;&#xff0c;集成了Qt所提供的功能&#xff0c;可以单独下载使用&#xff0c;也可以结合Qt组合使用。 二、下载 下载地址&#xff1a;https://downloa…

2023 ChinaJoy | 移远通信携手高通,共创数字娱乐新体验

当前&#xff0c; 5G、AI、大数据等智能创新技术正以惊人的速度蔓延至越来越多的领域&#xff0c;从智能家居、智能交通、智能医疗到智能制造&#xff0c;改变了我们的工作和生活方式。 而在数字娱乐领域&#xff0c;智能创新技术也展现出了巨大的潜力。作为全球领先的物联网整…

13.5.5 【Linux】其他相关文件

除了前一小节谈到的 /etc/securetty 会影响到 root 可登陆的安全终端机&#xff0c; /etc/nologin 会影响到一般使用者是否能够登陆的功能之外&#xff0c;我们也知道 PAM 相关的配置文件在 /etc/pam.d &#xff0c;说明文档在 /usr/share/doc/pam-&#xff08;版本&#xff09…

牛客网Verilog刷题——VL47

牛客网Verilog刷题——VL47 题目答案 题目 实现4bit位宽的格雷码计数器。 电路的接口如下图所示&#xff1a; 输入输出描述&#xff1a; 信号类型输入/输出位宽描述clkwireIntput1时钟信号rst_nwireIntput1异步复位信号&#xff0c;低电平有效gray_outregOutput4输出格雷码计数…