[HDFS_add_3] HDFS 机架感知

时间:2023-02-24 21:24:04

0. 说明

   HDFS 副本存放策略 && 配置机架感知


1. HDFS 的副本存放策略

  HDFS 的副本存放策略是将一个副本存放在本地机架节点上,另外两个副本放在不同机架的不同节点上。

  这样集群可在完全失去某一机架的情况下还能存活。同时,这种策略减少了机架间的数据传输,提高了写操作的效率,因为数据块只存放在两个不同的机架上,减少了读取数据时需要的网络传输总带宽。这样在一定程度上兼顾了数据安全和网络传输的开销。

  [HDFS_add_3] HDFS 机架感知


2. 配置机架感知

rack node num
1 s101 | s102 | s103 1
2 s104 | s105 2

  验证副本放置策略:3副本

  本地机架放一个 s102 | s103

  离架放两个 s104 & s105

  0. 将 s105 配置为 DataNode

# 修改 slaves
vi slaves # 添加 s105
s105

  1. 打包源代码,将 jar 包发送到 /soft/hadoop/share/hadoop/common/lib 下,并同步

xsync.sh /soft/hadoop/share/hadoop/common/lib/myhadoop-1.0-SNAPSHOT.jar

  2. 设置配置文件 core-site.xml ,添加

<property>
  <name>net.topology.node.switch.mapping.impl</name>
  <value>hadoop.hdfs.TestRack</value>
</property>

  3. 同步配置文件

xsync.sh core-site.xml

  4. 启动并查看 DataNode 启动日志

start-dfs.sh

  5. 测试方法,查看 s101 的 DataNode 启动日志,查看 rack1 和 rack2 分配情况

cat /soft/hadoop/logs/hadoop-centos-namenode-s101.log

3. 代码编写

package hadoop.hdfs;

import java.util.ArrayList;
import java.util.List; public class TestRack implements org.apache.hadoop.net.DNSToSwitchMapping { /**
* @param names 传入一个主机名或 ip 地址的列表
* @return 返回网络拓扑路径 /rack1/192.168.23.102
*/
public List<String> resolve(List<String> names) { List<String> list = new ArrayList<String>(); for (String name : names) {
// 如果参数是主机名
if (name.startsWith("s")) {
// 获取后缀
int suffix = Integer.parseInt(name.substring(1)); // 如果后缀是 101-103,则在 rack1 中
if (suffix < 104) {
String path = "/rack1/";
list.add(path);
} else {
String path = "/rack2/";
list.add(path);
} }
// 参数是 ip地址 192.168.23.101
else {
//获取后缀
int suffix = Integer.parseInt(name.split("\\.")[3]); // 如果后缀是 101-103,则在 rack1中
if (suffix < 104) {
String path = "/rack1/";
list.add(path);
} else {
String path = "/rack2/";
list.add(path);
}
}
}
return list; } public void reloadCachedMappings() { } public void reloadCachedMappings(List<String> names) { }
}

