如何配置Hadoop的机架感知功能?CentOS Linux 8下的机架感知功能配置

查看当前机架感知的参数

hdfs dfsadmin -printTopology

显示内容大致如下:

Rack: /default-rack
   192.168.1.221:9866 (hadoop221)
   192.168.1.222:9866 (hadoop222)
   192.168.1.223:9866 (hadoop223)
   192.168.1.224:9866 (hadoop224)
   192.168.1.225:9866 (hadoop225)
   192.168.1.226:9866 (hadoop226)
   192.168.1.227:9866 (hadoop227)
   192.168.1.228:9866 (hadoop228)
   192.168.1.229:9866 (hadoop229)

修改配置文件core-site.xml

添加“core-site.xml”配置文件中的“topology.script.file.name”参数

vi core-site.xml

在与之间添加如下内容

<property>
     <name>topology.script.file.name</name>
     <value>/home/hadoop/hadoop/etc/hadoop/rackaware/topology.sh</value> 
     <description>处理机架感知参数的Shell</description>
 </property>

编辑机架感知shell

极佳感知的原理是:客户提出需求->NameNode问topology.sh->topology.sh给出结果

mkdir -p /home/hadoop/hadoop/etc/hadoop/rackaware
vi /home/hadoop/hadoop/etc/hadoop/rackaware/topology.sh

内容如下:

#!/bin/bash  
HADOOP_CONF=/home/hadoop/hadoop/etc/hadoop/rackaware  
while [ $# -gt 0 ] ; do    #//$#代表执行命令时输入的参数个数
  nodeArg=$1  
  exec<${HADOOP_CONF}/topology.data     #//读入文件
  result=""  
  while read line ; do          #//循环遍历文件内容
    ar=( $line )  
    if [ "${ar[0]}" = "$nodeArg" ]||[ "${ar[1]}" = "$nodeArg" ]; then  
      result="${ar[2]}"  
    fi  
  done  
  shift  
  if [ -z "$result" ] ; then  
    echo -n "/default-rack"  
  else  
    echo -n "$result"  
  fi  
done

机架感知数据提供

chmod 755 topology.sh 
vi topology.data

内容如下:

192.168.1.223 hadoop223 /D1/R1
192.168.1.224 hadoop224 /D1/R1
192.168.1.225 hadoop225 /D1/R2
192.168.1.226 hadoop226 /D1/R2
192.168.1.227 hadoop227 /D2/R1
192.168.1.228 hadoop228 /D2/R1

/D1/R1的意思是:D1区域,R1机架

在主节点重启NameNode,NameNode会读取相关的数据。

hdfs --daemon stop namenode
hdfs --daemon start namenode

番外

如何在集群中不重启namenode来动态的添加一个DataNode节点?
在启用了机架感知的集群中可以这样操作:
现在想增加一个物理位置在R2的数据节点192.168.1.229到集群中,不重启NameNode。
首先,修改所有节点(包括hadoop229)的topology.data的配置,加入:

192.168.1.229 hadoop229 /D1/R2

保存。然后在hadoop229上操作,

hdfs --daemons start datanode

启动数据节点hadoop229,
任意节点执行

hdfs dfsadmin -printTopology

看到的结果:

Rack: /D1/R1
   192.168.1.223:9866 (hadoop223)
   192.168.1.224:9866 (hadoop224)

Rack: /D1/R2
   192.168.1.225:9866 (hadoop225)
   192.168.1.226:9866 (hadoop226)
   192.168.1.229:9866 (hadoop229)

Rack: /D2/R1
   192.168.1.227:9866 (hadoop227)
   192.168.1.228:9866 (hadoop228)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值