0. 说明

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


1. HDFS 的副本存放策略

  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(三):hdfs 机架感知

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

  4. hdfs 机架感知

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

  5. HDFS机架感知

    Hadoop版本:2.9.2 什么是机架感知 通常大型 Hadoop 集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,NameNode 设法将数据块副本保存在不 ...

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

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

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

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

  8. Hadoop(8)-HDFS的读写数据流程以及机架感知

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

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

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

随机推荐

  1. Java访问文件夹中文件的递归遍历代码Demo

    上代码: import java.io.File; /* * 需求:对指定目录进行所有内容的列出(包含子目录中的内容) * 也可以理解为 深度遍历. */ public class FindAllFi ...

  2. Spring Boot SSL [https]配置例子

    前言 本文主要介绍Spring Boot HTTPS相关配置,基于自签证书实现: 通过本例子,同样可以了解创建SSL数字证书的过程: 本文概述 Spring boot HTTPS 配置 server. ...

  3. Linux_CentOS-服务器搭建 <六>

    修改MySQL编码: 二话不说先登录: mysql -u root -p 查看下神奇的mysql系统变量及其值: show variables like '%character%'; //记住分号哦, ...

  4. OS开发(2):自定义tabbar | 导航条 | 突显中间按钮

    tabbar是放在APP底部的控件,也叫navigationbar或导航条.常见的APP都使用tabbar来进行功能分类的管理,比如微信.QQ等等. 需求是这样的,需要一个特殊一点的tabbar,要求 ...

  5. Linux 定时任务 crontab 和 Systemd Timer

    一.说说八卦 ​ 说到定时任务,我们常用的就是 crond 服务,但是我们不知道还有另外一种定时方式,那就是 systemd,我们常用 systemd 来管理我们的服务,但是我们却不知道,我们还可以通 ...

  6. vue-02-安装-指令

    1, vue安装 1), 安装vue-cli npm install -g cnpm --registry=https://registry.npm.taobao.org 之后可以用 淘宝的npm镜像 ...

  7. 逆向知识之CS辅助/外挂专题.2.实现CS1.6无限夜视仪.无限闪光烟雾高爆弹.

    逆向知识之CS辅助/外挂专题.2.实现CS1.6无限夜视仪.无限闪光烟雾高爆弹. 关于人物子弹无限可以观看上一篇博客. 一丶无限夜视仪. 无限夜视仪找法. 1.CE附加游戏. 2.搜索0或者1. 3. ...

  8. Java关键字(一)——instanceof

    instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为: boolean result = obj instanceof Class 其中 obj 为一 ...

  9. 强烈推荐:240多个jQuery插件

    概述 jQuery 是继 prototype 之后又一个优秀的 Javascript 框架.其宗旨是—写更少的代码,做更多的事情.它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不 ...

  10. Jackson解析XML

    使用Jackson maven项目的pom.xml依赖 <dependency> <groupId>com.fasterxml.jackson.dataformat</g ...