hadoop 配置 机架感知 rack awareness

2023-11-25 11:51

本文主要是介绍hadoop 配置 机架感知 rack awareness,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Rack awareness 机架感知

1、什么是机架感知,hadoop的策略是什么

这是Hadoop的机架感知机制。

机架感知(RackAwareness)

通常,大型Hadoop集群会分布在很多机架上。在这种情况下,

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

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

综合考虑这两点的基础上Hadoop设计了机架感知功能。

机架感知设计思想

首先,一个重要的假设前提是HDFS运行于一个具有树状网络拓扑结构的集群上。

例如集群由多个数据中心组成,每个数据中心里有多个机架,而每个机架上有多台计算机(数据节点)

网络拓扑(NetworkTopology)


在Hadoop里,以类似于一种文件目录结构的方式来表示节点。

例如,R1的位置可以表示为 /D1/R1,而H12的位置可以表示为 /D2/R4/H12。


当数据节点启动的时候,需要通过一种机制来明确它在集群中的位置,才能构建完整的网络拓扑图。

因此,首先它需要确认它的上级节点(通常也就是机架)的位置。数据节点程序支持选项”-p<id>”或”-parent<id>”从命令行读入上级节点位置。

如果没有指定这个选项,那么会使用一个默认的上级节点。

至于如何获取上级节点信息,由实施Hadoop的机构自行决定。一个常用的做法是使用脚本打印当前机器的上级节点信息到标准输出stdout。

这样数据节点启动的时候就可以获取到上级节点的信息(Hadoop应该是通过接口’DNSToSwitchMapping’来解析这个信息,具体请参考手册的Class说明)。



数据节点会把它的位置信息发给名称节点。

当名称节点收到数据节点的位置信息以后,它会先检查网络拓扑中是否已经有这个数据节点的记录。

如果有,它会把旧的记录删除,加入新的节点位置信息。


副本放置(ReplicaPlacement)


数据块的副本放置策略的目的是在以下两者之间取得平衡:

-- 使数据的可靠性和可用性最大化

-- 使写入数据产生的开销最小化

因此,当一个新的数据块被创建的时候,遵循以下规则:


-- 第1个副本放置于本地节点

-- 第2个副本放置于不同的机架

-- 第3个副本放置于本地机架的不同节点

-- 其余的副本在遵循以下限制的前提下随机放置

     -- 1个节点最多放置1个副本

     -- 如果副本数少于2倍机架数,不可以在同一机架放置超过2个副本


当重新复制一个数据块的时候,遵循以下规则:


-- 如果已有1个副本,把第2个副本放置在不同的机架

-- 如果已有2个副本且处于同一机架,把第3个副本放置在不同的机架

-- 如果已有2个副本但不处于同一机架,把第3个副本放置在和第1个副本相同的机架

-- 当可用副本数超过2个的时候,随机放置


当发生数据读取的时候,名称节点首先检查客户端是否位于集群中。

如果是的话,就可以按照由近到远的优先次序决定由哪个数据节点向客户端发送它需要的数据块。

也就是说,对于拥有同一数据块副本的节点来说,在网络拓扑中距离客户端近的节点会优先响应

2、编辑hadoop的配置文件 core-site.xml

        <property>
                <name>net.topology.script.file.name</name>
                <value>/home/hadoop/hadoop-2.7.1/rack.py</value>

        </property>

其中rack.py可以采有其它编程语言,例如shell,c等,路径也可改变,但要注意权限问题

3、在指定目录下编辑rack.py


#!/usr/bin/python
import sys
if sys.argv[1]=="192.168.137.13":
        print "/hadoop-rackA"
elif sys.argv[1]=="192.168.137.14":
        print "/hadoop-rackB"
elif sys.argv[1]=="192.168.137.15":
        print "/hadoop-rackB"
else:
        print "/default-rack"
保存后,加上执行权限

4、测试

stop-dfs.sh

start-dfs.sh

hdfs dfsadmin -printTopology

[hadoop@hadoop-namenode hadoop]$ hdfs dfsadmin -printTopology
Rack: /hadoop-rackA
   192.168.137.13:50010 (hadoop-datanode1)

Rack: /hadoop-rackB
   192.168.137.14:50010 (hadoop-datanode2)
   192.168.137.15:50010 (hadoop-datanode3)




这篇关于hadoop 配置 机架感知 rack awareness的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/423750

相关文章

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注