博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HDFS_add_3] HDFS 机架感知
阅读量:6153 次
发布时间:2019-06-21

本文共 2397 字,大约阅读时间需要 7 分钟。


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

# 修改 slavesvi slaves# 添加 s105s105

 

  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 ,添加

  
net.topology.node.switch.mapping.impl
  
hadoop.hdfs.TestRack

 

  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
resolve(List
names) { List
list = new ArrayList
(); 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
names) { }}

 

 

 


 

转载于:https://www.cnblogs.com/share23/p/9903409.html

你可能感兴趣的文章
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
linux后台运行程序
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>