0
点赞
收藏
分享

微信扫一扫

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
# 跨集群拷贝


举报

相关推荐

0 条评论