iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >HDFS机架感知
  • 293
分享到

HDFS机架感知

HDFS机架感知 2018-07-20 10:07:10 293人浏览 绘本
摘要

通常大型 hadoop 集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,Namenode 设法将数据块副本保存在不同的机架上以提高容错性。 Hadoo

HDFS机架感知

通常大型 hadoop 集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,Namenode 设法将数据块副本保存在不同的机架上以提高容错性。

Hadoop版本:2.9.2

什么是机架感知

通常大型 Hadoop 集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,NameNode 设法将数据块副本保存在不同的机架上以提高容错性。

hdfs 不能够自动判断集群中各个 DataNode 的网络状况情况,Hadoop 允许集群的管理员通过配置 net.topology.script.file.name 参数来确定节点所处的机架,配置文件提供了 ip 到 rackid 的翻译。NameNode 通过这个配置知道集群中各个 DataNode 机器的 rackid。如果 net.topology.script.file.name 没有设定,则每个 ip 都会被翻译成 /default-rack。机器感知如下图所示:

image-20220108190458452

图中的 D 和 R 是交换机,H 是 DataNode,则 H1 的 rackid = /D1/R1/H1,有了 rackid 信息(这些 rackid 信息可以通过 net.topology.script.file.name 配置)就可以计算出任意两台 DataNode 之间的距离。

  • distance(/D1/R1/H1 , /D1/R1/H1) = 0 相同的 DataNode
  • distance(/D1/R1/H1 , /D1/R1/H2) = 2 同 rack 下的不同 DataNode
  • distance(/D1/R1/H1 , /D1/R2/H4) = 4 同 IDC 下的不同 DataNode
  • distance(/D1/R1/H1 , /D2/R3/H7) = 6 不同 IDC 下的 DataNode

说明:

  1. 当没有配置机架信息时,所有的机器 Hadoop 都在同一个默认的机架下,名为 "/defult-rack",这种情况的任何一台 DataNode 机器,bug物理上是否属于同一个机架,都会被认为是在同一个机架下。
  2. 一旦配置 net.topology.script.file.name,就按照网络拓扑结构来寻找 DataNode:net.topology.script.file.name 这个配置选项的 value 指定为一个可执行程序,通常为一个脚本。

Hadoop机架感知的作用

不开启机架感知的缺点

默认情况下,hadoop 的机架感知是没有被启用的。所以,在通常情况下,hadoop 集群的 HDFS 在选机器的时候,是随机选择的。
也就是说,如果实际节点不完全在相同的机架,但是又没有配置机架感知很有可能在写数据时:

hadoop 将第一块数据 block1 写到了 rack1 上,然后随机的选择下将 block2 写入到了 rack2 下,此时两个 rack 之间产生了数据传输的流量,再接下来,在随机的情况下,又将 block3 重新又写回了 rack1,此时,两个 rack 之间又产生了一次数据流量。在 job 处理的数据量非常的大,或者往 hadoop 推送的数据量非常大的时候,这种情况会造成 rack 之间的网络流量成倍的上升,成为性能的瓶颈,进而影响作业的性能以至于整个集群的服务。

开启机架感知的优势

不同节点之间的通信能够尽量发生在同一个机架之内,而不是跨机架;

为了提高容错能力,DataNode 会尽可能把数据块的副本放到多个机架上。

机架感知的配置

检查当前集群机架配置情况

执行hdfs dfsadmin -printTopology打印当前机架信息,可以看到默认所有节点都是一个机架 default-rack,此时没有配置机架感知。

hdfs dfsadmin -printTopology

image-20220326095700480

自定义机器机架位置

新建机架配置文件topology.data

vim $HADOOP_HOME/topology.data

由于官方配置文件没有确切的说明到底是主机名还是 ip 地址会被传入到脚本,所以在脚本中最好兼容主机名和 ip 地址。

192.168.166.121   hadoop1       /switch1/rack1
192.168.166.122   hadoop2       /switch1/rack1
192.168.166.123   hadoop3       /switch1/rack2

自定义机架感知脚本

在Hadoop的安装目录下新建脚本topology.sh

vim $HADOOP_HOME/topology.sh

编写脚本内容