[HDFS_add_3] HDFS 机架感知的更多相关文章

  1. hdfs 机架感知和复制因子的设置

    dfs.replication 新更新的复制因子的参数对原来的文件不起作用. 譬如说,原来的复制因子是2,则原来文件上传的时候就只有两个副本. 现在把dfs.replication设置为3,重新启动h ...

  2. HDFS机架感知功能原理(rack awareness)

    转自:http://www.jianshu.com/p/372d25352d3a HDFS NameNode对文件块复制相关所有事物负责,它周期性接受来自于DataNode的HeartBeat和Blo ...

  3. hadoop&lpar;三&rpar;&colon;hdfs 机架感知

    client 向 Active NN 发送写请求时,NN为这些数据分配DN地址,HDFS文件块副本的放置对于系统整体的可靠性和性能有关键性影响.一个简单但非优化的副本放置策略是,把副本分别放在不同机架 ...

  4. hdfs 机架感知

    一.背景   分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群.机架内的机器之间的网络速度通常都会高 ...

  5. HDFS副本机制&amp&semi;负载均衡&amp&semi;机架感知&amp&semi;访问方式&amp&semi;健壮性&amp&semi;删除恢复机制&amp&semi;HDFS缺点

    副本机制 1.副本摆放策略 第一副本:放置在上传文件的DataNode上:如果是集群外提交,则随机挑选一台磁盘不太慢.CPU不太忙的节点上:第二副本:放置在于第一个副本不同的机架的节点上:第三副本:与 ...

  6. HDFS副本放置策略和机架感知

    副本放置策略 的副本放置策略的基本思想是: 第一block在复制和client哪里node于(假设client它不是群集的范围内,则这第一个node是随机选取的.当然系统会尝试不选择哪些太满或者太忙的 ...

  7. Hadoop&lpar;8&rpar;-HDFS的读写数据流程以及机架感知

    1. HDFS的写数据流程 1.客户端通过fs模块向NameNode申请文件上传,NameNode检查请求是否合法,如用户权限,目标文件是否已存在,父目录是否存在等等 2.NameNode返回是否可以 ...

  8. HDFS 02 - HDFS 的机制:副本机制、机架感知机制、负载均衡机制

    目录 1 - HDFS 的副本机制 2 - HDFS 的机架感知机制 3 - HDFS 的负载均衡机制 参考资料 版权声明 1 - HDFS 的副本机制 HDFS 中的文件,在物理上都是以分块(blo ...

  9. HDFS网络拓扑概念及机架感知(副本节点选择)

    网络拓扑概念 在本地网络中,两个节点被称为“彼此近邻”是什么意思?在海量数据处理中,其主要限制因素是节点之间数据的传输速率——带宽很稀缺.这里将两个节点间的带宽作为距离的衡量标准. 节点距离:两个节点 ...

随机推荐

  1. No&period;2 CAS之SPNEGO&plus;LDAP认证配置

    1.概述 本文先配置了SPNEGO认证,就是如果用户操作系统如果登陆了公司的Windows域,用户浏览器访问应用服务即可免登录. 然后如果不在域里的员工,用LDAP认证方式,输账号密码登陆. 参考文档 ...

  2. CYQ&period;Data 轻量数据层之路 优雅V1&period;4 现世 附API帮助文档&lpar;九&rpar;

    继上一版本V1.3版本发布到现在,时隔N天了:[V1.3版本开源见:CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源] N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力 ...

  3. node js 模块分类

    核心模块 require('fs'); 核心模块是被编译成二进制代码 文件模块 require('../fs.js'); 对于加载模块时既没指出./ ../ /.../时,加载模块的搜索路径.如果'/ ...

  4. Day One

    站立式会议 站立式会议内容总结 442 今天完成:学习Android 三种常用的adapter的使用方法,实现主页的可折叠列表 遇到问题:在实现自定义Adapter时,调用出现错误.已解决. 明天计划 ...

  5. 如何对Backbone&period;Collection进行过滤操作

    首先我想说的是这篇文章的题目起的很怪,因为我不知道起个什么名字比较好.渲染列表是我们应用中最常见的操作了吧,在运用Backbone的应用中,我们一般会把列表作为一个Collcetion,然后指定一个V ...

  6. 《A Tour of PostgreSQL Internals》学习笔记——系统表和数据类型

    上周末学习了<A Tour of PostgreSQL Internals>的第一部分(View 1),今天我们继续打开书本,继续View 2 部分. View 2 Postgresql的 ...

  7. freetds相关

    什么是FreeTDS  简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库! FreeTDS 是一个开源(如果你喜欢可以称为*)的程序库,是TDS(表列数据流 )协 ...

  8. ubuntu14&period;04&period;03 vsftpd

    apt-get install vsftpd /etc/vsftpd.conf配置Example listen=YES anonymous_enable=NO local_enable=YES wri ...

  9. &lbrack;Codeforces Round &num;247 &lpar;Div&period; 2&rpar;&rsqb; A&period; Black Square

    A. Black Square time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  10. OCP读书笔记&lpar;5&rpar; - 使用RMAN创建备份

    5.Creating Backups with RMAN 创建备份集 RMAN> backup as backupset format '/u01/app/oracle/backup/rmanb ...