Hadoop之——Hadoop机架感知策略与自定义机架感知实现_冰 河的博客-CSDN博客_请从原理作用和效果三个方面简述机架感知策略


本站和网页 https://blog.csdn.net/l1028386804/article/details/81150863 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Hadoop之——Hadoop机架感知策略与自定义机架感知实现_冰 河的博客-CSDN博客_请从原理作用和效果三个方面简述机架感知策略
Hadoop之——Hadoop机架感知策略与自定义机架感知实现
冰 河
于 2018-07-22 00:22:26 发布
2471
收藏
分类专栏:
精通大数据系列
文章标签:
Hadoop
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/l1028386804/article/details/81150863
版权
精通大数据系列
专栏收录该内容
269 篇文章
71 订阅
订阅专栏
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/81150863
一、Hadoop机架感知策略
副本节点的选择(机架感知)
1、默认
第一个副本在client所处的节点上。如果客户端在集群外,随机选一个。第二个副本在和第一个副本不同机架的随机节点上。第三个副本和第二个副本相同机架,节点随机。
2、hadoop2.7.2策略
第一个副本在client所处的节点上。如果客户端在集群外,随机选一个。第二个副本和第一个副本在相同的机架。第三个副本位于不同机架。
二、自定义机架感知步骤
1、创建类实现org.apache.hadoop.net.DNSToSwitchMapping接口 2、在core-site.xml文件中追加如下配置
<property>
<name>net.topology.node.switch.mapping.impl</name>
<value>org.apache.hadoop.net.ScriptBasedMapping</value>
<description> The default implementation of the DNSToSwitchMapping. It
invokes a script specified in net.topology.script.file.name to resolve
node names. If the value for net.topology.script.file.name is not set, the
default value of DEFAULT_RACK is returned for all node names.
</description>
</property>
3、分发core-site.xml 4、编译程序,打成Jar,分发到所有节点的Hadoop的classpath(${HADOOP_HOME/share/hadoop/common/lib})下。
三、自定义机架感知具体实现
1、编写MyDNSToSwitchMapping类如下,
package com.lyz.hadoop.rackaware;
import org.apache.hadoop.net.DNSToSwitchMapping;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: liuyazhuang
* @Date: 2018/7/21 23:18
* @Description: 自定义机架感知策略
*/
public class MyDNSToSwitchMapping implements DNSToSwitchMapping {
/**
* 主机名前缀
*/
private static final String HOST_NAME_PREFIX = "liuyazhuang";
/**
* IP前缀
*/
private static final String IP_PREFIX = "192";
/**
* 传递的是客户端的IP列表,返回机架感知的路径列表
* @param names 客户端的主机名列表或IP列表(这里我们的主机为liuyazhuang121(192.168.209.121)—liuyazhuang125(192.168.209.125))
* @return 机架感知的路径列表
* liuyazhuang121(192.168.209.121)映射为/rack1/121
* liuyazhuang122(192.168.209.122)映射为/rack1/122
* liuyazhuang123(192.168.209.123)映射为/rack2/123
* liuyazhuang124(192.168.209.124)映射为/rack2/124
* liuyazhuang125(192.168.209.125)映射为/rack2/125
*/
public List<String> resolve(List<String> names) {
List<String> list = new ArrayList<String>();
if(names != null && names.size() > 0){
for(String name : names){
int ipSuffix = 0;
//判断是否是以主机名开头,主机名以liuyazhuang121、liuyazhuang122...命名
if(name.startsWith(HOST_NAME_PREFIX)){
//以主机名开头,则取得主机名最后的标识,比如主机名为liuyazhuang121,则取得121
String ip = name.substring(HOST_NAME_PREFIX.length());
ipSuffix = Integer.parseInt(ip);
}else if(name.startsWith(IP_PREFIX)){ //以IP地址命名
//取得IP的最后部分 比如192.168.209.121, 取得121
String ip = name.substring(name.lastIndexOf(".") + 1);
ipSuffix = Integer.parseInt(ip);
//ip最后部分小于123,则加入到第一个
if(ipSuffix < 123){
list.add("/rack1/" + ipSuffix);
}else{
list.add("/rack2/" + ipSuffix);
//将机架感知的路径列表写入到/home/liuyazhuang/dns.txt文件中
writeDNSMappingToFile(list);
return list;
/**
* 将机架感知的路径列表写入到/home/liuyazhuang/dns.txt文件中
* @param list 将机架感知的路径列表
*/
private void writeDNSMappingToFile(List<String> list) {
try {
//将机架感知的路径列表写入到/home/liuyazhuang/dns.txt文件中
FileOutputStream fos = new FileOutputStream("/home/liuyazhuang/dns.txt");
for(String name : list){
fos.write((name + "\r\n").getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
public void reloadCachedMappings() {
public void reloadCachedMappings(List<String> list) {
将MyDNSToSwitchMapping类打成jar包:MyDNSToSwitchMapping.jar 将MyDNSToSwitchMapping.jar包分发到所有节点的Hadoop的classpath(${HADOOP_HOME}/share/hadoop/common/lib)下。
2、配置文件core-site.xml中追加配置如下:
<property>
<name>net.topology.node.switch.mapping.impl</name>
<value>com.lyz.hadoop.rackaware.MyDNSToSwitchMapping</value>
</property>
将core-site.xml文件分发到所有Hadoop节点的${HADOOP_HOME}/etc/hadoop
冰 河
关注
关注
点赞
收藏
打赏
评论
Hadoop之——Hadoop机架感知策略与自定义机架感知实现
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/81150863一、Hadoop机架感知策略副本节点的选择(机架感知)1、默认第一个副本在client所处的节点上。如果客户端在集群外,随机选一个。第二个副本在和第一个副本不同机架的随机节点上。第三个副本和第二个副本相同机架,节点随机。2、hadoop2.7...
复制链接
扫一扫
专栏目录
08-Hadoop之HDFS的机架感知策略、读写流程和Hadoop-HA的2.X的组件以及脑裂和federation的介绍
学习永不止步
06-18
214
07-Hadoop之HDFS的机架感知策略、读写流程和Hadoop-HA的2.X的组件以及脑裂的介绍
Hadoop3.2.0 Hadoop 机架感知
最新发布
m0_67393157的博客
09-06
27
Hadoop组件具有机架感知功能。例如,通过将一个块的分片放在不同的机架上,HDFS块放置将使用机架感知来实现容错。这可以在群集中发生网络切换故障或分区时提供数据可用性。Hadoop主守护进程通过调用配置文件指定的外部脚本或java类来获取集群工作者的机架ID。使用java类或外部脚本进行拓扑,输出必须遵循java接口。接口需要保持一对一的对应关系,并且拓扑信息的格式为’/ myrack/myhost’,其中’/'是拓扑定界符,'myrack’是机架标识符,‘myhost’是个人主持人。
参与评论
您还未登录,请先
登录
后发表或查看评论
hadoop2.4.1配置时出现域名解析失败的解决方法
zdcjiushixhd的博客
10-12
3483
java.net.UnknownHostException: www: www: 域名解析暂时失败
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264)
at
linux存储策略,HDFS的副本存放策略
weixin_36169900的博客
05-13
327
HDFS作为Hadoop中的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为MapReduce提供高效的读写性能,那么HDFS是如何做到这些的呢?首先,HDFS将每一个文件的数据进行分块存储,同时每一个数据块又保存有多个副本,这些数据块副本分布在不同的机器节点上,这种数据分块存储+副本的策略是HDFS保证可靠性和性能的...
Hadoop机架感知策略
MedeMede
01-11
403
My Blog: Hadoop机架感知策略
官方文档: http://hadoop.apache.org/docs/ 找到对应的版本号/Rack Awareness一栏
网络拓扑概念
在本地网络中,两个节点被称为“彼此近邻”是什么意思?在海量数据处理中,其主要限制因素是节点之间数据的传输速率——带宽很稀缺。这里的想法是将两个节点间的带宽作为距离的衡量标准。
节点距离: 两个节点到达最近的...
hdfs 机架感知
weixin_49539546的博客
03-20
697
一、背景
分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群。机架内的机器之间的网络速度通常都会高于跨机架机器之间的网络速度,并且机架之间机器的网络通信通常受到上层交换机间网络带宽的限制。
Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为:
第一个block副本放在客户端所在的数据节点里(如果客户端不在集群范围内,则从整个集群中随机选择一个合适的数据节点来存放)..
HDFS机架感知
Dawn的博客
03-26
1877
原文链接:https://weixiaodyanlei.xyz/archives/hdfs-ji-jia-gan-zhi
Hadoop版本:2.9.2
什么是机架感知
通常大型 Hadoop 集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,NameNode 设法将数据块副本保存在不同的机架上以提高容错性。
HDFS 不能够自动判断集群中各个 DataNode 的网络状况情况,Hadoop 允许集群的管理员通过配置 net.topology.script.file.
Hadoop之——常见错误及解决办法汇总
冰河的专栏
05-03
6119
1,错误一:java.io.IOException: Incompatible
clusterIDs 时常出现在namenode重新格式化之后9 `7 k# I:
L2 |9 U* @6 d
2016-05-03 14:32:53,877 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode:
Initialization f
Hadoop3.2.0 Hadoop 机架感知
张伯毅的专栏
02-18
8947
Hadoop组件具有机架感知功能。例如,通过将一个块的分片放在不同的机架上,HDFS块放置将使用机架感知来实现容错。这可以在群集中发生网络切换故障或分区时提供数据可用性。
Hadoop主守护进程通过调用配置文件指定的外部脚本或java类来获取集群工作者的机架ID。使用java类或外部脚本进行拓扑,输出必须遵循java org.apache.hadoop.net.DNSToSwitchMappin...
HDFS_08_机架感知策略
huoborn
12-11
1387
HDFS_08_机架感知策略
持续更新大数据文章…
1. 机架感知策略
1.1 什么是机架感知策略?
机架感知策略就是:数据块以及数据块副本存放在哪个 DN 上才能让集群更加安全、数据更不容易损坏的一种策略。
举个例子:如果没有机架感知策略,一个文件的数据块以及该数据块的副本可能会存储在同一个DN上,这显然是不安全的。因为有了机架感知策略的存在,一个文件的数据块以及该数据块的副本就不会存储在同一个DN上,从而保证数据的安全性
1.2 机架感知如何工作?
第一个节点
集群内部(优先考虑和客户端相同节点作为
hadoop机架感知
李思苇
04-10
116
当硬件服务器数量多分布在不同机架上时,NameNode必须要知道所有DataNode(slaves)的所在的机架。否则的话会出现在不同rack间的不必要的网络流量,降低数据读写的性能。
可以通过以下两个配置实现机架感知:
1、启用机架感知:在namenode所在机器的hadoop-site.xml中做如下配置,指定机架感知脚本
topology.script.file.name...
Hadoop机架感知
微信搜:import_bigdata,大数据领域硬核原创作者
04-09
540
倘若世子殿下身死拒北城外会有一断手残脚青年 自中原而来拾春秋剑 入陆地神仙仰头望天而喊我温不胜在此恭请拓跋菩萨赴死!订正:在上篇文中NM类比为部门负责人一段中,段中的RM...
个人总结hadoop题库
m0_62254930的博客
05-06
1344
大数据的数据量现在已经达到了哪个级别?( ) PB
狭义的Hadoop是一个适合大数据分布式存储和分布式计算的平台,不包括下面哪个组件?(Hbase ) HBase HDFS MapReduce Yarn
XML文件属于非结构化数据。 F 半结构化数据
平台化构架不是大数据发展的主流趋势。 F
对于GFS架构,下面哪个说法是错误的?A
A. GFS Master节点管理所有的文件系统所有数据块。
B. GFS存储的文件都被分割成固定大小的块,每个块都会被复制到多个块服务器上(可靠.
Hadoop机架感知(rack-aware)配置
蚂蚁搬家
06-07
3193
副本的存放策略又是HDFS实现高可靠性和搞性能的关键,优化的副本存放策略也正是HDFS区分于其他大部分分布式文件系统的重要特性。HDFS采用一种称为机架感知(rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。大型HDFS实例一般运行在跨越多个机架的计算机组成的机群上,不同机架上的两台机器之间的通信需要经过交换机,这样会增加数据传输的成本。在大多数情况下,同一机架内的两台机器...
【HDFS】hadoop的机架感知策略是啥?
tracymkgld的专栏
01-21
3069
123
HDFS的机架感知策略
weixin_43200014的博客
12-24
1289
  机架感知是一种计算不同计算节点(TT)的距离的技术,用以在任务调度过程中尽量减少网络带宽资源的消耗,这里用尽量,想表达的是当一个TT申请不到本地化任务时,JT会尽量调度一个机架的任务给他,因为不同机架的网络带宽资源比同一个机架的网络带宽资源更可贵。当然,机架感知不仅仅用在MR中,同样还用在HDFS数据块备份过程中(第一个replica选择本节点【如果上传是DataNode】或者随机的一个DN(...
Hadoop--Hadoop的机架感知
GP的空间
08-26
2288
Hadoop的机架感知
Hadoop有一个“机架感知”特性。管理员可以手工定义每个slave数据节点的机架号。为什么要做这么麻烦的事情?有两个原因:防止数据丢失和提高网络性能。
为了防止数据丢失,Hadoop会将每个数据块复制到多个机器上。想象一下,如果某个数据块的所有拷贝都在同一个机架的不同机器上,而这个机架刚好发生故障了(交换机坏了,或者电源掉了),这得有多悲剧?为了
机架感知
dengbenji的专栏
09-22
302
1.背景
Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份。这样如果本地数据损坏,节点可以从同一机架内的相邻节点拿到数据,速度肯定比从跨机架节点上拿数据要快;同时,如果整个机架的网络出现异常,也能保证在其它机架的节点上找到数据。为了降低整体的带宽消耗和读取延时,HDFS会尽量让...
hdoop机架感知策略
sujins5288的博客
01-14
922
在大型的hadoop集群中数据中心会分布在多个机架上,同样小的集群一般也会占据俩到三个机架。这样对于集群来说,在单个机架发生故障时,能够提供额外的冗余性。hadoop本身实现了机架感知在(rack-aware),同时能够根据服务器所属的机架进行一定的优化。其中一个示例是hadoop使用的分块副本分布策略。它会尝试在不同的机架上存储至少一个副本,以此来增加数据弹性。在请求分布块时(例如在...
Hadoop 机架感知理解 和 配置实现
FresherHe的博客
02-23
449
什么是机架感知?
机架感知简单的讲 就是告诉集群各个从节点所在的机架。方便集群更有效率的存储数据、利用资源。
默认的副本存储策略:
首选在本地机架的一个node存放副本,另一个副本在本地机架的另一个不同节点。
最后一个副本在不同机架的不同节点上。
怎么告诉集群?
Hadoop 并没有那么智能,知道各个从节点所在的机架。
主要管理员手动的去配置。如果不配置,它会生成一个 defa...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:Age of Ai
设计师:meimeiellie
返回首页
冰 河
CSDN认证博客专家
CSDN认证企业博客
码龄11年
Java领域优质创作者
1777
原创
342
周排名
总排名
1199万+
访问
等级
12万+
积分
18万+
粉丝
3万+
获赞
9229
评论
11万+
收藏
私信
关注
热门文章
奉劝那些刚参加工作的学弟学妹们:要想进大厂,这些核心技能是你必须要掌握的!完整学习路线!!(建议收藏)
341991
毕业五年,从月薪3000到年薪百万,我掌握了哪些核心技能?(建议收藏)
339569
解决 java “错误:编码GBK 的不可映射字符”
212184
全网最全Linux命令总结!!(史上最全,建议收藏)
150529
Gem load error while running wpscan in kali linux
126226
分类专栏
《SpringCloud Alibaba实战》
付费
4篇
MySQL成神之路
付费
9篇
精通高并发系列
128篇
精通RocketMQ系列
1篇
面试必问系列
7篇
字节码编程
3篇
手撸源码系列
5篇
架构师进阶系列
8篇
精通Zookeeper系列
2篇
精通高可用系列
30篇
精通MySQL系列
192篇
精通微服务系列
9篇
精通消息中间件系列
21篇
精通性能优化系列
12篇
精通分布式事务系列
15篇
精通运维系列
178篇
精通监控系列
2篇
精通Netty系列
2篇
精通算法系列
2篇
精通大数据系列
269篇
精通中间件系列
10篇
精通分布式数据库系列
70篇
精通互联网工程系列
44篇
精通搜索引擎系列
30篇
精通分布式系列
33篇
精通云原生系列
23篇
精通分布式缓存系列
51篇
精通分布式存储系列
51篇
精通架构设计系列
5篇
编程工具系列
3篇
程序员进阶系列
24篇
精通Spring注解系列
40篇
程序人生
83篇
一起进大厂系列
29篇
精通Oracle系列
6篇
精通集合框架系列
1篇
精通Java系列
268篇
精通权限设计系列
3篇
精通Python系列
76篇
精通J2EE系列
100篇
精通设计模式系列
25篇
精通移动端系列
94篇
精通Nginx系列
65篇
精通JVM系列
28篇
精通Web前端系列
25篇
精通C/C++系列
5篇
精通PHP系列
30篇
精通VMWare系列
11篇
精通网络系列
5篇
精通Spring全家桶系列
108篇
精通SQL Server系列
5篇
精通Scala系列
9篇
精通Java8系列
22篇
精通MyBatis系列
15篇
精通渗透系列
144篇
最新评论
奉劝那些刚参加工作的学弟学妹们:要想进大厂,这些核心技能是你必须要掌握的!完整学习路线!!(建议收藏)
月亮掉进海里了:
这是一个总体学习框架和方向,有阶段的掌握上面不同难度的内容,大学就把基础知识和常用框架掌握之后,再有能力学习更多的即可。
Kafka又出问题了!
熊猫同学~:
如果一个消息消费者的逻辑是生产另一个消息,可以把它当成一个有GroupId的消息生产者
毕业五年,从月薪3000到年薪百万,我掌握了哪些核心技能?(建议收藏)
大奖尸:
会matlab吗
奉劝那些刚参加工作的学弟学妹们:要想进大厂,这些核心技能是你必须要掌握的!完整学习路线!!(建议收藏)
m0_68098686:
半年吧,先从最基础的学
SA实战 ·《SpringCloud Alibaba实战》第04章-项目说明、流程设计、技术选型与模块划分
不吃西红柿丶:
[code=ruby]代码千万条,宠你第一条 :点赞+评论![/code]
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
SA实战 ·《SpringCloud Alibaba实战》第04章-项目说明、流程设计、技术选型与模块划分
SA实战 ·《SpringCloud Alibaba实战》第03章-微服务介绍
原来大厂都是这样监控Tomcat性能的,废话不多说,直接开干
2022
12月
2篇
11月
6篇
10月
4篇
09月
3篇
08月
8篇
07月
7篇
06月
9篇
05月
9篇
04月
7篇
03月
7篇
02月
6篇
01月
6篇
2021年144篇
2020年293篇
2019年296篇
2018年371篇
2017年186篇
2016年166篇
2015年339篇
2014年46篇
2013年15篇
目录
目录
分类专栏
《SpringCloud Alibaba实战》
付费
4篇
MySQL成神之路
付费
9篇
精通高并发系列
128篇
精通RocketMQ系列
1篇
面试必问系列
7篇
字节码编程
3篇
手撸源码系列
5篇
架构师进阶系列
8篇
精通Zookeeper系列
2篇
精通高可用系列
30篇
精通MySQL系列
192篇
精通微服务系列
9篇
精通消息中间件系列
21篇
精通性能优化系列
12篇
精通分布式事务系列
15篇
精通运维系列
178篇
精通监控系列
2篇
精通Netty系列
2篇
精通算法系列
2篇
精通大数据系列
269篇
精通中间件系列
10篇
精通分布式数据库系列
70篇
精通互联网工程系列
44篇
精通搜索引擎系列
30篇
精通分布式系列
33篇
精通云原生系列
23篇
精通分布式缓存系列
51篇
精通分布式存储系列
51篇
精通架构设计系列
5篇
编程工具系列
3篇
程序员进阶系列
24篇
精通Spring注解系列
40篇
程序人生
83篇
一起进大厂系列
29篇
精通Oracle系列
6篇
精通集合框架系列
1篇
精通Java系列
268篇
精通权限设计系列
3篇
精通Python系列
76篇
精通J2EE系列
100篇
精通设计模式系列
25篇
精通移动端系列
94篇
精通Nginx系列
65篇
精通JVM系列
28篇
精通Web前端系列
25篇
精通C/C++系列
5篇
精通PHP系列
30篇
精通VMWare系列
11篇
精通网络系列
5篇
精通Spring全家桶系列
108篇
精通SQL Server系列
5篇
精通Scala系列
9篇
精通Java8系列
22篇
精通MyBatis系列
15篇
精通渗透系列
144篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
冰 河
可以吃鸡腿么?
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值