#!/bin/bash
# 此处是你的机架配置文件topology.sh所在目录
HADOOP_CONF=/opt/servers/hadoop
while [ $# -gt 0 ] ;
do
        #脚本第一个参数节点ip或者主机名称赋值给nodeArg
        nodeArg=$1
        #以只读的方式打开机架配置文件
        exec<${HADOOP_CONF}/topology.data
        #声明返回值临时变量
        result=""
        #开始逐行读取
        while read line
        do
                #赋值行内容给ar,通过这种 变量=( 值 )的方式赋值,下面可以通过数组的方式取出每个词
                ar=( $line )
                #判断输入的主机名或者ip是否和该行匹配
                if [ "${ar[0]}" = "$nodeArg" ]||[ "${ar[1]}" = "$nodeArg" ]
                then
                        #将机架信息赋值给result
                        result="${ar[2]}"
                fi
        done
        shift
        #-z判断字符串长度是否为0,不为0输出实际机架,为0返回默认机架信息
        if [ -z "$result" ]
        then
                echo -n "/default-rack"
        else
                echo -n "$result"
        fi
done

配置core-site.xml文件机架感知

脚本必须添加可执行权限

chmod 777 topology.sh

修改 core-site.xml 文件。



    net.topology.script.file.name
    
    /opt/servers/hadoop/topology.sh

分发配置文件和脚本

rsync-script etc/hadoop/core-site.xml

rsync-script topology.*

验证机架感知配置

重启集群,执行 hdfs dfsadmin -printTopology 打印机架信息,可以看到集群已经按照配置感应到节点机架位置。

hdfs dfsadmin -printTopology

image-20220326100557197

测试上传文件,因为只搭建了三个节点,因此设置副本数为2,查看两个副本是否存在不同的机架rack1和rack2上的节点。

在 hadoop2.8 版本之前的版本上述的结论可能不同,主要跟 Hadoop 的副本策略有关,详细的副本策略请看 https://weixiaodyanlei.xyz/arcHives/hdfs-fu-ben-ji-zhi

hdfs dfs -D dfs.replication=2 -put LICENSE.txt /

可以通过如下命令查看 HDFS 中的文件所在机架

hdfs fsck /LICENSE.txt -blocks -files -locations -racks

image-20220326104255237

参考博客:Https://blog.csdn.net/qq_31454379/article/details/105497503

原文地址:https://www.cnblogs.com/dawn-lewis/archive/2022/03/26/16058800.html

您可能感兴趣的文档:

--结束END--

本文标题: HDFS机架感知

本文链接: https://www.lsjlt.com/news/9197.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HDFS中机架感知策略的示例分析
    这篇文章将为大家详细讲解有关HDFS中机架感知策略的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通常来说大型的Hadoop集群是以机架的形式来组织的他们分布在不同的机架上面,同一个机架节点往往通...
    99+
    2023-06-02
  • Hadoop配置机架感知(python脚
    昨天QQ群里提了一个hadoop运行效率分配的问题,总结一下,写个文章。集群使用hadoop-1.0.3有些hadoop集群在运行的时候,不完全是绝对平均的分配,不过需要尽可能平均的分配任务,避免某一台或者某几台服务器任务过重,其他服务器无...
    99+
    2023-01-31
    机架 Hadoop python
  • hadoop机架感知怎么配置
    本篇内容主要讲解“hadoop机架感知怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop机架感知怎么配置”吧!背景Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDF...
    99+
    2023-06-03
  • HDFS架构如何设计
    这篇文章主要介绍HDFS架构如何设计,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!HDFS架构设计:1.NN(NameNode):主要是维护管理文件命名空间,其中包括了文件名称,文件的权限,创建时间,副本数,文件被分...
    99+
    2023-06-03
  • Python机器学习多层感知机原理解析
    目录隐藏层从线性到非线性激活函数ReLU函数sigmoid函数tanh函数隐藏层 我们在前面描述了仿射变换,它是一个带有偏置项的线性变换。首先,回想下之前下图中所示的softmax回...
    99+
    2024-04-02
  • pyTorch深度学习多层感知机的实现
    目录激活函数多层感知机的PyTorch实现激活函数 前两节实现的传送门 pyTorch深度学习softmax实现解析 pyTorch深入学习梯度和Linear Regression实...
    99+
    2024-04-02
  • 机器学习中感知器是怎么产生的
    本篇内容介绍了“机器学习中感知器是怎么产生的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!感知器的诞生——从样本中学习神经网络的AI先驱们一...
    99+
    2023-06-02
  • JAVA实现感知器算法
    简述随着互联网的高速发展,A(AI)B(BigData)C(Cloud)已经成为当下的核心发展方向,假如三者深度结合的话,AI是其中最核心的部分。所以如果说在未来社会,每个人都必须要学会编程的话,那么对于程序员来说,人工智能则是他们所必须...
    99+
    2023-05-30
  • 图文详解感知机算法原理及Python实现
    目录写在前面1.什么是线性模型2.感知机概述3.手推感知机原理4.Python实现4.1 创建感知机类4.2 更新权重与偏置4.3 判断误分类点4.4 训练感知机4.5 动图可视化5...
    99+
    2024-04-02
  • 数据安全态势感知
    产品简介 数据安全态势感知系统(VS-DSSA)是一款以数据访问行为分析为基础的数据安全防护和管理系统。该系统通过对数据库审计、数据库防火墙、数据加密、数据脱敏等各种数据安全产品采集的信息进行集中处理,...
    99+
    2024-04-02
  • Win9新功能曝光:存储感知+Wi-Fi感知 新功能自于Windows Phone
      Win9新功能曝光:存储感知+Wi-Fi感知   随着Windows 9截图的不断曝光,开始菜单的回归、虚拟桌面等传闻一一验证,同时也带来了许多之前未知的新特性,如通知中心,Storage Sense、Wi-Fi S...
    99+
    2023-06-07
    wifi感知 wifi感知怎么用 Win9新功能曝光 存储感知 感知 Wi-Fi感知 新功能 Win9 存储 Windows Phone
  • TensorFlow神经网络创建多层感知机MNIST数据集
    前面使用TensorFlow实现一个完整的Softmax Regression,并在MNIST数据及上取得了约92%的正确率。 前文传送门: TensorFlow教程Softmax逻...
    99+
    2024-04-02
  • pytorch神经网络从零开始实现多层感知机
    目录初始化模型参数激活函数模型损失函数训练我们已经在数学上描述了多层感知机,现在让我们尝试自己实现一个多层感知机。为了与我们之前使用softmax回归获得的结果进行比较,我们将继续使...
    99+
    2024-04-02
  • Windows11怎么打开存储感知
    本篇内容主要讲解“Windows11怎么打开存储感知”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Windows11怎么打开存储感知”吧! ...
    99+
    2023-04-07
    windows11
  • 无感知刷新Token是什么
    这篇文章主要介绍了无感知刷新Token是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇无感知刷新Token是什么文章都会有所收获,下面我们一起来看看吧。Token认证的原理在Web应用中,常见的Token认...
    99+
    2023-07-05
  • 无感知刷新Token示例简析
    目录引言Token认证的原理什么是无感知刷新Token实现步骤步骤一:获取Access Token和Refresh Token步骤二:在请求中携带Access Token步骤三:拦截...
    99+
    2023-05-14
    无感知刷新Token Token 刷新
  • HDFS-Hadoop NameNode高可用机制
    目录1 - 为什么要高可用 2 - NameNode 的高可用发展史 3 - HDFS 的高可用架构 3.1 Standby 和 Active 的命名空间保持一致 3.2 同一时刻只...
    99+
    2024-04-02
  • Hadoop分布式文件系统HDFS架构分析
    本文小编为大家详细介绍“Hadoop分布式文件系统HDFS架构分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Hadoop分布式文件系统HDFS架构分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Hadoo...
    99+
    2023-06-27
  • Python深度学习pytorch神经网络多层感知机简洁实现
    我们可以通过高级API更简洁地实现多层感知机。 import torch from torch import nn from d2l import torch as d2l ...
    99+
    2024-04-02
  • Python中怎么实现一个感知器
    这篇文章将为大家详细讲解有关Python中怎么实现一个感知器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是感知器生物神经元示意图感知器的概念类似于大脑基本处理单元神经元的工作原理。神经...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作