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

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别