HDFS的机架感知(rack aware)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS的机架感知(rack aware)相关的知识,希望对你有一定的参考价值。


  1. 机架感知

保证在交换机故障或者集群内部时间问题出现时,数据仍然可用。hadoop的rack aware是逻辑上的概念,与真实的机架只存在概念上的对应关系。

  1. 编写一个脚本或者实现接口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均未设置)。

  1. 自定义机架感知类
  • 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包(默认配置即可)。

  1. 配置自定义机架感知类——指定类名topology.node.switch.mapping.impl

配置core-site.xml

<property>
<name>net.topology.node.switch.mapping.impl</name>
<value>com.bee.MyDNSToSwitchMapping</value>
</property>
  1. 分发core-site.xml重启集群
  2. 大吞吐量集群拷贝
    通过hadoop的mapreduce实现的并行,可以递归复制文件夹。
# 本集群拷贝
hadoop distcp /usr/bee/data /usr/bee/foo
# 跨集群拷贝


以上是关于HDFS的机架感知(rack aware)的主要内容,如果未能解决你的问题,请参考以下文章

HDFS机架感知

[HDFS_add_3] HDFS 机架感知

HDFS学习:HDFS机架感知与副本放置策略

hdfs 机架感知

hadoop:hdfs 机架感知

[Hadoop]HDFS机架感知策略