HDFS的机架感知(rack aware)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS的机架感知(rack aware)相关的知识,希望对你有一定的参考价值。
- 机架感知
保证在交换机故障或者集群内部时间问题出现时,数据仍然可用。hadoop的rack aware是逻辑上的概念,与真实的机架只存在概念上的对应关系。
- 编写一个脚本或者实现接口org.apache.hadoop.net.DNSToSwitchMapping
节点机架表示形如:“/a/b/c”。“/a/b/a”与“/a/b/c”的路径前缀相同所以节点a和节点c在同一个机架上。默认机架为“/default-rack”(topology.script.file.name或topology.node.switch.mapping.impl均未设置)。
- 自定义机架感知类
- hadoop的类路径:
hdfs classpath
或者
hadoop classpath
- 机架感知实现类
public class MyDNSToSwitchMapping implements DNSToSwitchMapping{
//解析主机名或IP地址,返回网络路径/a/b
public List<String> resolve(List<String> names)
List<String> paths=new ArrayList<>();
if(names != null && !names.isEmpty())
System.out.println(names.size() + " : " + names.get(0));
for(String hostname : names)
Integer no=Integer.parseInt(hostname.substring(1));
String rackPath="";
if(no<=400)
rackPath="/rack1/" + hostname;
else
rackPath="/rack2/" + hostname;
paths.add(rackPath);
return paths;
public void reloadCacheMappings()
// 无
public void reloadCacheMappings(List<String> names)
// 无
- 将打成的jar包分发到所有节点的以下目录中
$HADOOP_HOME/share/**
一般可以放在这
$HADOOP_HOME/share/hadoop/common/lib/
可以在eclipse中右击项目通过Export导出jar包(默认配置即可)。
- 配置自定义机架感知类——指定类名topology.node.switch.mapping.impl
配置core-site.xml
<property>
<name>net.topology.node.switch.mapping.impl</name>
<value>com.bee.MyDNSToSwitchMapping</value>
</property>
- 分发core-site.xml重启集群
- 大吞吐量集群拷贝
通过hadoop的mapreduce实现的并行,可以递归复制文件夹。
# 本集群拷贝
hadoop distcp /usr/bee/data /usr/bee/foo
# 跨集群拷贝
以上是关于HDFS的机架感知(rack aware)的主要内容,如果未能解决你的问题,请参考以下文章